Excel是一個非常常見的工作軟體,我們在日常生活中難免要接觸到它。而C#作為一種常用的編程語言,也經常需要與Excel進行交互。在本篇文章中,我們將從多個方面結合代碼來詳細介紹C#讀取Excel的幾種方法,便於大家在實際工作中使用。
一、使用Microsoft.Office.Interop.Excel
使用Microsoft.Office.Interop.Excel是最常見的方法之一,它可以幫助我們直接讀取和操作Excel文件。我們需要引用Microsoft.Office.Interop.Excel的COM組件,並添加一些命名空間後,便可以使用相關的類和方法。下面是一個示例代碼:
using Excel = Microsoft.Office.Interop.Excel; public void ReadExcel(string filePath) { Excel.Application excelApp = new Excel.Application(); Excel.Workbook workbook = excelApp.Workbooks.Open(filePath); Excel.Worksheet worksheet = workbook.Sheets[1]; Excel.Range range = worksheet.UsedRange; // 讀取每一行每一列的數據 for (int row = 1; row <= range.Rows.Count; row++) { for (int col = 1; col <= range.Columns.Count; col++) { string cellValue = range.Cells[row, col].Value.ToString(); Console.WriteLine("第{0}行第{1}列的值:{2}", row, col, cellValue); } } workbook.Close(); excelApp.Quit(); }
在這個示例中,我們通過Excel.Application對象創建了一個Excel應用程序實例,並使用它打開了一個指定路徑下的Excel文件。然後,我們選擇了Excel文件中的第一個工作表,並使用UsedRange屬性獲取了它的數據區域。最後,我們通過兩個for循環依次遍歷每一行每一列,讀取相應的單元格的值,並輸出到控制台。
二、使用OleDbConnection
OleDbConnection也是常用的一種讀取Excel文件的方法。這個方法使用了OLE DB技術,可以通過一些簡單的代碼就可以實現數據的讀取。下面是示例代碼:
using System.Data.OleDb; public void ReadExcel(string filePath) { string connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath + ";Extended Properties='Excel 12.0;HDR=YES;IMEX=1;'"; using (OleDbConnection conn = new OleDbConnection(connString)) { conn.Open(); OleDbCommand command = new OleDbCommand("SELECT * FROM [Sheet1$]", conn); OleDbDataReader reader = command.ExecuteReader(); // 讀取每一行每一列的數據 while (reader.Read()) { for (int i = 0; i < reader.FieldCount; i++) { Console.WriteLine(reader[i]); } } } }
在這個示例中,我們首先創建了一個連接到Excel文件的連接字元串,然後使用OleDbConnection對象連接到該文件。接著,我們使用SQL語句「SELECT * FROM [Sheet1$]」讀取第一個工作表中的全部數據,得到一個OleDbDataReader對象。最後,我們通過一個while循環遍歷每一行,並通過for循環遍歷每一列,分別輸出到控制台。
三、使用EPPlus
EPPlus是一個第三方的開源庫,專門用於讀寫Excel文件,比較適合用於大數據量Excel文件的讀寫操作。下面是一個使用EPPlus讀取Excel文件並輸出其內容的示例代碼:
using OfficeOpenXml; public void ReadExcel(string filePath) { using (ExcelPackage package = new ExcelPackage(new FileInfo(filePath))) { ExcelWorksheet worksheet = package.Workbook.Worksheets[1]; // 讀取每一行每一列的數據 for (int row = worksheet.Dimension.Start.Row; row <= worksheet.Dimension.End.Row; row++) { for (int col = worksheet.Dimension.Start.Column; col <= worksheet.Dimension.End.Column; col++) { object cellValue = worksheet.Cells[row, col].Value; if (cellValue != null) { Console.WriteLine("第{0}行第{1}列的值:{2}", row, col, cellValue.ToString()); } } } } }
在這個示例中,我們首先使用ExcelPackage打開指定路徑下的Excel文件。然後,我們選擇了Excel文件中的第一個工作表,並使用Dimension屬性獲取了它的真實數據區域。最後,我們通過兩個for循環依次遍歷每一行每一列,讀取相應的單元格的值,並輸出到控制台。
四、使用NPOI
NPOI是一個開源的.NET類庫,可以用於讀寫Microsoft Office系列的文件,包括Excel。NPOI相對於Microsoft.Office.Interop.Excel和OleDbConnection的優勢在於,它可以在未安裝Excel的系統中使用,並且文件大小的限制較小。下面是一個使用NPOI讀取Excel文件的示例代碼:
using NPOI.SS.UserModel; using NPOI.XSSF.UserModel; public void ReadExcel(string filePath) { using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read)) { IWorkbook workbook = new XSSFWorkbook(fs); ISheet worksheet = workbook.GetSheetAt(0); // 讀取每一行每一列的數據 for (int row = 0; row <= worksheet.LastRowNum; row++) { IRow currentRow = worksheet.GetRow(row); for (int col = 0; col < currentRow.LastCellNum; col++) { ICell currentCell = currentRow.GetCell(col); if (currentCell != null) { string cellValue = currentCell.ToString(); Console.WriteLine("第{0}行第{1}列的值:{2}", row + 1, col + 1, cellValue); } } } } }
在這個示例中,我們首先使用FileStream打開指定路徑下的Excel文件。然後,我們使用XSSFWorkbook和ISheet對象分別表示整個Excel文件和它的第一個工作表。接著,我們通過兩個for循環依次遍歷每一行每一列,讀取相應的單元格的值,並輸出到控制台。
五、使用Spire.XLS
Spire.XLS是另一個免費的.NET類庫,用於讀寫Excel文件。使用它可以快速讀取和操作Excel文件,並支持大多數Excel功能。下面是一個使用Spire.XLS讀取Excel文件的示例代碼:
using Spire.Xls; public void ReadExcel(string filePath) { Workbook workbook = new Workbook(); workbook.LoadFromFile(filePath); Worksheet worksheet = workbook.Worksheets[0]; // 讀取每一行每一列的數據 for (int row = 1; row <= worksheet.LastRow; row++) { for (int col = 1; col <= worksheet.LastColumn; col++) { CellRange range = worksheet[row, col]; if (range.Value != null) { Console.WriteLine("第{0}行第{1}列的值:{2}", row, col, range.Value); } } } }
在這個示例中,我們首先使用WorkBook打開指定路徑下的Excel文件。然後,我們選擇了Excel文件中的第一個工作表,並使用LastRow和LastColumn屬性獲取它的真實數據區域。最後,我們通過兩個for循環依次遍歷每一行每一列,讀取相應的單元格的值,並輸出到控制台。
總結
通過上述的幾個示例代碼,我們可以看到使用C#讀取Excel文件有多種方法,其中Microsoft.Office.Interop.Excel和OleDbConnection比較常見但需要安裝Excel,EPPlus適用於大數據量Excel文件的讀寫操作,NPOI可以在未安裝Excel的系統中使用,Spire.XLS支持大多數Excel功能。讀者可以根據自己的實際需求選擇最合適的方法。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/303347.html