C#操作Excel文件三种方式详解

打印 上一主题 下一主题

主题 841|帖子 841|积分 2523

1.OleDb方式:

  • 使用.NET Framework内置的System.Data.OleDb命名空间中的类,可以将Excel文件当作数据库来读取数据。这种方式适用于较旧版本的Excel文件(.xls格式,即Excel 2003及更早版本)。
  1. using System.Data.OleDb;
  2. // 创建连接字符串
  3. string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=path_to_your_file.xls;Extended Properties='Excel 8.0;HDR=YES;'";
  4. // 创建OleDbConnection对象
  5. using (var connection = new OleDbConnection(connectionString))
  6. {
  7.     connection.Open();
  8.    
  9.     // 创建SQL查询语句
  10.     string query = "SELECT * FROM [Sheet1$]"; // Sheet1是你要读取的工作表名称
  11.     // 创建一个OleDbCommand对象并执行查询
  12.     using (var command = new OleDbCommand(query, connection))
  13.     {
  14.         using (var adapter = new OleDbDataAdapter(command))
  15.         {
  16.             DataTable dataTable = new DataTable();
  17.             adapter.Fill(dataTable);
  18.             // 现在dataTable包含了从Excel文件中读取的数据
  19.         }
  20.     }
  21. }
复制代码
2.COM组件方式:

  • 利用Office Interop库(如Microsoft.Office.Interop.Excel),可以直接调用Excel应用程序的对象模型进行操作。这种方法答应对Excel进行更丰富的控制,包括读写数据、样式设置等,但需要在运行环境安装有完整版的Microsoft Office。
  1. using Microsoft.Office.Interop.Excel;
  2. // 创建Excel应用实例
  3. Application excelApp = new Application();
  4. Workbook workbook = excelApp.Workbooks.Open(@"path_to_your_file.xlsx");
  5. Worksheet worksheet = workbook.Sheets["Sheet1"];
  6. // 访问单元格数据
  7. Range range = worksheet.Cells[1, 1]; // 获取第一行第一列单元格
  8. string value = range.Value2.ToString();
  9. // 写入数据
  10. range.Value2 = "New Value";
  11. // 关闭工作簿和应用
  12. workbook.Close(SaveChanges: true);
  13. excelApp.Quit();
复制代码
3.第三方库NPOI:

  • NPOI是一个开源的.NET库,它不依赖于Office环境,可以读写不同版本的Excel文件,包括.xls和.xlsx格式。使用NPOI可以在服务器环境下无Office软件的环境下处理Excel文件。
  1. using NPOI.HSSF.UserModel;
  2. using NPOI.XSSF.UserModel;
  3. // 根据文件格式创建Workbook对象
  4. HSSFWorkbook hssfWorkbook = new HSSFWorkbook(); // .xls格式
  5. XSSFWorkbook xssfWorkbook = new XSSFWorkbook(); // .xlsx格式
  6. // 创建一个新的工作表
  7. ISheet sheet = hssfWorkbook.CreateSheet("Sheet1");
  8. // 在工作表中添加数据
  9. IRow row = sheet.CreateRow(0);
  10. ICell cell = row.CreateCell(0);
  11. cell.SetCellValue("Hello, World!");
  12. // 写入到文件
  13. FileStream fileStream = new FileStream("output.xls", FileMode.Create);
  14. if (fileExtension == ".xls")
  15.     hssfWorkbook.Write(fileStream);
  16. else if (fileExtension == ".xlsx")
  17.     xssfWorkbook.Write(fileStream);
  18. // 清理资源
  19. fileStream.Close();
  20. hssfWorkbook.Dispose();
复制代码
总结:

  • 每种方法都有其适用场景和限制,OleDb得当简朴读取老版Excel文件数据,COM组件功能全面但要求环境支持,而NPOI则提供了轻量级且无需安装Office的解决方案。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

温锦文欧普厨电及净水器总代理

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表