
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");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")輸出

LoadCSV方法接受三個關鍵參數:文件名、目標Excel格式常數以及源文件中使用的分隔符。此方法在建立結構化的XLSX文件的同時保留原始CSV工作表中的所有字串資料和數字值。WorkBook類別作為所有電子表格操作的中央樞紐。 一旦載入,CSV資料即可通過工作表存取,從而在保存最終Excel文件之前進行進一步操作。
要載入現有XLSX文件而不是CSV,請使用WorkBook.Load("file.xlsx"),它會自動根據文件擴展名檢測格式。 這使得構建可接受CSV或Excel輸入並將其標準化為單一輸出格式的管道變得簡單。
將CSV轉換為Excel格式有什麼好處?
XLSX格式在大多數資料管理方案中相較於簡單的CSV提供了可以衡量的優勢:
- 多個工作表:Excel文件支持在單個工作簿內多個工作表,這使得資料儲存比CSV文件更有條理。 單個XLSX文件可以包含數十個工作表,涵蓋不同的時期、地區或類別。
- 公式支持:將復雜的計算、匯總和條件邏輯直接寫入單元格。 當源資料發生更改時,Excel公式會自動重新計算,消除了手動重新處理CSV文件的需要。
- 視覺化圖表:可以從工作表資料建立條形圖、折線圖、餅圖和其他可視化。 IronXL支持直接通過API進行圖表建立,因此圖表嵌入在XLSX文件中。
- 單元格格式化:控制字體、顏色、邊框和數字格式,以製作專業文件。 CSV文件只儲存原始值; XLSX在資料旁邊保留顯示層。
- 資料驗證:限制單元格輸入只能是特定值或範圍,防止與終端使用者共享的文件中出現資料輸入錯誤。
- 密碼保護:用密碼保護工作表和工作簿,以控制讀取和寫入權限,這是CSV中完全不存在的功能。
這些功能使XLSX格式成為報告、儀表盤、財務模型以及任何需要超過原始資料儲存的應用的標準選擇。
如何在.NET專案中安裝IronXL?
IronXL作為NuGet包發佈。 從Visual Studio中的程式包管理器控制台安裝它:
或者使用.NET CLI:
安裝後,在任何處理電子表格的文件中新增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");IRON VB CONVERTER ERROR developers@ironsoftware.com輸出XLSX文件

IronXL自動檢測常見的編碼格式,包括大多數標準CSV文件的UTF-8。 對於具有非標準編碼的文件,如Windows-1252、ISO-8859-1或Shift-JIS,請將LoadCSV調用。 Microsoft Learn上的Encoding類別文件列出了所有支持的編碼名稱。
從遠程伺服器獲取CSV資料時,使用LoadCSV載入。 此模式適用於雲端託管的.NET應用程式,CSV文件作為HTTP響應從第三方API到達。
在CSV轉換後如何應用單元格格式化?
原始CSV資料不包含格式化資訊。 轉換為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中可用的格式化選項相似。 數字格式遵循Microsoft記錄的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");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")輸出

CreateChart方法接受圖表型別和四個定位參數(頂行、左列、底行、右列)。 AddSeries方法將工作表單元格範圍連接到圖表軸,建立在基礎資料更改時更新的動態視覺化。 IronXL通過ChartType枚舉支持柱形圖、條形圖、折線圖、面積圖和餅圖型別。 欲了解支持的全面圖表配置列表,請參見IronXL圖表教程。
如何將CSV轉換為DataTable,然後轉換為Excel?
對於需要在導出之前進行資料操作的場景,通過DataTable轉換CSV資料可以提供最大的靈活性。 此方法使開發者可以在轉換過程中使用標準.NET資料存取模式篩選、轉換、排序或驗證行。
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")輸出

ToDataTable方法將工作表資料導出為.NET DataTable,而布林參數控制是否將第一行視為列標題。 true時,將列標題作為第一行寫入。 此雙向轉換使得在CSV攝取和Excel輸出之間完全使用LINQ和ADO.NET操作成為可能。 查看IronXL DataTable文件以獲取更多選項。
如何將XLSX文件保存到流而不是文件路徑?
伺服器端應用程式通常需要將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");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");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多工作表指南。
您接下來的步驟是什麼?
使用C#和IronXL將CSV文件轉換為XLSX僅需幾行程式碼,並生成完全合規的Excel工作簿,不需依賴於Microsoft Office。 上面的範例涵蓋了完整的工作流程——從基本的CSV載入和保存到編碼處理、單元格格式化、圖表建立、DataTable整合、流輸出和多工作簿。
本指南涉及的關鍵功能:
- 基礎的CSV到XLSX轉換,使用
SaveAs。 - 國際字元集的編碼指定。
- 在轉換後應用的單元格和範圍格式化。
- 直接嵌入在XLSX文件中的圖表建立。
- 過濾和轉換資料的DataTable回圈。
- 用於伺服器端文件傳輸的記憶體流輸出。
- 從單個CSV來源構建多工作簿。
IronXL在.NET Framework、.NET Core和.NET 5到10跨平臺支持Windows、Linux、macOS、Docker和Azure部署。更多功能,請查看IronXL文件、瀏覽Excel API物體參考,或查看IronXL怎樣做指南,如讀取Excel文件、合併單元格和載入電子表格。 下載試用版以在開發環境中測試所有功能,或購買授權以進行生產部署。

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。
相關文章



