在C#中,读取Excel文件中的数据可以通过多种方式实现,常用的方法包括使用Microsoft提供的Interop库、第三方库如EPPlus和NPOI等,下面将详细介绍如何使用这些方法来读取Excel文件中的数据。
方法一:使用 Microsoft.Office.Interop.Excel(适用于 .NET Framework)
1、安装和引用
首先需要安装Microsoft Office Interop库,你可以通过NuGet包管理器来安装:
Install-Package Microsoft.Office.Interop.Excel
在你的项目中添加对Microsoft.Office.Interop.Excel
的引用。
2、代码示例
using System; using System.Runtime.InteropServices; using Excel = Microsoft.Office.Interop.Excel; class Program { static void Main() { string path = @"C:pathtoyourexcel.xlsx"; Excel.Application excelApp = new Excel.Application(); if (excelApp == null) { Console.WriteLine("Excel is not properly installed!!"); return; } Excel.Workbook workbook = excelApp.Workbooks.Open(path); Excel.Worksheet worksheet = workbook.Worksheets[1]; // 获取第一个工作表 Excel.Range range = worksheet.UsedRange; for (int row = 1; row <= range.Rows.Count; row++) { for (int col = 1; col <= range.Columns.Count; col++) { Console.Write(range.Cells[row, col].Value2 + "t"); } Console.WriteLine(); } workbook.Close(false); excelApp.Quit(); Marshal.ReleaseComObject(workbook); Marshal.ReleaseComObject(excelApp); } }
3、注意事项
这种方法依赖于本地安装了Microsoft Office。
性能可能不如其他专用库。
方法二:使用 EPPlus(适用于 .NET Core/.NET Standard)
1、安装和引用
通过NuGet包管理器安装EPPlus:
Install-Package EPPlus
2、代码示例
using System; using OfficeOpenXml; class Program { static void Main() { string path = @"C:pathtoyourexcel.xlsx"; using (var package = new ExcelPackage(new FileInfo(path))) { // 获取第一个工作表 var worksheet = package.Workbook.Worksheets[0]; var rows = worksheet.Dimension.Rows; for (int i = 2; i <= rows; i++) // 跳过标题行 { var cell = worksheet.Cells[i, 1]; // 假设数据从第一列开始 Console.WriteLine(cell.Text); } } } }
3、注意事项
EPPlus仅支持.xlsx格式,不支持旧版.xls格式。
适合处理大量数据的场景。
方法三:使用 NPOI(适用于 .NET Core/.NET Standard)
1、安装和引用
通过NuGet包管理器安装NPOI:
Install-Package NPOI
2、代码示例
using System; using NPOI.SS.UserModel; using NPOI.XSSF.UserModel; using System.IO; class Program { static void Main() { string path = @"C:pathtoyourexcel.xlsx"; IWorkbook workbook = new XSSFWorkbook(File.OpenRead(path)); ISheet sheet = workbook.GetSheetAt(0); // 获取第一个工作表 for (int i = 1; i <= sheet.LastRowNum; i++) // 跳过标题行 { IRow row = sheet.GetRow(i); ICell cell = row.GetCell(0); // 假设数据从第一列开始 Console.WriteLine(cell.ToString()); } } }
3、注意事项
NPOI同时支持.xls和.xlsx格式。
适合处理大量数据的场景。
Q1: 为什么选择EPPlus而不是Interop?
A1: EPPlus是一个开源库,不依赖Microsoft Office的安装,且更适合跨平台开发(如.NET Core),而Interop则依赖于本地安装的Microsoft Office,并且在某些情况下可能会遇到兼容性问题,EPPlus的性能通常优于Interop,特别是在处理大量数据时。
Q2: NPOI与EPPlus有什么区别?
A2: NPOI和EPPlus都是用于操作Excel文件的库,但它们有一些关键区别:
文件格式支持:NPOI支持HSSF(.xls)和XSSF(.xlsx),而EPPlus只支持XSSF(.xlsx)。
性能:NPOI通常在处理大文件时表现更好,因为它是专门为高性能设计的,EPPlus虽然也很快,但在极端情况下可能不如NPOI。
功能:两者都提供了丰富的API来操作Excel文件,但具体功能和支持程度可能有所不同,开发者可以根据项目需求选择合适的库。