У меня есть программа, которая отображает числа в виде System.Windows.Forms.DataGridView
. Я форматирую эти числа в соответствии с региональными настройками пользователя, что вызывает проблемы при попытке скопировать и вставить указанные числа в Excel. Например, 123 456 789,00 — правильный локализованный формат для финского языка, но Excel интерпретирует его как строку, а не как число. Есть ли способ заставить Excel понимать разделители тысяч в числах или использовать другой числовой формат для буфера обмена?
Другой формат чисел для буфера обмена?
Ответы (1)
Вы можете создать свой собственный класс, производный от DGV, и переопределить метод GetClipboardContent(). Это позволяет форматировать строку так, чтобы она была совместима с Excel. Что-то вроде этого:
using System;
using System.Windows.Forms;
class MyDGV : DataGridView {
public override DataObject GetClipboardContent() {
if (this.SelectedCells.Count == 1 && this.SelectedCells[0].ColumnIndex == 1) {
string value = string.Format("{0:N2}", this.SelectedCells[0].Value);
return new DataObject(DataFormats.Text, value);
}
return base.GetClipboardContent();
}
}
Непроверенный.
person
Hans Passant
schedule
19.06.2010