我在Excel电子表格中有这样的数值数据:
- 0.69491375
- 0.31220394
这些单元格被格式化为百分比,并设置为显示两位小数。所以它们在Excel中显示为:
- 69.49%
- 31.22%
我有一个用C#编写的程序,可以从剪贴板解析出这些数据。
var dataObj = Clipboard.GetDataObject();
var format = DataFormats.CommaSeparatedValue;
if (dataObj != null && dataObj.GetDataPresent(format))
{
var csvData = dataObj.GetData(format);
// do something
}
问题在于
csvData
包含来自Excel的显示值,即“69.49%”和“31.22%”。它不包含额外小数位的完整精度。我尝试使用各种不同的
DataFormats
值,但数据始终只包含来自Excel的显示值,例如:-
DataFormats.Dif
- DataFormats.Rtf
- DataFormats.UnicodeText
- 等等作为测试,我安装了LibreOffice Calc,并将相同的单元格从Excel复制/粘贴到Calc中。 Calc保留了原始数据的完整精度。
因此,很明显Excel将此数据放在其他程序可以访问的位置。我如何从我的C#应用程序中访问它?
编辑-下一步。
我已下载了LibreOffice Calc源代码,并将检查一下是否可以找到他们如何从Excel获取复制数据的完整上下文。
我还对从剪贴板返回的数据对象进行了
GetFormats()
调用,并得到了24个不同数据格式的列表,其中一些不在DataFormats
枚举中。这些格式包括像Biff12
,Biff8
,Biff5
,Format129
等我不熟悉的格式,因此如果我发现任何发现,我会进行调查并回复...