不同的剪贴板数字格式?

我有一个在System.Windows.Forms.DataGridView中显示数字的程序。 我正在格式化这些数字根据用户的区域设置,这会导致问题,当我尝试复制并粘贴到Excel中的数字。 例如,123 456 789,00是芬兰语中适当的本地化格式,但是Excel将其解释为string,而不是数字。 有没有办法让Excel了解数字的千位分隔符或使用不同的数字格式的剪贴板?

您可以创build自己的DGV派生类并重写GetClipboardContent()方法。 它允许您以与Excel兼容的方式格式化string。 像这样的东西:

 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(); } } 

未经testing。