在C#中调用Excel,主要是通过.NET框架中的COM互操作来实现的,这使得C#可以与微软的Office应用程序,如Excel进行交互。以下是一些关键知识点:
1. **Microsoft.Office.Interop.Excel**: 这是.NET Framework提供的一个库,允许C#程序与Excel交互。在代码中创建`Application`对象,即表示一个新的Excel实例,如`new Microsoft.Office.Interop.Excel.Application()`。
2. **打开Excel文件**: 可以通过`Workbooks.Add(true)`创建一个新的Excel工作簿,或者通过`Workbooks.Add(路径和文件名)`打开已存在的Excel文件。`Visible = true`使Excel应用程序对用户可见。
3. **读取Excel数据**: 对于Excel 2003,可以使用`Microsoft.Jet.OLEDB.4.0`提供者连接到数据源,如`"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath + ";Extended Properties=\"Excel 8.0;HDR=YES;IMEX=1\""`。对于Excel 2007及以后版本,需要使用`Microsoft.ACE.OLEDB.12.0`,如`"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filepath + ";Extended Properties=\"Excel 12.0;HDR=YES\""`。
4. **禁用弹窗提示**: 为了避免在操作Excel时出现保存或覆盖的询问对话框,可以设置`app.DisplayAlerts = false`和`app.AlertBeforeOverwriting = false`。
5. **复制和保存工作簿**: `wb.SaveCopyAs(@"D:\111.xlsx")`用于保存或复制当前工作簿到指定路径。
6. **创建新的Excel并保存**: 创建新的工作簿,设置单元格值,然后保存到指定路径,如`app.Workbooks.Add(true); app.Cells[1, 1] = "test"; wb.SaveCopyAs(@"C:\111.xlsx");`。
7. **读取Excel到DataTable**: 可以将Excel工作表的数据读取到DataTable,如`DataTable myT = ExcelToDataTable("D:/文件/新武昌站点资料.xls", "sheet1")`,然后访问其中的数据。
8. **版本检测**: 使用Windows注册表来检测Office的安装位置和版本。例如,通过`Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Office\8.0\Common\InstallRoot", false)`可以打开Office 97的注册表项,并通过`regSubKey.ValueName`获取特定的键值。
以上是C#调用Excel的基本操作,包括打开、读取、写入、保存以及检查Office版本等。在实际应用中,可能还需要处理异常、错误,以及更复杂的操作,如操作单元格、公式、图表、样式等。注意,这种交互方式依赖于用户的机器上安装了相应的Office版本,且可能需要管理员权限运行。