C# CSV 轉 XLSX:將 CSV 檔案轉換為 Excel 格式
將 CSV 檔案轉換為 XLSX 格式,能釋放出逗號分隔值檔案所無法提供的試算表功能。CSV 僅儲存原始表格資料,而 Excel XLSX 格式則支援公式、多個工作表、圖表、儲存格格式設定及資料驗證——這些正是現代商業應用程式所必需的功能。 只要選用合適的函式庫,轉換過程便十分簡單,僅需幾行 C# 程式碼即可完成。
IronXL 是一個 .NET 程式庫,可直接處理此轉換,無需 Microsoft Office 或 Open XML SDK。 它會讀取原始 CSV 檔案,解析分隔符號分隔的資料,並寫入完全符合標準的 XLSX 工作簿。 請透過 NuGet 安裝並啟動免費試用,以便配合下方程式碼範例進行操作。
如何在 C# 中將 CSV 檔案轉換為 XLSX 格式?
核心轉換流程需載入 CSV 檔案並將其儲存為 Excel 格式。 IronXL 提供 WorkBook.LoadCSV,它可以解析分隔符號來源並建立可供匯出的工作簿。 此方法接受檔案路徑、目標 Excel 格式以及分隔字元。
using IronXL;
// Load CSV file and convert to XLSX format
WorkBook workbook = WorkBook.LoadCSV("data.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");
// Access the default worksheet containing CSV data
WorkSheet worksheet = workbook.DefaultWorkSheet;
// Save as Excel XLSX file
workbook.SaveAs("output.xlsx");
using IronXL;
// Load CSV file and convert to XLSX format
WorkBook workbook = WorkBook.LoadCSV("data.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");
// Access the default worksheet containing CSV data
WorkSheet worksheet = workbook.DefaultWorkSheet;
// Save as Excel XLSX file
workbook.SaveAs("output.xlsx");
Imports IronXL
' Load CSV file and convert to XLSX format
Dim workbook As WorkBook = WorkBook.LoadCSV("data.csv", fileFormat:=ExcelFileFormat.XLSX, ListDelimiter:=",")
' Access the default worksheet containing CSV data
Dim worksheet As WorkSheet = workbook.DefaultWorkSheet
' Save as Excel XLSX file
workbook.SaveAs("output.xlsx")
輸出
C# CSV 轉 XLSX:完整開發者指南:圖 1 - CSV 轉 Excel 轉換範例輸出
LoadCSV 方法接受三個關鍵參數:檔案名稱、目標 Excel 格式常數和原始檔案中使用的清單分隔符號。此方法在建立結構正確的 XLSX 檔案的同時,保留原始 CSV 工作表中的所有字串資料和數值。 WorkBook類別是所有電子表格操作的中心樞紐。 載入後,即可透過工作表存取 CSV 資料,以便在儲存最終的 Excel 檔案前進行進一步處理。
要載入現有的 XLSX 檔案而不是 CSV 文件,請使用 WorkBook.Load("file.xlsx"),它會自動從檔案副檔名偵測格式。 這使得建立能接受 CSV 或 Excel 輸入,並將其標準化為單一輸出格式的處理流程變得輕而易舉。
將 CSV 轉換為 Excel 格式有哪些好處?
在大多數資料管理情境中,XLSX 格式相較於純 CSV 檔案具有顯著優勢:
- 多工作表:Excel 檔案支援在單一工作簿內包含多個工作表,能實現 CSV 檔案無法比擬的有序資料儲存。 單一 XLSX 檔案可包含數十個工作表,涵蓋不同的時間段、地區或類別。
- 公式支援:可直接在儲存格中輸入複雜的計算、彙總及條件邏輯。 當原始資料變更時,Excel 公式會自動重新計算,無需手動重新處理 CSV 檔案。
- Visual Charts:根據試算表資料建立條形圖、線圖、圓餅圖及其他視覺化圖表。 IronXL 支援透過 API 直接建立圖表,因此圖表會嵌入 XLSX 檔案中。
- 儲存格格式設定:控制字型、顏色、邊框及數字格式,以製作 Professional 文件。 CSV 檔案僅儲存原始數值; XLSX 格式在儲存資料的同時,亦保留其顯示層。
- 資料驗證:將儲存格輸入限制為特定值或範圍,以防止在與最終使用者共享的檔案中發生資料輸入錯誤。
- 密碼保護:透過密碼保護工作表和工作簿以控制讀寫權限,這是 CSV 完全不具備的功能。
這些功能使 XLSX 格式成為報表、儀表板、財務模型,以及任何需要超越原始資料儲存功能的應用程式的標準選擇。
如何在.NET專案中安裝IronXL?
IronXL 以 NuGet 套件形式發行。 請透過 Visual Studio 的套件管理主控台進行安裝:
Install-Package IronXl
Install-Package IronXl
或使用 .NET CLI:
dotnet add package IronXl
dotnet add package IronXl
安裝完成後,將 using IronXL; 新增至任何與電子表格相關的檔案中。 此套件適用於 .NET Framework 4.6.2 以上、.NET Core 3.1 以上,以及 .NET 5 至 .NET 10 版本,並支援 Windows、Linux、macOS、Docker 及 Azure 部署環境。
無需額外的執行時依賴項,亦無需安裝 Microsoft Office。 IronXL 透過其專屬的解析器與寫入器讀取及寫入 XLSX 檔案,使其適用於無法安裝 Office 的伺服器端及無頭部署環境。
在轉換過程中,您如何處理 CSV 編碼?
許多 CSV 檔案源自舊有系統、國際化資料庫,或使用非 ASCII 字元的第三方匯出檔案。 正確處理編碼可確保特殊字元與國際化文字在生成的 XLSX 檔案中保持完整。
using IronXL;
using System.Text;
// Load CSV with explicit encoding specification
WorkBook workbook = WorkBook.LoadCSV("international-data.csv",
fileFormat: ExcelFileFormat.XLSX,
ListDelimiter: ",",
encoding: Encoding.UTF8);
// Access the worksheet containing the encoded data
WorkSheet sheet = workbook.DefaultWorkSheet;
// Inspect a cell to verify encoding was preserved
string cellValue = sheet["A1"].StringValue;
// Save the converted Excel file
workbook.SaveAs("encoded-output.xlsx");
using IronXL;
using System.Text;
// Load CSV with explicit encoding specification
WorkBook workbook = WorkBook.LoadCSV("international-data.csv",
fileFormat: ExcelFileFormat.XLSX,
ListDelimiter: ",",
encoding: Encoding.UTF8);
// Access the worksheet containing the encoded data
WorkSheet sheet = workbook.DefaultWorkSheet;
// Inspect a cell to verify encoding was preserved
string cellValue = sheet["A1"].StringValue;
// Save the converted Excel file
workbook.SaveAs("encoded-output.xlsx");
IRON VB CONVERTER ERROR developers@ironsoftware.com
輸出 XLSX 檔案
C# CSV 轉 XLSX:完整開發者指南:圖 2 - 處理所有編碼的 CSV 轉 XLSX
IronXL 會自動偵測常見的編碼格式,包括大多數標準 CSV 檔案所使用的 UTF-8。 對於採用非標準編碼(例如 Windows-1252、ISO-8859-1 或 Shift-JIS)的文件,請將 System.Text.Encoding 實例傳遞給 LoadCSV 呼叫。 Microsoft Learn 上的 Encoding 類別文件列出了所有受支援的編碼名稱。
從遠端伺服器取得 CSV 資料時,使用 HttpClient 下載流,將其儲存為臨時文件,然後透過 LoadCSV 載入它。 此模式適用於雲端託管的 .NET 應用程式,其中 CSV 檔案作為第三方 API 的 HTTP 回應傳入。
如何在 CSV 轉換後套用儲存格格式?
原始 CSV 資料不包含任何格式資訊。 轉換為 XLSX 格式後,請套用數字格式、字型及背景顏色,使試算表既易於閱讀又具 Professional 感。
using IronXL;
using IronXL.Styles;
// Load CSV data
WorkBook workbook = WorkBook.LoadCSV("sales-report.csv",
fileFormat: ExcelFileFormat.XLSX,
ListDelimiter: ",");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Format the header row with bold text and background color
Range headerRow = sheet["A1:Z1"];
headerRow.Style.Font.Bold = true;
headerRow.Style.SetBackgroundColor("#4472C4");
headerRow.Style.Font.Color = "#FFFFFF";
// Apply currency format to a numeric column
Range priceColumn = sheet["C2:C100"];
priceColumn.Style.NumberFormat = "$#,##0.00";
// Auto-fit column widths for readability
sheet.AutoSizeColumn(0);
sheet.AutoSizeColumn(1);
sheet.AutoSizeColumn(2);
workbook.SaveAs("formatted-report.xlsx");
using IronXL;
using IronXL.Styles;
// Load CSV data
WorkBook workbook = WorkBook.LoadCSV("sales-report.csv",
fileFormat: ExcelFileFormat.XLSX,
ListDelimiter: ",");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Format the header row with bold text and background color
Range headerRow = sheet["A1:Z1"];
headerRow.Style.Font.Bold = true;
headerRow.Style.SetBackgroundColor("#4472C4");
headerRow.Style.Font.Color = "#FFFFFF";
// Apply currency format to a numeric column
Range priceColumn = sheet["C2:C100"];
priceColumn.Style.NumberFormat = "$#,##0.00";
// Auto-fit column widths for readability
sheet.AutoSizeColumn(0);
sheet.AutoSizeColumn(1);
sheet.AutoSizeColumn(2);
workbook.SaveAs("formatted-report.xlsx");
Imports IronXL
Imports IronXL.Styles
' Load CSV data
Dim workbook As WorkBook = WorkBook.LoadCSV("sales-report.csv", fileFormat:=ExcelFileFormat.XLSX, ListDelimiter:=",")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
' Format the header row with bold text and background color
Dim headerRow As Range = sheet("A1:Z1")
headerRow.Style.Font.Bold = True
headerRow.Style.SetBackgroundColor("#4472C4")
headerRow.Style.Font.Color = "#FFFFFF"
' Apply currency format to a numeric column
Dim priceColumn As Range = sheet("C2:C100")
priceColumn.Style.NumberFormat = "$#,##0.00"
' Auto-fit column widths for readability
sheet.AutoSizeColumn(0)
sheet.AutoSizeColumn(1)
sheet.AutoSizeColumn(2)
workbook.SaveAs("formatted-report.xlsx")
IronXL 透過 Style 屬性公開儲存格和區域樣式,該屬性反映了 Excel UI 中可用的格式設定選項。 數字格式遵循微軟所記載的 Excel 數字格式語法。 SetBackgroundColor 方法接受十六進位顏色字串,因此可以輕鬆地將品牌顏色應用於生成的報告。 請參閱完整的儲存格格式化 API 參考文件,以了解可用的樣式屬性。
如何在轉換 CSV 資料後加入圖表?
一旦 CSV 資料存入 Excel 工作簿,IronXL 即可直接根據該資料建立圖表。 圖表能將原始數據轉化為視覺化洞察,且無需在伺服器上安裝 Microsoft Excel。
using IronXL;
using IronXL.Drawing.Charts;
// Load CSV and convert to Excel format
WorkBook workbook = WorkBook.LoadCSV("sales-data.csv",
fileFormat: ExcelFileFormat.XLSX,
ListDelimiter: ",");
WorkSheet worksheet = workbook.DefaultWorkSheet;
// Create a column chart from the converted CSV data
IChart chart = worksheet.CreateChart(ChartType.Column, 10, 0, 25, 10);
// Add data series from the worksheet ranges
IChartSeries series = chart.AddSeries("A2:A10", "B2:B10");
series.Title = "Monthly Sales";
// Configure chart appearance
chart.SetTitle("Sales Performance");
chart.SetLegendPosition(LegendPosition.Bottom);
// Plot the chart and save the workbook
chart.Plot();
workbook.SaveAs("sales-with-chart.xlsx");
using IronXL;
using IronXL.Drawing.Charts;
// Load CSV and convert to Excel format
WorkBook workbook = WorkBook.LoadCSV("sales-data.csv",
fileFormat: ExcelFileFormat.XLSX,
ListDelimiter: ",");
WorkSheet worksheet = workbook.DefaultWorkSheet;
// Create a column chart from the converted CSV data
IChart chart = worksheet.CreateChart(ChartType.Column, 10, 0, 25, 10);
// Add data series from the worksheet ranges
IChartSeries series = chart.AddSeries("A2:A10", "B2:B10");
series.Title = "Monthly Sales";
// Configure chart appearance
chart.SetTitle("Sales Performance");
chart.SetLegendPosition(LegendPosition.Bottom);
// Plot the chart and save the workbook
chart.Plot();
workbook.SaveAs("sales-with-chart.xlsx");
Imports IronXL
Imports IronXL.Drawing.Charts
' Load CSV and convert to Excel format
Dim workbook As WorkBook = WorkBook.LoadCSV("sales-data.csv", fileFormat:=ExcelFileFormat.XLSX, ListDelimiter:=",")
Dim worksheet As WorkSheet = workbook.DefaultWorkSheet
' Create a column chart from the converted CSV data
Dim chart As IChart = worksheet.CreateChart(ChartType.Column, 10, 0, 25, 10)
' Add data series from the worksheet ranges
Dim series As IChartSeries = chart.AddSeries("A2:A10", "B2:B10")
series.Title = "Monthly Sales"
' Configure chart appearance
chart.SetTitle("Sales Performance")
chart.SetLegendPosition(LegendPosition.Bottom)
' Plot the chart and save the workbook
chart.Plot()
workbook.SaveAs("sales-with-chart.xlsx")
輸出
C# CSV 轉 XLSX:完整開發者指南:圖 3 - 將 CSV 檔案轉換為帶有圖表的 Excel 檔案的輸出結果
CreateChart 方法接受圖表類型和四個定位參數(上行、左列、下行、右列)。 AddSeries 方法將工作表單元格區域連結到圖表座標軸,從而建立動態視覺化效果,並在基礎資料變更時進行更新。 IronXL 透過 ChartType 枚舉支援長條圖、長條圖、折線圖、面積圖和圓餅圖類型。 如需查看支援的圖表配置完整清單,請參閱 IronXL 圖表教學指南。
如何將 CSV 轉換為 DataTable,然後再匯出至 Excel?
對於需要在匯出前進行資料處理的場景,透過 DataTable 轉換 CSV 資料可提供最大的靈活性。 此方法讓開發人員能在轉換過程中,透過標準的 .NET Standard 資料存取模式來篩選、轉換、排序或驗證資料列。
using IronXL;
using System.Data;
// Load CSV file into workbook
WorkBook sourceWorkbook = WorkBook.LoadCSV("input.csv",
fileFormat: ExcelFileFormat.XLSX,
ListDelimiter: ",");
// Convert worksheet to DataTable for manipulation
DataTable table = sourceWorkbook.DefaultWorkSheet.ToDataTable(true);
// Filter rows -- keep only rows where the third column value is greater than 100
DataRow[] filtered = table.Select("Column3 > 100");
DataTable filteredTable = filtered.Length > 0 ? filtered.CopyToDataTable() : table.Clone();
// Create new workbook from modified data
WorkBook outputWorkbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet outputSheet = outputWorkbook.CreateWorkSheet("Processed Data");
// Import filtered DataTable back into Excel
outputSheet.LoadFromDataTable(filteredTable, true);
// Save the final XLSX file
outputWorkbook.SaveAs("processed-output.xlsx");
using IronXL;
using System.Data;
// Load CSV file into workbook
WorkBook sourceWorkbook = WorkBook.LoadCSV("input.csv",
fileFormat: ExcelFileFormat.XLSX,
ListDelimiter: ",");
// Convert worksheet to DataTable for manipulation
DataTable table = sourceWorkbook.DefaultWorkSheet.ToDataTable(true);
// Filter rows -- keep only rows where the third column value is greater than 100
DataRow[] filtered = table.Select("Column3 > 100");
DataTable filteredTable = filtered.Length > 0 ? filtered.CopyToDataTable() : table.Clone();
// Create new workbook from modified data
WorkBook outputWorkbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet outputSheet = outputWorkbook.CreateWorkSheet("Processed Data");
// Import filtered DataTable back into Excel
outputSheet.LoadFromDataTable(filteredTable, true);
// Save the final XLSX file
outputWorkbook.SaveAs("processed-output.xlsx");
Imports IronXL
Imports System.Data
' Load CSV file into workbook
Dim sourceWorkbook As WorkBook = WorkBook.LoadCSV("input.csv", fileFormat:=ExcelFileFormat.XLSX, ListDelimiter:=",")
' Convert worksheet to DataTable for manipulation
Dim table As DataTable = sourceWorkbook.DefaultWorkSheet.ToDataTable(True)
' Filter rows -- keep only rows where the third column value is greater than 100
Dim filtered As DataRow() = table.Select("Column3 > 100")
Dim filteredTable As DataTable = If(filtered.Length > 0, filtered.CopyToDataTable(), table.Clone())
' Create new workbook from modified data
Dim outputWorkbook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
Dim outputSheet As WorkSheet = outputWorkbook.CreateWorkSheet("Processed Data")
' Import filtered DataTable back into Excel
outputSheet.LoadFromDataTable(filteredTable, True)
' Save the final XLSX file
outputWorkbook.SaveAs("processed-output.xlsx")
輸出
C# CSV 轉 XLSX:完整開發者指南:圖 4 - CSV 轉 DataTable 再轉 XLSX 輸出
ToDataTable 方法將工作表資料匯出至 .NET DataTable,布林參數控制是否將第一行視為列標題。 LoadFromDataTable 將資料匯入回去,當第二個參數為 true 時,將列標題寫入第一行。 此雙向轉換功能可讓您在 CSV 匯入與 Excel 輸出之間,充分運用 LINQ 和 ADO.NET 操作。 請參閱 IronXL DataTable 文件以了解其他選項。
如何將 XLSX 檔案儲存至流(stream)而非檔案路徑?
伺服器端應用程式通常需要將 Excel 檔案直接傳送至 HTTP 回應中,而非將臨時檔案寫入磁碟。 IronXL 支援為此目的將工作簿儲存至 MemoryStream。
using IronXL;
using System.IO;
// Load and convert CSV data
WorkBook workbook = WorkBook.LoadCSV("report-data.csv",
fileFormat: ExcelFileFormat.XLSX,
ListDelimiter: ",");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Save workbook to a memory stream instead of a file
using MemoryStream stream = new MemoryStream();
workbook.SaveAs(stream);
// Reset stream position for reading
stream.Position = 0;
// The stream is now ready to pass to an HTTP response, upload to cloud storage,
// or attach to an email. For ASP.NET Core:
// return File(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "report.xlsx");
// Write bytes to verify stream contains XLSX data
byte[] xlsxBytes = stream.ToArray();
Console.WriteLine($"Generated XLSX size: {xlsxBytes.Length} bytes");
using IronXL;
using System.IO;
// Load and convert CSV data
WorkBook workbook = WorkBook.LoadCSV("report-data.csv",
fileFormat: ExcelFileFormat.XLSX,
ListDelimiter: ",");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Save workbook to a memory stream instead of a file
using MemoryStream stream = new MemoryStream();
workbook.SaveAs(stream);
// Reset stream position for reading
stream.Position = 0;
// The stream is now ready to pass to an HTTP response, upload to cloud storage,
// or attach to an email. For ASP.NET Core:
// return File(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "report.xlsx");
// Write bytes to verify stream contains XLSX data
byte[] xlsxBytes = stream.ToArray();
Console.WriteLine($"Generated XLSX size: {xlsxBytes.Length} bytes");
Imports IronXL
Imports System.IO
' Load and convert CSV data
Dim workbook As WorkBook = WorkBook.LoadCSV("report-data.csv", fileFormat:=ExcelFileFormat.XLSX, ListDelimiter:=",")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
' Save workbook to a memory stream instead of a file
Using stream As New MemoryStream()
workbook.SaveAs(stream)
' Reset stream position for reading
stream.Position = 0
' The stream is now ready to pass to an HTTP response, upload to cloud storage,
' or attach to an email. For ASP.NET Core:
' Return File(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "report.xlsx")
' Write bytes to verify stream contains XLSX data
Dim xlsxBytes As Byte() = stream.ToArray()
Console.WriteLine($"Generated XLSX size: {xlsxBytes.Length} bytes")
End Using
將資料節省至流可避免磁碟讀寫操作,並省去清理臨時檔案的步驟。 此模式廣泛應用於 ASP.NET Core 的檔案下載端點,其中 XLSX 檔案會根據需求動態產生。 SaveAs(Stream) 重載將完整的、有效的 XLSX 歸檔寫入任何可寫流實例。
如何在轉換後的工作簿中處理多個工作表?
單一 XLSX 工作簿可包含多個工作表。 轉換 CSV 檔案後,工作簿預設僅包含一個工作表。 可透過程式設計建立額外的資料表,以整理相關資料。
using IronXL;
// Load primary CSV data
WorkBook workbook = WorkBook.LoadCSV("quarterly-data.csv",
fileFormat: ExcelFileFormat.XLSX,
ListDelimiter: ",");
// Rename the default sheet created from the CSV
WorkSheet q1Sheet = workbook.DefaultWorkSheet;
q1Sheet.Name = "Q1 Data";
// Create additional worksheets for summary information
WorkSheet summarySheet = workbook.CreateWorkSheet("Summary");
// Write summary headers and formulas
summarySheet["A1"].Value = "Total Records";
summarySheet["B1"].Formula = $"=COUNTA('{q1Sheet.Name}'!A:A)-1";
summarySheet["A2"].Value = "Data Sheet";
summarySheet["B2"].Value = q1Sheet.Name;
// Save the multi-sheet workbook
workbook.SaveAs("multi-sheet-report.xlsx");
using IronXL;
// Load primary CSV data
WorkBook workbook = WorkBook.LoadCSV("quarterly-data.csv",
fileFormat: ExcelFileFormat.XLSX,
ListDelimiter: ",");
// Rename the default sheet created from the CSV
WorkSheet q1Sheet = workbook.DefaultWorkSheet;
q1Sheet.Name = "Q1 Data";
// Create additional worksheets for summary information
WorkSheet summarySheet = workbook.CreateWorkSheet("Summary");
// Write summary headers and formulas
summarySheet["A1"].Value = "Total Records";
summarySheet["B1"].Formula = $"=COUNTA('{q1Sheet.Name}'!A:A)-1";
summarySheet["A2"].Value = "Data Sheet";
summarySheet["B2"].Value = q1Sheet.Name;
// Save the multi-sheet workbook
workbook.SaveAs("multi-sheet-report.xlsx");
Imports IronXL
' Load primary CSV data
Dim workbook As WorkBook = WorkBook.LoadCSV("quarterly-data.csv", fileFormat:=ExcelFileFormat.XLSX, ListDelimiter:=",")
' Rename the default sheet created from the CSV
Dim q1Sheet As WorkSheet = workbook.DefaultWorkSheet
q1Sheet.Name = "Q1 Data"
' Create additional worksheets for summary information
Dim summarySheet As WorkSheet = workbook.CreateWorkSheet("Summary")
' Write summary headers and formulas
summarySheet("A1").Value = "Total Records"
summarySheet("B1").Formula = $"=COUNTA('{q1Sheet.Name}'!A:A)-1"
summarySheet("A2").Value = "Data Sheet"
summarySheet("B2").Value = q1Sheet.Name
' Save the multi-sheet workbook
workbook.SaveAs("multi-sheet-report.xlsx")
CreateWorkSheet 方法在工作簿中新增一個新的空白工作表。 工作表可透過名稱或索引存取工作表,網址為 workbook.WorkSheets。 跨工作表公式引用使用標準的 Excel 表示法 'SheetName'!CellRef。 有關多工作表操作的更多資訊,請參閱 IronXL 多工作表指南。
下一步計劃是什麼?
使用 IronXL 在 C# 中將 CSV 檔案轉換為 XLSX 僅需幾行程式碼,即可產生完全符合標準的 Excel 工作簿,且無需依賴 Microsoft Office。 上述範例涵蓋完整的作業流程——從基本的 CSV 載入與儲存,到編碼處理、儲存格格式設定、圖表建立、DataTable 整合、串流輸出,以及多工作表工作簿。
本指南涵蓋的主要功能:
- 使用
WorkBook.LoadCSV和SaveAs進行基本的 CSV 到 XLSX 轉換 - 國際字元集的編碼規範
- 轉換後套用儲存格與範圍格式設定
- 圖表建立功能直接嵌入 XLSX 檔案中
- 針對已篩選及轉換資料的 DataTable 雙向傳輸
- 透過 MemoryStream 輸出以實現伺服器端檔案傳輸
- 從單一 CSV 來源建立多工作表工作簿
IronXL 支援在 .NET Framework、.NET Core 以及 .NET 5 至 10 版本上,於 Windows、Linux、macOS、Docker 及 Azure 環境進行部署。若要進一步了解其功能,請參閱 IronXL 文件、瀏覽 Excel API 物件參考,或查閱 IronXL 操作指南,其中涵蓋讀取 Excel 檔案、合併儲存格及套用公式等主題。 下載免費試用版以在開發環境中測試所有功能,或購買授權以進行生產環境部署。
!{--01001100010010010100001001010010010000010101001001011001010111110100011101000101010101 01000101111101010011010101000100000101010010010101000100010101000100010111110101011101001000110 1010101000100100001011111010100000101001001001111010001000101010101010000110101010100101010101011 10101010001010010010010010010000010100110001011111010000100100110001001111101000011010010111111010000110100101110--
常見問題解答
如何在 C# 中不使用 Microsoft Office 將 CSV 檔案轉換為 XLSX?
請使用 IronXL 的 WorkBook.LoadCSV 方法載入 CSV 檔案,然後呼叫 workbook.SaveAs('output.xlsx') 來寫入 XLSX 檔案。IronXL 無需 Microsoft Office 或 Open XML SDK —— 它使用自有的解析器來讀取和寫入 Excel 檔案。
在 C# 中,使用哪個 NuGet 套件可將 CSV 轉換為 Excel?
請透過 Visual Studio 中的 'Install-Package IronXL' 或 .NET CLI 中的 'dotnet add package IronXL' 安裝 IronXL NuGet 套件。此套件適用於 .NET Framework 4.6.2 及以上版本,以及所有 .NET Core 和 .NET 5 至 10 執行環境。
使用 IronXL 載入 CSV 檔案時,該如何指定分隔符?
請將 ListDelimiter 參數傳遞給 WorkBook.LoadCSV,例如:對於以逗號分隔的檔案,使用 WorkBook.LoadCSV('data.csv', fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ',');對於以分號分隔的檔案,則使用 ListDelimiter: ';'。
IronXL 能否處理包含非 ASCII 或國際字元的 CSV 檔案?
是的。請將 System.Text.Encoding 實例傳遞給 LoadCSV 的 encoding 參數。IronXL 會自動偵測大多數標準檔案的 UTF-8 編碼。若使用 Windows-1252、ISO-8859-1 或其他編碼,請明確指定編碼以保留國際化字元。
如何使用 IronXL 將圖表新增至由 CSV 資料生成的 Excel 檔案中?
載入 CSV 檔案後,請呼叫 worksheet.CreateChart(ChartType.Column, top, left, bottom, right) 來建立圖表,接著使用 chart.AddSeries 連結儲存格範圍,並在儲存前呼叫 chart.Plot()。IronXL 支援柱狀圖、條形圖、線圖、面積圖及圓餅圖等圖表類型。
如何在 .NET Core 中將生成的 XLSX 檔案儲存至 MemoryStream 以供 HTTP 回應使用?
呼叫 workbook.SaveAs(stream),其中 stream 為 MemoryStream 實例,然後在傳回前將 stream.Position 重設為 0。在 .NET Core 控制器中,傳回 File(stream, 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'report.xlsx')。
IronXL 能否在寫入 Excel 之前,將 CSV 資料轉換為 DataTable?
是的。請使用 LoadCSV 載入 CSV 檔案,接著呼叫 workbook.DefaultWorkSheet.ToDataTable(true) 將資料匯出至 DataTable。在過濾或轉換資料後,建立一個新工作簿,並呼叫 outputSheet.LoadFromDataTable(table, true) 將修改後的資料匯入。
IronXL 在從 CSV 轉換時是否支援多個工作表?
是的。載入 CSV 檔案後,工作簿會包含一個預設工作表。請呼叫 workbook.CreateWorkSheet('SheetName') 來新增工作表。各工作表可透過標準的 Excel 跨工作表公式語法相互參照。
IronXL 支援哪些 .NET 版本與平台?
IronXL 支援 .NET Framework 4.6.2 及後續版本、.NET Core 3.1,以及 .NET 5 至 .NET 10。它可在 Windows、Linux、macOS、Docker 和 Azure 上運行,因此適用於桌面端和伺服器端的部署。
在 CSV 轉換後,該如何套用儲存格格式(例如加粗標題和數字格式)?
載入 CSV 檔案後,透過 sheet['A1:Z1'] 存取一個範圍,並設定 Style.Font.Bold = true、Style.SetBackgroundColor('#hex') 或 Style.NumberFormat = '$#,##0.00'。IronXL 透過儲存格和範圍的 Style 屬性,提供完整的 Excel 樣式設定 API。


