在C#用户控件中embeddedExcel表格

我需要在C#语言的用户控件中embeddedExcel表单部分(而不是整个表单)。 我想操纵数据并将其保存在一个集合中。

什么是最好的方式去呢?

我会打开电子表格与Excel COM库。 如果添加对Microsoft Excel对象库的引用,则可以进入Com接口。

添加这些使用语句:

using Microsoft.Office.Interop; using Microsoft.Office.Interop.Excel; 

然后,您可以通过执行如下操作来从电子表格中读取数据:

  private void GetData(string fileName, string tabName) { Workbook theWorkbook; Application ExcelObj = null; ExcelObj = new Application(); theWorkbook = ExcelObj.Workbooks.Open(fileName, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); Sheets sheets = theWorkbook.Worksheets; Worksheet worksheet = (Worksheet)sheets[tabName]; Range range = worksheet.get_Range("A1:A1", Type.Missing); string data = range.Text as string; // // TODO : store the data // theWorkbook.Close(false, fileName, null); } 

这段代码将把A1单元格的内容读入一个string。

使用Excel COM接口的怪癖之一是,即使只需要一个单元,也必须访问Range中的数据。 您可以将范围设置为一组单元格,然后您可以遍历它返回的集合以获取每个单元格的内容。

你也想添加一些错误检查/处理文件名和标签名称。

还有一种方法可以使用ODBC从Excel中读取,但是电子表格必须以某种方式进行格式化。 在第1行中必须有一个标题数据。我发现使用COM接口更容易。

一旦你获得了你需要的数据,你可以把它放到一个types化的数据集中。 然后,如果您在WPF中使用WinForms或ListBox,则可以将该数据集绑定到DataGridView。 如果您只想将数据保存为XML格式,则可以使用DataSet的WriteXml函数将数据存储到文件中。

为什么不使用DataGridView填充要更改的数据?

完成任何更改后,将DataGridView中的数据保存在您从中拉出的Excel文件的一部分上。

您也可能会发现这些 链接 有用 !

看看Microsoft.Office.Interop.Excel库。 那里有很多excel控件来处理excel文件和操作。