如何在 C# 中導入 Excel 文件
在C#中使用IronXL導入Excel檔案,這是一個.NET程式庫,無需安裝Microsoft Excel即可讀取XLS、XLSX、CSV檔案。 只需使用sheet["A1"]的直觀語法存取單元格資料。
Microsoft Excel是一個多功能的試算表軟體,有助於資料組織、展示和分析。 然而,在C#中程式化地使用Excel可能會有挑戰,特別是在處理不同的試算表檔案型別,或當Microsoft Office不在您的部署伺服器上安裝時。 IronXL軟體程式庫提供了一個全面解決方案,用於在C#應用程式中導入和閱讀Excel檔案,支援包括XLSX、XLS和CSV檔案在內的多種格式。
什麼是IronXL,以及為何應該使用它來進行Excel導入?
IronXL是一個.NET Excel程式庫,重視易用性、準確性和速度。 它可幫助您高效地導入和閱讀Excel文件,以及建立和編輯Excel文件,性能快速。 與需要Microsoft Office Interop的傳統方法不同,IronXL獨立運行,無需MS Office Interop依賴。 這意味著您可以不安裝Excel就獲得所有讀取Excel文件的功能。 這使得IronXL成為開發人員在C#應用程式中導入和閱讀Excel檔案的強大工具,無論您是在構建ASP.NET Web應用程式、桌面應用程式還是基於雲的解決方案。
IronXL is available on all platforms like Windows, Linux, macOS, Docker, Azure, and AWS. 它與所有.NET Framework版本相容,並支援現代的.NET Core和.NET 5+環境。 IronXL是一個可整合於控制台、桌面和Web ASP.NET應用程式中的多功能程式庫,以及Blazor應用程式。 它支持不同的工作簿格式,如XLS和XLSX文件、XSLT和XLSM、CSV和TSV,這使得它成為需要在試算表文件型別之間轉換的場景中的理想選擇。
IronXL哪些關鍵功能對Excel導入至關重要?
- 開啟、閱讀Excel檔案,並從不同的試算表格式中搜索資料,如XLS/CSV/TSV/XLSX檔案,無需安裝Excel
- 導出Excel活頁簿為多種格式,包括XLS/XLSX/CSV/TSV/JSON甚至HTML
- 對XLSM/XLTX/XLSX文件進行加密和解密,以加強安全性
- 將Excel表格作為
System.Data.DataSet和System.Data.DataTable物件導入,以實現無縫的資料庫整合 - Excel文件公式在每次編輯表格時自動重新計算
- 直觀的單元格範圍設定,具有關於選擇範圍的
WorkSheet["A1:B10"]簡便語法 - 使用內建方法排序單元格範圍、列和行
- 綜合單元格樣式設計,包括字體自定義、背景顏色、邊框和對齊以及數字格式
我如何在C#中導入Excel工作簿?
開始Excel導入之前,我需要準備什麼?
要在C#中使用IronXL來閱讀Excel文件,請確保在您的計算機上安裝以下元件:
-
Visual Studio - 這是用於開發C# .NET應用程式的官方IDE。 Visual Studio提供出色的
IntelliSense支援和除錯工具,使操作Excel文件更輕鬆。 您可以從Microsoft網站下載並安裝Visual Studio。 社群版本是免費的,足以滿足大多數開發需求。 - IronXL - 這是協助您在C#中處理指定路徑下的Excel表單的程式庫。 必須在您的C#程式中安裝IronXL才能使用。 可以從NuGet網站輕鬆下載IronXL,或者可以直接通過Visual Studio工具中的管理NuGet包介面安裝。 如果您偏好手動安裝,也可以直接下載.NET Excel DLL檔案。
對於生產部署,您需要應用授權金鑰來移除水印並啟用全部功能。 開發和測試可以使用試用版本進行。
我應在我的程式碼中新增哪些命名空間?
一旦安裝了Visual Studio和IronXL,請引用IronXL程式集以在源程式碼中使用IronXL。 在新項目的文件頂部新增以下程式碼行,其中將使用IronXL功能:
using IronXL;
using IronXL;
Imports IronXL
該單一命名空間導入為Excel操作提供了所有核心功能的存取權限。 如果您正在處理特定的Excel功能,如圖表或條件格式化,可能需要從IronXL程式庫中導入其他命名空間。
我如何載入並打開Excel檔案?
Microsoft Excel試算表也稱為Excel工作簿。 每個工作簿包含多個試算表(也稱為表),而單個試算表包含按行和列排列的表格單元格及其相應的值。 要開啟和閱讀Excel文件,請使用IronXL程式庫中包含的WorkBook類和Load方法載入。 程式碼如下:
// Supported Excel spreadsheet formats for reading include: XLSX, XLS, CSV, and TSV
WorkBook workbook = WorkBook.Load("test.xlsx");
// You can also load from a stream
using (var stream = File.OpenRead("test.xlsx"))
{
WorkBook streamWorkbook = WorkBook.Load(stream);
}
// Or load CSV files with custom delimiters
WorkBook csvWorkbook = WorkBook.LoadCSV("data.csv", delimiter: ",");
// Supported Excel spreadsheet formats for reading include: XLSX, XLS, CSV, and TSV
WorkBook workbook = WorkBook.Load("test.xlsx");
// You can also load from a stream
using (var stream = File.OpenRead("test.xlsx"))
{
WorkBook streamWorkbook = WorkBook.Load(stream);
}
// Or load CSV files with custom delimiters
WorkBook csvWorkbook = WorkBook.LoadCSV("data.csv", delimiter: ",");
' Supported Excel spreadsheet formats for reading include: XLSX, XLS, CSV, and TSV
Dim workbook As WorkBook = WorkBook.Load("test.xlsx")
' You can also load from a stream
Using stream = File.OpenRead("test.xlsx")
Dim streamWorkbook As WorkBook = WorkBook.Load(stream)
End Using
' Or load CSV files with custom delimiters
Dim csvWorkbook As WorkBook = WorkBook.LoadCSV("data.csv", delimiter:=",")
這將在工作簿實例引用變數中打開Excel文件。 由於一個工作簿可以擁有多個試算表,您可以以多種方式存取它們。 以下程式碼將第一個試算表開啟到試算表實例變數中:
// Get the first worksheet
WorkSheet sheet = workbook.WorkSheets.First();
// Or access by worksheet name
WorkSheet namedSheet = workbook.GetWorkSheet("Sheet1");
// Or by index (zero-based)
WorkSheet indexedSheet = workbook.WorkSheets[0];
// Get the first worksheet
WorkSheet sheet = workbook.WorkSheets.First();
// Or access by worksheet name
WorkSheet namedSheet = workbook.GetWorkSheet("Sheet1");
// Or by index (zero-based)
WorkSheet indexedSheet = workbook.WorkSheets[0];
' Get the first worksheet
Dim sheet As WorkSheet = workbook.WorkSheets.First()
' Or access by worksheet name
Dim namedSheet As WorkSheet = workbook.GetWorkSheet("Sheet1")
' Or by index (zero-based)
Dim indexedSheet As WorkSheet = workbook.WorkSheets(0)
這將開啟Excel文件中的第一個表,現在可以從中讀取和寫入Excel資料。 對於更高級的場景,您可能需要管理多個試算表或程式化地建立新的試算表。
開啟的Excel檔案
包含員工資訊的範本Excel文件將使用C#導入。 資料包括姓名、職務(經理、總監、員工、總裁)以及相應的薪水值。
導入後如何讀取特定的單元格值?
一旦Excel文件被導入,便可以準備讀取資料。 使用IronXL在C#中閱讀Excel文件資料非常簡單容易. 您可以通過在標準Excel標記法中指定單元格引用號(如"A1"、"B2"等)來讀取Excel單元格值。 程式庫提供了多種方式來根據預期的資料型別存取單元格值。
以下程式碼檢索引用號"C2"的單元格的值:
// Select cells easily in Excel-notation and return the value
int cellValue = sheet["C2"].IntValue;
// Display the value
Console.WriteLine(cellValue);
// You can also access different data types
string textValue = sheet["A2"].StringValue;
decimal decimalValue = sheet["C2"].DecimalValue;
double doubleValue = sheet["C2"].DoubleValue;
DateTime dateValue = sheet["D2"].DateTimeValue;
bool boolValue = sheet["E2"].BoolValue;
// Check if cell is empty
bool isEmpty = sheet["F2"].IsEmpty;
// Select cells easily in Excel-notation and return the value
int cellValue = sheet["C2"].IntValue;
// Display the value
Console.WriteLine(cellValue);
// You can also access different data types
string textValue = sheet["A2"].StringValue;
decimal decimalValue = sheet["C2"].DecimalValue;
double doubleValue = sheet["C2"].DoubleValue;
DateTime dateValue = sheet["D2"].DateTimeValue;
bool boolValue = sheet["E2"].BoolValue;
// Check if cell is empty
bool isEmpty = sheet["F2"].IsEmpty;
' Select cells easily in Excel-notation and return the value
Dim cellValue As Integer = sheet("C2").IntValue
' Display the value
Console.WriteLine(cellValue)
' You can also access different data types
Dim textValue As String = sheet("A2").StringValue
Dim decimalValue As Decimal = sheet("C2").DecimalValue
Dim doubleValue As Double = sheet("C2").DoubleValue
Dim dateValue As DateTime = sheet("D2").DateTimeValue
Dim boolValue As Boolean = sheet("E2").BoolValue
' Check if cell is empty
Dim isEmpty As Boolean = sheet("F2").IsEmpty
輸出如以下所示:
在C#中成功讀取Excel文件後的除錯控制台輸出。 程式已完成執行,並在等待使用者輸入以關閉。
現在,讓我們從已打開的Excel文件中讀取單元格範圍內的資料。 IronXL通過熟悉的Excel標記法使其使用單元格範圍變得容易。 程式碼如下:
// Read from a range of cells elegantly.
foreach (var cell in sheet["A2:A6"])
{
Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}
// You can also work with entire rows or columns
var row = sheet.GetRow(2); // Get row 3 (0-indexed)
foreach (var cell in row)
{
Console.WriteLine($"Row cell value: {cell.Value}");
}
// Or get a column
var column = sheet.GetColumn(0); // Get column A
foreach (var cell in column)
{
Console.WriteLine($"Column A value: {cell.Value}");
}
// Read from a range of cells elegantly.
foreach (var cell in sheet["A2:A6"])
{
Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}
// You can also work with entire rows or columns
var row = sheet.GetRow(2); // Get row 3 (0-indexed)
foreach (var cell in row)
{
Console.WriteLine($"Row cell value: {cell.Value}");
}
// Or get a column
var column = sheet.GetColumn(0); // Get column A
foreach (var cell in column)
{
Console.WriteLine($"Column A value: {cell.Value}");
}
' Read from a range of cells elegantly.
For Each cell In sheet("A2:A6")
Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text)
Next
' You can also work with entire rows or columns
Dim row = sheet.GetRow(2) ' Get row 3 (0-indexed)
For Each cell In row
Console.WriteLine($"Row cell value: {cell.Value}")
Next
' Or get a column
Dim column = sheet.GetColumn(0) ' Get column A
For Each cell In column
Console.WriteLine($"Column A value: {cell.Value}")
Next
程式碼非常簡單、清晰且易於理解。 單元格的範圍可以如sheet["A2:A6"],可以迭代每個單元格以獲取其值。 在這裡,您將會在控制台輸出中看到第2行到第6行的A列中的姓名:
控制台輸出示範使用C#成功讀取Excel單元格範圍(A2:A6)中的名稱
有關讀取和寫入單元格值的更多詳細資訊,請參閱此如何在C#範例中讀取Excel文件的教程。 您還可以探索高級功能,例如應用公式或使用命名範圍。
如何一次性導入整個工作表?
IronXL可以使用行和列指標來一次性讀取Excel表格。 這特別有用,當您需要處理工作表中的所有資料或當您需要將Excel轉換為其他格式如CSV或JSON時。 以下IronXL程式碼範例幫助您獲取相同步調格式的整個Excel文件資料到控制台輸出中:
WorkBook workbook = WorkBook.Load("test.xlsx");
WorkSheet sheet = workbook.WorkSheets.First();
// Traverse all rows of Excel WorkSheet
for (int i = 0; i < sheet.Rows.Count(); i++)
{
// Traverse all columns of specific Row
for (int j = 0; j < sheet.Columns.Count(); j++)
{
// Get the values
string val = sheet.Rows[i].Columns[j].Value.ToString();
Console.Write("{0}\t", val);
}
Console.WriteLine();
}
// Alternative method using LINQ for more efficient processing
var allData = sheet.Rows.SelectMany(row =>
row.Columns.Select(col => col.Value?.ToString() ?? "")).ToList();
WorkBook workbook = WorkBook.Load("test.xlsx");
WorkSheet sheet = workbook.WorkSheets.First();
// Traverse all rows of Excel WorkSheet
for (int i = 0; i < sheet.Rows.Count(); i++)
{
// Traverse all columns of specific Row
for (int j = 0; j < sheet.Columns.Count(); j++)
{
// Get the values
string val = sheet.Rows[i].Columns[j].Value.ToString();
Console.Write("{0}\t", val);
}
Console.WriteLine();
}
// Alternative method using LINQ for more efficient processing
var allData = sheet.Rows.SelectMany(row =>
row.Columns.Select(col => col.Value?.ToString() ?? "")).ToList();
Dim workbook As WorkBook = WorkBook.Load("test.xlsx")
Dim sheet As WorkSheet = workbook.WorkSheets.First()
' Traverse all rows of Excel WorkSheet
For i As Integer = 0 To sheet.Rows.Count() - 1
' Traverse all columns of specific Row
For j As Integer = 0 To sheet.Columns.Count() - 1
' Get the values
Dim val As String = sheet.Rows(i).Columns(j).Value.ToString()
Console.Write("{0}" & vbTab, val)
Next
Console.WriteLine()
Next
' Alternative method using LINQ for more efficient processing
Dim allData = sheet.Rows.SelectMany(Function(row)
row.Columns.Select(Function(col) If(col.Value?.ToString(), ""))).ToList()
對於較大的Excel文件,您可能需要考慮使用DataTable或DataSet物件以獲得更好的性能和更易於資料操作的便利性:
// Convert worksheet to DataTable for easier manipulation
DataTable dataTable = sheet.ToDataTable(true); // true = first row contains headers
// Process data using DataTable methods
foreach (DataRow row in dataTable.Rows)
{
foreach (var item in row.ItemArray)
{
Console.Write($"{item}\t");
}
Console.WriteLine();
}
// Convert worksheet to DataTable for easier manipulation
DataTable dataTable = sheet.ToDataTable(true); // true = first row contains headers
// Process data using DataTable methods
foreach (DataRow row in dataTable.Rows)
{
foreach (var item in row.ItemArray)
{
Console.Write($"{item}\t");
}
Console.WriteLine();
}
' Convert worksheet to DataTable for easier manipulation
Dim dataTable As DataTable = sheet.ToDataTable(True) ' True = first row contains headers
' Process data using DataTable methods
For Each row As DataRow In dataTable.Rows
For Each item In row.ItemArray
Console.Write($"{item}" & vbTab)
Next
Console.WriteLine()
Next
輸出文件
控制台輸出成功顯示從Excel文件導入的員工資料,格式正確顯示姓名、職位和薪水資訊。
.
導入Excel文件後的下一步是什麼?
本文講述了如何在未安裝Microsoft Excel的情況下在C#中導入和讀取Excel文件。 它涵蓋了從個別單元格到整個工作表的多種方式來讀取Excel試算表中的資料。 IronXL還能幫助您在C#中建立Excel檔案,不需要任何Excel的安裝。
在成功導入Excel資料後,您可能想要探索其他功能:
- 資料處理:排序單元格範圍,應用過濾器或分組行和列
- 資料驗證:實施資料驗證規則以確保資料完好
- 格式化:應用單元格樣式,條件格式或數字格式
- 圖表和視覺化:建立圖表或新增圖片以增強資料呈現
- 安全性:密碼保護工作簿或個別工作表
IronXL 提供了一個一體化解決方案,讓所有與 Microsoft Excel 文件相關的任務都能程式化地實現。 您可以進行公式計算、字串或數字排序、修剪和追加,提高和替換、合併和拆分單元格、儲存文件等等。 您可以編輯單元格值,並且可以與驗證試算表資料一起設置單元格資料格式。 它還支援CSV文件,幫助您無縫的操作Excel資料。
對於企業應用程式,可以考慮探索各種平台上的部署選項,包括Docker容器、Azure Functions和AWS Lambda。
IronXL可供免費試用,並可以獲得許可以作為其Lite包起始的商業用途,僅需$999。 該程式庫提供了出色的文件,教程和程式碼範例,幫助您快速入門在C#應用中進行Excel文件操作。
常見問題
如何在C#中匯入及讀取Excel檔案而不使用Interop?
您可以使用IronXL程式庫在C#中匯入及讀取Excel檔案。只需使用WorkBook.Load("file.xlsx")載入Excel檔案,即可存取和處理資料,而不需要安裝Microsoft Excel。
IronXL程式庫相容於哪些平台?
IronXL與所有.NET Framework相容,可用於多個平台,包括Windows、Linux、macOS、Docker、Azure和AWS。
我可以使用IronXL編輯Excel檔案而不需要安裝Microsoft Excel嗎?
可以,IronXL允許您在C#中以程式化方式建立和編輯Excel檔案,無需安裝Microsoft Excel。
IronXL可以處理哪些Excel格式?
IronXL支援多種Excel檔案格式,如XLS、XLSX、CSV、TSV等,方便資料的匯入與操作。
在C#專案中使用IronXL的先決條件是什麼?
要使用IronXL,確保您已安裝Visual Studio。您可以通過NuGet包管理器或下載.NET Excel DLL進行新增和引用IronXL到您的專案中。
如何使用IronXL在C#中載入工作簿?
要在C#中載入Excel工作簿,可以使用IronXL的WorkBook.Load("path/to/file.xlsx")方法,這樣可以開啟並操作工作簿。
IronXL能處理Excel公式嗎?
可以,IronXL能夠無縫處理及重新計算Excel公式,確保資料計算的準確性。
如何使用IronXL從特定儲存格讀取資料?
要從特定儲存格讀取資料,可以使用IronXL語法如sheet["B2"].StringValue來取得儲存格B2的值。
我可以使用IronXL遍歷Excel表單中的儲存格範圍嗎?
可以,您可以使用IronXL遍歷一個儲存格範圍,例如foreach (var cell in sheet["A1:C3"]),以逐一處理每個儲存格。
如何將IronXL整合到ASP.NET應用程式中?
可以輕鬆地將IronXL整合到ASP.NET應用程式中,只需通過NuGet新增程式庫並在專案中加以引用,以便在Web應用程式中操作Excel檔案。




