【发布时间】:2017-10-03 06:02:24
【问题描述】:
我有一个在 Microsoft Framework 3.5 上创建的 Winform 项目。 用户可能已经安装了 Windows 7 或 Windows XP,以及 Office 2007 或更高版本。
我正在处理获取剪贴板数据并将其放入 C# DataTable 的过程。 我已经创建了一种从剪贴板获取原始数据并将其上传到 DataTable 的方法。
但在某些情况下,Excel 数据显示一个值,但内部有另一个值:
我正在研究一种从 Excel 中获取原始数据的方法:
string XmlFmt = "XML Spreadsheet";
var clipboard = Clipboard.GetDataObject();
if (clipboard.GetDataPresent(XmlFmt))
{
var clipData = clipboard.GetData(XmlFmt);
StreamReader streamReader = new StreamReader((MemoryStream)clipData);
streamReader.BaseStream.SetLength(streamReader.BaseStream.Length - 1);
string xmlText = streamReader.ReadToEnd();
var stream = new StringReader(xmlText);
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.LoadXml(xmlText);
DataSet dsExcelData = new DataSet();
dsExcelData.ReadXml(new XmlNodeReader(xmlDocument));
}
但是,此方法检索我一个包含多个表的 DataSet,其中配置了 Excel 数据的每个部分:
基本上,我想将这些结构转换为仅包含原始数据的简单 DataTable。 有人可以帮助我提示如何实现这一目标? ...我不想在这个实现中使用第三方库。
【问题讨论】:
-
dsExcelData.Tables[0] 将为您提供第一个基础数据表
标签: c# excel datatable clipboard xmldocument