IRONSOFTWAREHOME
USING IRONXL

在C#中使用IronXL建立Excel報表

Curtis Chau
Curtis Chau
Updated: 2026年5月8日

在C#中建立Excel報表是現代商務和.NET應用程式中的基本需求。 無論您是在產生財務報表、銷售分析或庫存儀表板,自動化建立Excel檔案和Excel試算表的過程,可以節省數小時的手動工作並減少錯誤。

IronXL 提供了一個功能強大且直觀的解決方案,使開發者可以在不需要Microsoft Office、MS Excel或傳統Interop依賴的情況下,用C#建立Excel報告。 與依賴Excel應用程式的OLE Automation或其他方法不同,IronXL能夠直接在程式碼中生成Excel工作簿和Excel資料,只需一行程式碼。 在本指南中,我們將教您如何使用IronXL建立Excel報表,並提供簡單易學的範例程式碼,讓您輕鬆整合到自己的專案中!

什麼是IronXL及其為何用於生成Excel檔案?

IronXL是一個.NET Excel程式庫,允許開發人員從C#或Visual Basic源程式碼直接建立、讀取Excel試算表及操作Excel檔案。 IronXL與依賴完整Excel應用或通過Open XML SDK逆向工程的方法不同,無需安裝Excel或第三方依賴即可在Windows、Linux、macOS和雲環境中工作。 這使它非常適合伺服器端的Excel報告、自動化工作流程以及建基於.NET Core或.NET Framework的Web應用。

對於從手動Excel過程、老式程式庫或需要瀏覽各種XML命名空間的Open XML生產工具工作流程過渡的團隊,IronXL提供了一個直觀的API。 它同時支持傳統的XLS文件和現代的XLSX文件,後者基本上是包含XML文件和各種文件夾的ZIP文件。 無論您是想生成新的Excel工作簿、操作多個工作頁,還是從外部程式碼載入Excel資料,IronXL都能大幅簡化過程,無需了解底層格式。

使用IronXL開始建立Excel檔案

設置IronXL來生成Excel報告只需幾分鐘。 通過Visual Studio中的NuGet Package Manager安裝程式庫:

PM > Install-Package IronXL.Excel

立即下載IronXL並開始自動生成您的Excel報表。

安裝完成後,建立您的第一個Excel報告只需要幾行程式碼:

using IronXL;
// Create a new Excel workbook for reports
WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
// Add a worksheet for the report
WorkSheet reportSheet = workBook.CreateWorkSheet("Monthly Report");
// Add a title
reportSheet["A1"].Value = "Sales Report - January 2024";
reportSheet["A1"].Style.Font.Bold = true;
// Save the Excel report
workBook.SaveAs("MonthlyReport.xlsx");

這段程式碼建立了一個帶有格式化標題的新Excel報告文件。 熟悉的儲存格參考語法(reportSheet["A1"])使開發人員能夠輕鬆地指定資料應出現的位置,就像手動操作Excel一樣。

輸出

在C#中使用IronXL建立Excel報表:影像1 - 範例Excel輸出

從多個來源載入資料

現實世界的Excel報告很少使用靜態資料。 IronXL擅於整合來自各種格式、API、新DataTable來源或甚至不同的XML檔案的Excel資料。 這使其非常適合伺服器端或Web應用中的動態C# Excel報告生成。

資料庫整合

對於資料庫驅動的Excel報表,IronXL能無縫地與ADO.NET DataTables協同工作:

