如何在 C# 中使用 IronXL 創建 Excel 生成報告
使用 IronXL 在 C# 中建立 Excel 報表
在現代商業和 .NET 應用程式中,使用 C# 建立 Excel 報表是一項基本要求。 無論您是產生財務報表、銷售分析還是庫存儀表板,自動化建立 Excel 文件和 Excel 電子表格的過程都可以節省數小時的人工時間,同時減少錯誤。
IronXL為開發人員提供了一個強大且直覺的解決方案,可以使用 C# 建立 Excel 報表,而無需 Microsoft Office、MS Excel 或傳統的互通依賴項。 與 OLE 自動化或依賴 Excel 應用程式的方法不同,IronXL 允許在需要時僅用一行程式碼直接產生 Excel 工作簿和 Excel 資料。 在本指南中,我們將教您如何使用 IronXL 建立 Excel 報表,並提供易於理解的範例程式碼,您可以輕鬆地將其應用到自己的專案中!
IronXL是什麼?為什麼要使用它來產生Excel檔案?
IronXL 是一個 .NET Excel 庫,它使開發人員能夠直接從 C# 或 Visual Basic 原始碼建立、讀取 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");IRON VB CONVERTER ERROR developers@ironsoftware.com這段程式碼會建立一個帶有格式化標題的新 Excel 報表檔案。 熟悉的儲存格引用語法( reportSheet["A1"] )使開發人員能夠輕鬆地指定資料應該出現的位置,就像手動使用 Excel 一樣。
輸出
從多個資料來源載入數據
在實際應用中,Excel報表很少使用靜態資料。 IronXL 擅長整合來自各種格式、API、新的資料表來源,甚至是幾個不同的 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++;
}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++;
}IRON VB CONVERTER ERROR developers@ironsoftware.com這種方法可以直接將銷售資料從 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;
}IRON VB CONVERTER ERROR developers@ironsoftware.com此方法允許直接在 .NET 應用程式中使用 C# 建立 Excel 報表,使得產生多個工作表或 XLSX 檔案的過程比手動 OLE 自動化或逆向工程 XML 檔案要簡單得多。
輸出
格式化專業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");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.com這些格式化選項可以將基本資料轉換為專業報告。 樣式 API 涵蓋了從字體和顏色到邊框和對齊方式的所有內容,從而可以完全控制 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)";IRON VB CONVERTER ERROR developers@ironsoftware.com公式支援包括所有標準 Excel 函數,如SUM 、 AVERAGE 、 IF 、 VLOOKUP等。 IronXL 可自動處理公式依賴關係和計算順序,讓產生包含複雜計算的 Excel 報表變得簡單。 了解更多關於IronXL 中的數學函數的資訊。
基於範本的報告
對於定期生成的 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");IRON VB CONVERTER ERROR developers@ironsoftware.com這種方法在更新動態內容的同時保持格式一致,非常適合用於每月報告或標準化文件。
如何使用 IronXL 在 C# 中建立 Excel 報表:圖 5 - 報表範本與使用該範本建立的 Excel 檔案對比
最佳實踐和故障排除
在進行Excel報表產生時,請記住以下幾點:
- 處理大型檔案時的記憶體使用情況:分塊處理數據,而不是載入整個資料集(微軟針對大型 Excel 檔案的建議)
- 日期格式問題:使用
DateTime.ToOADate()處理與 Excel 相容的日期( Excel 日期系統詳解) - 檔案鎖定錯誤:請始終使用
using語句或新的MemoryStream方法正確釋放 Excel 物件。 - 缺少樣式:某些樣式屬性需要先設定背景顏色。
結論
IronXL 將 Excel 報表產生從繁瑣的手動流程轉變為自動化、可靠的工作流程。 憑藉其直覺的 API、跨平台支援和全面的功能集,開發人員可以在幾分鐘內而不是幾個小時內建立專業的 Excel 報表。 IronXL 具備易於資料整合、強大的格式設定選項和公式支援等優點,是任何使用 Excel 報表的 C# 開發人員必不可少的工具。 對於有興趣的開發者,IronXL 提供免費試用版,並為公司和個人提供更多授權選項。
!{--01001100010010010100001001010010010000010101001001011001010111110100011101000101010101 01000101111101010011010101000100000101010010010101000100010101000100010111110101011101001000110 1010101000100100001011111010100000101001001001111010001000101010101010000110101010100101010101011 10101010001010010010010010010000010100110001011111010000100100110001001111101000011010010111111010000110100101110--
常見問題解答
IronXL 在 C# 中有何用途?
IronXL.Excel 是一個功能強大的 C# 函式庫,可讓開發人員輕鬆建立、編輯和讀取 Excel 檔案。它支援以進階格式、公式和資料整合來產生專業的 Excel 報表。
如何使用 IronXL.Excel 建立 Excel 報表?
若要使用 IronXL.Excel 建立 Excel 報表,您可以利用其強大的 API 來新增資料、格式化儲存格、套用公式,以及與資料庫整合,而這一切都在 C# 環境中進行。
IronXL.Excel 報表產生器提供哪些功能?
IronXL.Excel 提供的功能包括:單元格格式化、公式應用、資料驗證、圖表建立,以及無縫資料庫整合,以產生全面的 Excel 報表。
IronXL 支援資料庫整合嗎?
是的,IronXL.Excel 支援資料庫整合,可讓您直接從資料庫中抽取資料,並將其納入 Excel 報表中,簡化資料分析和報表。
IronXL 能處理複雜的 Excel 公式嗎?
IronXL.Excel 可以處理各種 Excel 公式,讓開發人員可以執行複雜的計算,並在 Excel 報表內自動處理資料。
是否可以使用 IronXL.Excel 格式化 Excel 單元格?
IronXL.Excel 提供廣泛的格式化功能,可讓您自訂儲存格外觀,包括字體樣式、顏色、邊框等,以建立視覺上吸引人的 Excel 報表。
我可以用 IronXL 在 Excel 中建立圖表嗎?
是的,IronXL.Excel 可讓您在 Excel 試算表中建立各種圖表,有助於直觀地表示資料,並提高報告的可解釋性。
IronXL.Excel 如何簡化 Excel 報表的製作過程?
IronXL.Excel 簡化了 Excel 報表的製作過程,提供了一套全面的功能,簡化了資料輸入、格式化、計算和輸出的過程,所有這些都在 C# 程式設計環境中完成。
IronXL 可以有效地處理大型數據集嗎?
IronXL 已針對效能進行最佳化,使其能有效率地處理大型資料集,因此非常適合在不影響速度或可靠性的情況下產生複雜的報表。
IronXL 是為何種程式語言所設計?
IronXL 專為 C# 設計,為在 .NET Framework 內工作的開發人員提供無縫整合與功能。









