我将使用 Excel COM 库打开电子表格。如果添加对 Microsoft Excel 对象库的引用,就可以进入 Com 界面。
添加这些 using 语句:
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 单元格的内容读入字符串。
使用 Excel COM 接口的一个怪癖是您必须访问范围内的数据,即使您只需要一个单元格。您可以将范围设置为一组单元格,然后您可以遍历它返回的集合以获取每个单元格的内容。
您还希望在文件名和选项卡名称上添加一些错误检查/处理。
还有一种方法可以使用 ODBC 从 Excel 中读取,但电子表格必须以某种方式格式化。第1行必须有一个标题数据。我发现使用COM接口更容易。
一旦你获得了你需要的数据,你就可以把它放到一个类型化的数据集中。然后,如果您在 WPF 中使用 WinForms 或 ListBox,则可以将该数据集绑定到 DataGridView。如果您只想将数据保存为 XML 格式,您可以使用 DataSet WriteXml 函数将数据存储到文件中。