- A+
所属分类:.NET技术
1.OleDb方式:
- 使用.NET Framework内置的System.Data.OleDb命名空间中的类,可以将Excel文件当作数据库来读取数据。这种方式适用于较旧版本的Excel文件(.xls格式,即Excel 2003及更早版本)。
using System.Data.OleDb; // 创建连接字符串 string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=path_to_your_file.xls;Extended Properties='Excel 8.0;HDR=YES;'"; // 创建OleDbConnection对象 using (var connection = new OleDbConnection(connectionString)) { connection.Open(); // 创建SQL查询语句 string query = "SELECT * FROM [Sheet1$]"; // Sheet1是你要读取的工作表名称 // 创建一个OleDbCommand对象并执行查询 using (var command = new OleDbCommand(query, connection)) { using (var adapter = new OleDbDataAdapter(command)) { DataTable dataTable = new DataTable(); adapter.Fill(dataTable); // 现在dataTable包含了从Excel文件中读取的数据 } } }
2.COM组件方式:
- 利用Office Interop库(如Microsoft.Office.Interop.Excel),可以直接调用Excel应用程序的对象模型进行操作。这种方法允许对Excel进行更丰富的控制,包括读写数据、样式设置等,但需要在运行环境安装有完整版的Microsoft Office。
using Microsoft.Office.Interop.Excel; // 创建Excel应用实例 Application excelApp = new Application(); Workbook workbook = excelApp.Workbooks.Open(@"path_to_your_file.xlsx"); Worksheet worksheet = workbook.Sheets["Sheet1"]; // 访问单元格数据 Range range = worksheet.Cells[1, 1]; // 获取第一行第一列单元格 string value = range.Value2.ToString(); // 写入数据 range.Value2 = "New Value"; // 关闭工作簿和应用 workbook.Close(SaveChanges: true); excelApp.Quit();
3.第三方库NPOI:
- NPOI是一个开源的.NET库,它不依赖于Office环境,可以读写不同版本的Excel文件,包括.xls和.xlsx格式。使用NPOI可以在服务器环境下无Office软件的情况下处理Excel文件。
using NPOI.HSSF.UserModel; using NPOI.XSSF.UserModel; // 根据文件格式创建Workbook对象 HSSFWorkbook hssfWorkbook = new HSSFWorkbook(); // .xls格式 XSSFWorkbook xssfWorkbook = new XSSFWorkbook(); // .xlsx格式 // 创建一个新的工作表 ISheet sheet = hssfWorkbook.CreateSheet("Sheet1"); // 在工作表中添加数据 IRow row = sheet.CreateRow(0); ICell cell = row.CreateCell(0); cell.SetCellValue("Hello, World!"); // 写入到文件 FileStream fileStream = new FileStream("output.xls", FileMode.Create); if (fileExtension == ".xls") hssfWorkbook.Write(fileStream); else if (fileExtension == ".xlsx") xssfWorkbook.Write(fileStream); // 清理资源 fileStream.Close(); hssfWorkbook.Dispose();
总结:
- 每种方法都有其适用场景和限制,OleDb适合简单读取老版Excel文件数据,COM组件功能全面但要求环境支持,而NPOI则提供了轻量级且无需安装Office的解决方案。