在C#中,读取Excel文件的方法有多种,其中一些常见的方法包括使用OLEDB、EPPlus库和Microsoft.Office.Interop.Excel库。以下是对这些方法的简要总结:

1. 使用 OLEDB 提供程序(适用于 .xls 和 .xlsx):
   
   使用 ADO.NET 中的 OLEDB 提供程序可以读取 Excel 文件。这种方法适用于 .xls 和 .xlsx 文件。
   using System.Data.OleDb;

   string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=YourExcelFile.xlsx;Extended Properties='Excel 12.0'";
   
   using (OleDbConnection connection = new OleDbConnection(connectionString))
   {
       connection.Open();
       OleDbCommand command = new OleDbCommand("SELECT * FROM [Sheet1$]", connection);
       OleDbDataReader reader = command.ExecuteReader();

       while (reader.Read())
       {
           // 读取数据
       }
   }

2. 使用 EPPlus 库(适用于 .xlsx):

   EPPlus 是一个开源库,专门用于读写 Excel 文件,支持 .xlsx 格式。
   using OfficeOpenXml;

   using (var package = new ExcelPackage(new FileInfo("YourExcelFile.xlsx")))
   {
       ExcelWorksheet worksheet = package.Workbook.Worksheets[0];
       
       for (int row = 1; row <= worksheet.Dimension.Rows; row++)
       {
           for (int col = 1; col <= worksheet.Dimension.Columns; col++)
           {
               var cellValue = worksheet.Cells[row, col].Value;
               // 处理单元格数据
           }
       }
   }

3. 使用 Microsoft.Office.Interop.Excel 库(适用于 .xls 和 .xlsx):

   Microsoft.Office.Interop.Excel 库是官方提供的用于与 Excel 交互的库,适用于 .xls 和 .xlsx 文件。
   using Excel = Microsoft.Office.Interop.Excel;

   Excel.Application excelApp = new Excel.Application();
   Excel.Workbook workbook = excelApp.Workbooks.Open("YourExcelFile.xlsx");
   Excel.Worksheet worksheet = workbook.Sheets[1];

   for (int row = 1; row <= worksheet.UsedRange.Rows.Count; row++)
   {
       for (int col = 1; col <= worksheet.UsedRange.Columns.Count; col++)
       {
           var cellValue = ((Excel.Range)worksheet.Cells[row, col]).Value;
           // 处理单元格数据
       }
   }

   workbook.Close();
   excelApp.Quit();

请注意,使用 Microsoft.Office.Interop.Excel 库时,需要确保系统上已安装 Excel。另外,使用 EPPlus 库时,需要通过 NuGet 包管理器安装 EPPlus。选择适合你需求的方法,并根据实际情况进行调整。


转载请注明出处:http://www.pingtaimeng.com/article/detail/6374/C#