跳過到頁腳內容
使用 IRONXL

Untitled Blog Post

在現代商業和.NET應用程式中,使用 C# 建立 Excel 報表是一項基本要求。 無論您是產生財務報表、銷售分析還是庫存儀表板,自動化建立 Excel 文件和 Excel 電子表格的過程都可以節省數小時的人工時間,同時減少錯誤。

IronXL為開發人員提供了一個強大且直覺的解決方案,無需 Microsoft Office、MS Excel 或傳統的互通依賴項,即可使用 C 語言建立 Excel 報表。 與 OLE 自動化或依賴 Excel 應用程式的方法不同, IronXL允許在需要時僅用​​一行程式碼直接產生 Excel 工作簿和 Excel 資料。 在本指南中,我們將教您如何使用IronXL建立 Excel 報表,並提供易於理解的範例程式碼,您可以輕鬆地將其應用到自己的專案中!

IronXL是什麼?為什麼要使用它來產生Excel檔案?

IronXL是一個.NET Excel 庫,它使開發人員能夠直接從 C# 或 Visual Basic 原始碼建立 Excel、讀取 Excel 電子表格和操作 Excel 檔案。 與依賴完整 Excel 應用程式或透過 Open XML SDK 進行逆向工程的 Microsoft Office Interop 方法不同, IronXL可在 Windows、Linux、macOS 和雲端環境中運行,無需安裝 Excel 或依賴第三方軟體。 這使其成為伺服器端 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套件管理器安裝庫:

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");
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");
$vbLabelText   $csharpLabel

這段程式碼會建立一個帶有格式化標題的新 Excel 報表檔案。 熟悉的儲存格引用語法(reportSheet["A1"])使開發人員能夠輕鬆地指定資料應該顯示的位置,就像手動使用 Excel 一樣。

輸出

如何使用IronXL在 C# 中建立 Excel 報表:圖 1 - Excel 輸出範例

從多個資料來源載入數據

在實際應用中,Excel報表很少使用靜態資料。 IronXL擅長整合來自各種格式、API、新的資料表來源,甚至是幾個不同的 XML 檔案的 Excel 資料。 這使其非常適合在伺服器端或 Web 應用程式中產生動態 C# Excel 報表。

資料庫集成

對於資料庫驅動的 Excel 報表, IronXL可以與.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++;
}
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++;
}
$vbLabelText   $csharpLabel

這種方法可以直接將銷售資料從 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;
}
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;
}
$vbLabelText   $csharpLabel

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

輸出

如何使用IronXL在 C# 中建立 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");
    }
}
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");
    }
}
$vbLabelText   $csharpLabel

這些格式化選項可以將基本資料轉換為專業報告。 樣式 API 涵蓋了從字體和顏色邊框和對齊方式的所有內容,從而可以完全控制 Excel 報表的外觀。 對於更進階的格式設定需求,可以探索條件格式,以自動反白顯示重要資料。

如何使用IronXL在 C# 中建立 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)";
// 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)";
$vbLabelText   $csharpLabel

公式支援包括所有標準 Excel 函數,如 SUM、AVERAGE、IF、VLOOKUP 等。 IronXL可自動處理公式依賴關係和計算順序,讓產生包含複雜計算的 Excel 報表變得簡單。 了解更多關於IronXL中的數學函數的資訊。

如何使用IronXL在 C# 中建立 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");
// 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");
$vbLabelText   $csharpLabel

這種方法在更新動態內容的同時保持格式一致,非常適合用於每月報告或標準化文件。

如何使用IronXL在 C# 中建立 Excel 報表:圖 5 - 報表範本與使用該範本建立的 Excel 檔案比較

最佳實踐和故障排除

在進行Excel報表產生時,請記住以下幾點:

*處理大型文件時的記憶體使用情況:*分塊處理數據,而不是載入整個數據集( 微軟針對大型 Excel 文件的建議日期格式問題:使用 DateTime.ToOADate() 處理與 Excel 相容的日期( Excel 日期系統詳解檔案鎖定錯誤:請始終使用 using 語句或新的 MemoryStream 方法正確釋放 Excel 物件。 缺少樣式:**某些樣式屬性需要先設定背景顏色。

結論

IronXL將 Excel 報表產生從繁瑣的手動流程轉變為自動化、可靠的工作流程。 憑藉其直覺的 API、跨平台支援和全面的功能集,開發人員可以在幾分鐘內而不是幾個小時內建立專業的 Excel 報表。 IronXL具備易於資料整合、強大的格式設定選項和公式支援等優點,是任何使用 Excel 報表的 C# 開發人員必不可少的工具。 對於有興趣的開發者, IronXL提供免費試用版,並為公司和個人提供更多授權選項

立即開始在您的項目中使用 IronXL 並免費試用。

第一步:
green arrow pointer

常見問題解答

如何在 C# 中創建 Excel 報告?

您可以使用 IronXL 庫在 C# 中創建 Excel 報告,該庫簡化了生成包含格式、公式和數據庫集成功能的 Excel 文件的過程。

使用 IronXL 生成 Excel 報告有什麼好處?

IronXL 提供了一種高效方法來自動生成 Excel 報告,減少了手動工作量並最小化了錯誤。它支持多種功能,例如高級格式、公式計算和與數據庫的無縫集成。

在使用 IronXL 創建 Excel 報告時能夠整合數據庫嗎?

是的,IronXL 允許與數據庫輕鬆集成,使您能夠直接從數據庫中提取數據到 Excel 報告中。

可以使用 IronXL 對 Excel 報告進行自定義格式化嗎?

當然可以。IronXL 支持自定義格式,允許您使用特定的字體、顏色和單元格樣式來設計您的 Excel 報告,以符合專業標準。

IronXL 是否支持 Excel 報告中的公式計算?

是的,IronXL 支持在 Excel 報告中使用公式,從而在生成的 Excel 文件中進行計算和數據分析。

為什麼要在我的 .NET 應用程序中自動化 Excel 報告生成?

在您的 .NET 應用程序中自動化 Excel 報告生成可以節省時間,減少人為錯誤,並通過消除手動報告創建中重複的任務來提高生產力。

在創建 Excel 報告時,IronXL 能處理大數據集嗎?

IronXL 被設計成可以高效處理大數據集,這使其非常適合生成需要處理大量數據的 Excel 報告。

使用 IronXL 可以創建哪些類型的 Excel 報告?

使用 IronXL,您可以根據您的特定業務需求創建各種類型的 Excel 報告,如財務報表、銷售分析、庫存儀表板等。

IronXL 如何幫助減少 Excel 報告創建中的手動工作量?

IronXL 通過以編程方式生成 Excel 文件來自動化報告創建過程,這大大減少了涉及格式化、數據輸入和計算的手動工作。

IronXL 適合創建專業的 Excel 報告嗎?

是的,IronXL 適合創建專業的 Excel 報告,提供多種功能,確保您的報告格式良好、準確,並可立即用於商業用途。

Jordi Bardia
軟體工程師
Jordi 在 Python、C# 和 C++ 上最得心應手,當他不在 Iron Software 展現技術時,便在做遊戲編程。在分担產品测测试,產品開發和研究的责任時,Jordi 為持续的產品改進增值。他说这种多样化的经验使他受到挑战并保持参与, 而这也是他与 Iron Software 中工作一大乐趣。Jordi 在佛罗里达州迈阿密长大,曾在佛罗里达大学学习计算机科学和统计学。

鋼鐵支援團隊

我們每週 5 天,每天 24 小時在線上。
聊天
電子郵件
打電話給我