当前位置: 欣欣网 > 码农

C# 读取Excel文件的几种方法

2024-02-13码农

在处理Excel文件时,C# 提供了多种方法和库来读取和操作Excel数据。下面我们将探讨几种常见的方法,并简要介绍它们的使用场景和优缺点。

  1. Microsoft.Office.Interop.Excel

Microsoft.Office.Interop.Excel 是Microsoft Office提供的一套COM接口,允许C#程序与Excel应用程序进行交互。这种方法功能强大,但依赖于Excel的安装,并且是非托管代码,可能导致性能问题和资源泄漏。

using Excel = Microsoft.Office.Interop.Excel;
// 创建Excel应用程序实例
Excel.Application xlApp = new Excel.Application();
// 打开Excel文件
Excel.Workbook xlWorkbook = xlApp.Workbooks.Open("文件路径.xlsx");
Excel.Worksheet xlWorksheet = xlWorkbook.Sheets[1];
// 读取数据
Excel.Range xlRange = xlWorksheet.UsedRange;
int rowCount = xlRange.Rows.Count;
int colCount = xlRange.Columns.Count;
for (int i = 1; i <= rowCount; i++)
{
for (int j = 1; j <= colCount; j++)
{
string cellValue = xlRange.Cells[i, j].Value2.ToString();
// 处理cellValue
}
}
// 关闭和释放资源
xlWorkbook.Close();
xlApp.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlRange);
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlWorksheet);
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlWorkbook);
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp);



  1. EPPlus

EPPlus是一个开源的.NET库,用于读写Excel 2007/2010/2013/2016/2019文件(即.xlsx格式)。它不依赖于Microsoft Office的安装,并且使用简单。

using OfficeOpenXml;
using System.IO;
// 读取Excel文件
FileInfo fileInfo = new FileInfo("文件路径.xlsx");
using (ExcelPackage package = new ExcelPackage(fileInfo))
{
ExcelWorksheet worksheet = package.Workbook.Worksheets[1];
// 读取数据
int rowCount = worksheet.Dimension.Rows;
int colCount = worksheet.Dimension.Columns;
for (int row = 1; row <= rowCount; row++)
{
for (int col = 1; col <= colCount; col++)
{
object cellValue = worksheet.Cells[row, col].Value;
// 处理cellValue
}
}
}

  1. ClosedXML

ClosedXML是另一个开源的.NET库,用于处理Excel文件。它基于OpenXML SDK,并且有一个更简洁的API。

using ClosedXML.Excel;
using System.IO;
// 读取Excel文件
var workbook = new XLWorkbook("文件路径.xlsx");
var worksheet = workbook.Worksheet(1);
// 读取数据
foreach (var row in worksheet.RowsUsed())
{
foreach (var cell in row.CellsUsed())
{
string cellValue = cell.Value.ToString();
// 处理cellValue
}
}

  1. OpenXML SDK

OpenXML SDK是微软提供的一套用于处理Office Open XML格式文件(如.docx, .xlsx, .pptx等)的库。它是一个底层的API,需要编写更多的代码来操作Excel文件。

using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Spreadsheet;
using System.IO;
// 打开Excel文件
using (SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Open("文件路径.xlsx"false))
{
WorkbookPart workbookPart = spreadsheetDocument.WorkbookPart;
Sheet sheet = workbookPart.Workbook.Descendants<Sheet>().First();
WorksheetPart worksheetPart = (WorksheetPart)(workbookPart.GetPartById(sheet.Id));
// 读取数据
SheetData sheetData = worksheetPart.Worksheet.Elements<SheetData>().First();
foreach (Row row in sheetData.Elements<Row>())
{
foreach (Cell cell in row.Elements<Cell>())
{
string cellValue = cell.CellValue.Text;
// 处理cellValue
}
}
}