我正在尝试将excel电子表格中的一些值复制到C#WPF应用中。我注意到当我在Excel中选择单元格并将它们复制到剪贴板中然后将其粘贴到WPF应用程序时,我得到的显示值不是实际值,即考虑值为2.232323的单元格。如果在“格式化单元格”窗口中的Excel中,我只设置了一个小数位,那么excel将显示2.2。如果现在我将它复制到WPF然后我得到2.2而不是2.232323。我注意到Notepad做了同样的事情。有没有办法获得真正的价值?我用来复制单元格的代码:
DataObject o = (DataObject)Clipboard.GetDataObject();
string[] pastedRows = Regex.Split(o.GetData(DataFormats.Text).ToString().TrimEnd(Environment.NewLine.ToCharArray()), Environment.NewLine);
答案 0 :(得分:1)
试试这个:
IDataObject dataObject = Clipboard.GetDataObject();
System.IO.MemoryStream stream = dataObject.GetData("XML Spreadsheet") as System.IO.MemoryStream;
if(stream != null)
{
stream.SetLength(stream.Length - 1);
XElement xml = XElement.Load(stream);
XNamespace ns = "urn:schemas-microsoft-com:office:spreadsheet";
double actualValue;
var data = xml.Descendants(ns + "Data").Where(x => (string)x.Attribute(ns + "Type") == "Number");
if(data != null && data.Any())
{
actualValue = (double)data.First();
MessageBox.Show(actualValue.ToString());
}
stream.Dispose();
}