當前位置: 妍妍網 > 碼農

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
}
}
}