using System.Data;
using System.Data.SqlClient;
// Fetch data from database
string connectionString = "Server=localhost;Database=Sales;Integrated Security=true;";
DataTable salesData = new DataTable();
using (SqlConnection conn = new SqlConnection(connectionString))
{
    SqlDataAdapter adapter = new SqlDataAdapter(
        "SELECT ProductName, Quantity, Revenue FROM MonthlySales", conn);
    adapter.Fill(salesData);
}
// Create Excel report from DataTable
WorkBook workBook = WorkBook.Create();
WorkSheet sheet = workBook.CreateWorkSheet("Sales Data");
// Add headers
sheet["A1"].Value = "Product";
sheet["B1"].Value = "Quantity";
sheet["C1"].Value = "Revenue";
// Populate data
int row = 2;
foreach (DataRow dataRow in salesData.Rows)
{
    sheet[$"A{row}"].Value = dataRow["ProductName"];
    sheet[$"B{row}"].Value = dataRow["Quantity"];
    sheet[$"C{row}"].Value = dataRow["Revenue"];
    row++;
}

此方法可將銷售資訊直接從SQL Server載入到您的Excel報告中。 DataTable整合意味著您可以在不修改的情況下使用現有的資料存取程式碼。 對於更複雜的場景,請查看如何從SQL資料庫載入Excel

使用集合

對於記憶體中的資料、來自API響應的Excel資料或新DataTable,集合能使Excel工作頁易於填充,無需Microsoft Excel或第三方依賴:

var salesRecords = new List<SalesRecord>
{
    new SalesRecord { Product = "Widget A", Units = 150, Price = 29.99m },
    new SalesRecord { Product = "Widget B", Units = 82, Price = 49.99m }
};
// Convert collection to Excel
for (int i = 0; i < salesRecords.Count; i++)
{
    sheet[$"A{i+2}"].Value = salesRecords[i].Product;
    sheet[$"B{i+2}"].Value = salesRecords[i].Units;
    sheet[$"C{i+2}"].Value = salesRecords[i].Price;
}

此方法允許在.NET應用程式中直接用C#建立Excel報表,使生成多個工作頁或XLSX檔案的過程比手動OLE Automation或反向工程XML檔案要簡單得多。

輸出

在C#中使用IronXL建立Excel報表:影像2 - 從資料輸出的範例工作頁

格式化專業的Excel報表

僅有原始資料並不能構成一份專業的報表。 IronXL提供全面的儲存格格式選項,以建立精緻的商業就緒Excel文件。 以下程式碼展示了使用IronXL的簡單性:

using IronXL;
using IronXL.Styles;

class Program
{
    static void Main(string[] args)
    {
        // Create a new workbook
        var workbook = WorkBook.Create(ExcelFileFormat.XLSX);
        // Add a new worksheet
        var sheet = workbook.CreateWorkSheet("MySheet");
        // Add header values
        sheet["A1"].Value = "Product";
        sheet["B1"].Value = "Quantity";
        sheet["C1"].Value = "Price";
        // Add sample data rows
        sheet["A2"].Value = "Laptop";
        sheet["B2"].Value = 5;
        sheet["C2"].Value = 1299.99;
        sheet["A3"].Value = "Headphones";
        sheet["B3"].Value = 15;
        sheet["C3"].Value = 199.50;
        sheet["A4"].Value = "Keyboard";
        sheet["B4"].Value = 10;
        sheet["C4"].Value = 89.99;
        sheet["A5"].Value = "Monitor";
        sheet["B5"].Value = 7;
        sheet["C5"].Value = 249.00;
        // Header formatting
        var headerRange = sheet["A1:C1"];
        headerRange.Style.Font.Bold = true;
        headerRange.Style.SetBackgroundColor("#4472C4");
        headerRange.Style.Font.Color = "#FFFFFF";
        headerRange.Style.BottomBorder.Type = BorderType.Thick;
        // Number formatting for currency
        sheet["C:C"].FormatString = "$#,##0.00";
        // Alternating row colors for readability
        for (int row = 2; row <= 10; row++)
        {
            if (row % 2 == 0)
            {
                sheet[$"A{row}:C{row}"].Style.SetBackgroundColor("#F2F2F2");
            }
        }
        // Column width adjustment
        sheet.Columns[0].Width = 15 * 256; // Width in 1/256th of character width
        sheet.Columns[2].Width = 12 * 256;
        // Add borders around data
        var dataRange = sheet["A1:C10"];
        dataRange.Style.TopBorder.Type = BorderType.Thin;
        dataRange.Style.RightBorder.Type = BorderType.Thin;
        dataRange.Style.BottomBorder.Type = BorderType.Thin;
        dataRange.Style.LeftBorder.Type = BorderType.Thin;
        // Save the workbook to a file
        workbook.SaveAs("MyWorkbook.xlsx");
    }
}

