IRONSOFTWAREHOME
USING IRONXL

C# CSV 轉 XLSX:將 CSV 檔案轉換為 Excel 格式

Curtis Chau
Curtis Chau
Updated: 2026年6月28日

將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");

輸出

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文件的需要。
  • 視覺化圖表:可以從工作表資料建立條形圖、折線圖、餅圖和其他可視化。 IronXL支持直接通過API進行圖表建立,因此圖表嵌入在XLSX文件中。
  • 單元格格式化:控制字體、顏色、邊框和數字格式,以製作專業文件。 CSV文件只儲存原始值; XLSX在資料旁邊保留顯示層。
  • 資料驗證:限制單元格輸入只能是特定值或範圍,防止與終端使用者共享的文件中出現資料輸入錯誤。
  • 密碼保護:用密碼保護工作表和工作簿,以控制讀取和寫入權限,這是CSV中完全不存在的功能。

這些功能使XLSX格式成為報告、儀表盤、財務模型以及任何需要超過原始資料儲存的應用的標準選擇。

如何在.NET專案中安裝IronXL?

IronXL作為NuGet包發佈。 從Visual Studio中的程式包管理器控制台安裝它:

PM > Install-Package IronXL.Excel

或者使用.NET CLI:

dotnet add package IronXL.Excel

安裝後,在任何處理電子表格的文件中新增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");

輸出XLSX文件

C# CSV至XLSX:完整開發者指南:圖像2 - CSV至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");

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

輸出

C# CSV至XLSX:完整開發者指南:圖像3 - CSV文件轉Excel文件並附帶圖表的輸出

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

輸出

C# CSV至XLSX:完整開發者指南:圖像4 - CSV到DataTable到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");

保存到流避免磁盤讀寫操作,並消除了清理臨時文件的需要。 此模式在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");

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文件合併單元格載入電子表格下載試用版以在開發環境中測試所有功能,或購買授權以進行生產部署。

第一步:
arrow pointer
Curtis Chau
技術作家

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

...
閱讀更多

相關文章

Key in blue circle

立即免費取得 30 天試用金鑰

Your trial license will be sent to your email address

無任何限制。100% 解鎖。無需信用卡。

bullet_checked無需信用卡或建立帳號無任何限制。100% 解鎖。無需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
預約您的免費即時演示
Booking Badge

全球數百萬工程師的信賴

Iron Software的客戶標誌
獲得無義務諮詢
填寫以下表格或電郵sales@ironsoftware.com
您的資料將始終保密。
全球數百萬工程師的信賴
Iron Software的客戶標誌
立即獲取您的30天試用金鑰
無需信用卡或帳戶建立