這些格式選項將基本資料轉化為專業報告。 風格API涵蓋從字體和顏色邊界和對齊的一切,提供對Excel報表外觀的完全控制。 對於進階格式需求,請探索條件格式,以自動突出顯示重要資料。

在C#中使用IronXL建立Excel報表:影像3 - 格式化的Excel輸出

使用公式進行動態Excel報表計算

Excel的強大之處在於其公式,IronXL完全支援Excel公式建立

// Add formula for row totals
sheet["D1"].Value = "Total";
sheet["D2"].Formula = "=B2*C2";
// Copy formula down the column
for (int row = 3; row <= 10; row++)
{
    sheet[$"D{row}"].Formula = $"=B{row}*C{row}";
}
// Add summary formulas
sheet["A12"].Value = "Summary";
sheet["B12"].Formula = "=SUM(B2:B10)";
sheet["C12"].Formula = "=AVERAGE(C2:C10)";
sheet["D12"].Formula = "=SUM(D2:D10)";

公式支援包括所有標準的Excel函式,如SUM, AVERAGE, IF, VLOOKUP等。 IronXL自動處理公式依賴性和計算順序,使具有復雜計算的Excel報告生成變得簡單明瞭。 了解更多IronXL中的數學函式

在C#中使用IronXL建立Excel報表:影像4 - 含公式的範例輸出

基於範本的報表

對於周期性的Excel報表或標準化的工作簿,IronXL支援基於範本的生成,允許開發者從範本中建立Excel文件,無需處理Open XML SDK、rels文件或各種文件夾:

// Load existing template
Workbook templateBook = Workbook.Load("ReportTemplate.xlsx");
Worksheet templateSheet = templateBook.DefaultWorksheet;
// Find and replace template markers
foreach (var cell in templateSheet["A1:Z100"])
{
    if (cell.Text.Contains("{{CompanyName}}"))
        cell.Value = cell.Text.Replace("{{CompanyName}}", "Acme Corp");
    if (cell.Text.Contains("{{ReportDate}}"))
        cell.Value = cell.Text.Replace("{{ReportDate}}", DateTime.Now.ToString("MMMM yyyy"));
}
// Save as new report
templateBook.SaveAs($"Report_{DateTime.Now:yyyyMMdd}.xlsx");

此方法保持一致的格式,同時更新動態內容,非常適合月度報表或標準化文件。

在C#中使用IronXL建立Excel報表:影像5 - 報表範本與使用範本建立的Excel文件比較

最佳實踐與故障排除

在實施Excel報表生成時,請注意以下提示:

  • 大文件的記憶體用量:處理資料時,要逐塊處理而非載入整個資料集(Microsoft關於大Excel文件的建議
  • 日期格式問題:使用DateTime.ToOADate()格式相容Excel日期(Excel日期系統解釋
  • 文件鎖定錯誤:始終使用MemoryStream方法來適當處理Excel物件。
  • 欠缺樣式:某些樣式屬性需要先設定背景顏色

結論

IronXL將Excel報告生成從繁瑣的手動過程轉變為自動化的可靠工作流程。 憑藉其直觀的API、跨平台支援和全面的功能集,開發者可以在幾分鐘內建立專業的Excel報表,而非花費數小時。 便捷的資料整合、強大的格式選項和公式支持使IronXL成為任何C#開發人員處理Excel報告的必要工具。 對有興趣的開發者,IronXL提供免費試用進一步的授權選項供公司及個人選擇。

第一步:
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天試用金鑰
無需信用卡或帳戶建立