跳至頁尾內容
USING IRONXL

如何使用 IronXL 在 C# 中將資料儲存為 CSV 格式

Managing CSV Files with IronXL in C

在現代C#應用程式中,管理CSV文件是基本需求,從生成商業報告到匯出資料庫記錄。 雖然.NET提供基本的文件寫入功能,但要有效處理CSV文件,尤其是涉及特殊字元、多種資料型別和大型資料集的情況,則需要更強大的解決方案。 IronXL簡化了整個過程,提供了一個全面的API來處理CSV操作,如C#保存至CSV,並完全相容Excel。

本教程展示了如何利用IronXL的強大功能在您的C#應用程式中建立、保存和管理CSV文件。 您將學習如何處理多種資料來源的實用技術,從簡單的集合到複雜的DataTable,同時保持乾淨且可維護的程式碼。

C# 使用IronXL保存為CSV格式:圖片1 - IronXL

開始使用 IronXL

在進入CSV操作之前,您需要在項目中安裝IronXL。 此程式庫支持.NET Framework 4.6.2+和.NET Core 2+,使其與舊的和現代的應用程式相容。 IronXL還提供了優良的跨平台支持,可以無縫運行於Windows、Linux和macOS環境。

C# 使用IronXL保存為CSV格式:圖片2 - 跨平台

打開Visual Studio,轉到Package Manager Console並鍵入以下命令:

Install-Package IronXL.Excel

C# 使用IronXL保存為CSV格式:圖片3 - 安裝

或通過.NET CLI

dotnet add package IronXL.Excel

安裝後,將IronXL命名空間新增到您的C#文件中,以存取所有CSV管理功能,如寫入資料:

using IronXL;
using IronXL;
Imports IronXL
$vbLabelText   $csharpLabel

該簡單設置可讓您立即存取強大的電子表格操作功能。 與需要Excel Interop或複雜的CSV解析邏輯的傳統方法不同,IronXL提供了一個直觀的API,處理幕後的復雜性。 此程式庫獨立運作,無需安裝Microsoft Office,非常適合伺服器部署和容器化應用程式。

如果在安裝或初始化程式庫時發生錯誤,請確保您的項目目標是支援的.NET版本,並且所有依賴項都已正確還原。

如何保存並寫入資料到新的CSV文件?

從頭建立或寫入CSV文件與IronXL遵循一個直覺模式。 您從建立一本工作簿開始,將所有資料新增到單元格中,然後以CSV格式保存。 此方法比基本的字串連接方法提供更多控制。

在深入了解主要的CSV建立邏輯之前,這是一個使用公共類學生結構的簡單模型定義。 此模型代表結構化資料,我們稍後可以匯出到CSV。

// Define a Student class to model your data
public class Student
{
    public string? Name { get; set; }
    public int Age { get; set; }
    public string? Grade { get; set; }
}
// Define a Student class to model your data
public class Student
{
    public string? Name { get; set; }
    public int Age { get; set; }
    public string? Grade { get; set; }
}
Public Class Student
    Public Property Name As String
    Public Property Age As Integer
    Public Property Grade As String
End Class
$vbLabelText   $csharpLabel

您可以填充一個學生物件列表,然後使用IronXL將它們高效地導出到CSV文件。此範例顯示如何將類性質映射到工作表單元格:

using System;
using System.Collections.Generic;
using IronXL;

class Program
{
    static void Main(string[] args)
    {
        // Create sample data using the student class
        List<Student> students = new List<Student>()
        {
            new Student { Name = "Alice Johnson", Age = 20, Grade = "A" },
            new Student { Name = "Brian Smith", Age = 22, Grade = "B+" },
            new Student { Name = "Chloe Brown", Age = 19, Grade = "A-" },
            new Student { Name = "David Clark", Age = 21, Grade = "B" }
        };
        // Create a new workbook and worksheet
        WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
        WorkSheet sheet = workbook.CreateWorkSheet("Students");
        // Add headers
        sheet["A1"].Value = "Name";
        sheet["B1"].Value = "Age";
        sheet["C1"].Value = "Grade";
        // Add student data to the worksheet
        for (int i = 0; i < students.Count; i++)
        {
            sheet[$"A{i + 2}"].Value = students[i].Name;
            sheet[$"B{i + 2}"].IntValue = students[i].Age;
            sheet[$"C{i + 2}"].Value = students[i].Grade;
        }
        // Save as CSV file
        workbook.SaveAsCsv("students.csv");
        Console.WriteLine("students.csv file has been created successfully!");
    }
}
using System;
using System.Collections.Generic;
using IronXL;

class Program
{
    static void Main(string[] args)
    {
        // Create sample data using the student class
        List<Student> students = new List<Student>()
        {
            new Student { Name = "Alice Johnson", Age = 20, Grade = "A" },
            new Student { Name = "Brian Smith", Age = 22, Grade = "B+" },
            new Student { Name = "Chloe Brown", Age = 19, Grade = "A-" },
            new Student { Name = "David Clark", Age = 21, Grade = "B" }
        };
        // Create a new workbook and worksheet
        WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
        WorkSheet sheet = workbook.CreateWorkSheet("Students");
        // Add headers
        sheet["A1"].Value = "Name";
        sheet["B1"].Value = "Age";
        sheet["C1"].Value = "Grade";
        // Add student data to the worksheet
        for (int i = 0; i < students.Count; i++)
        {
            sheet[$"A{i + 2}"].Value = students[i].Name;
            sheet[$"B{i + 2}"].IntValue = students[i].Age;
            sheet[$"C{i + 2}"].Value = students[i].Grade;
        }
        // Save as CSV file
        workbook.SaveAsCsv("students.csv");
        Console.WriteLine("students.csv file has been created successfully!");
    }
}
Imports System
Imports System.Collections.Generic
Imports IronXL

Class Program
    Shared Sub Main(ByVal args As String())
        ' Create sample data using the student class
        Dim students As New List(Of Student)() From {
            New Student With {.Name = "Alice Johnson", .Age = 20, .Grade = "A"},
            New Student With {.Name = "Brian Smith", .Age = 22, .Grade = "B+"},
            New Student With {.Name = "Chloe Brown", .Age = 19, .Grade = "A-"},
            New Student With {.Name = "David Clark", .Age = 21, .Grade = "B"}
        }
        ' Create a new workbook and worksheet
        Dim workbook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
        Dim sheet As WorkSheet = workbook.CreateWorkSheet("Students")
        ' Add headers
        sheet("A1").Value = "Name"
        sheet("B1").Value = "Age"
        sheet("C1").Value = "Grade"
        ' Add student data to the worksheet
        For i As Integer = 0 To students.Count - 1
            sheet($"A{i + 2}").Value = students(i).Name
            sheet($"B{i + 2}").IntValue = students(i).Age
            sheet($"C{i + 2}").Value = students(i).Grade
        Next
        ' Save as CSV file
        workbook.SaveAsCsv("students.csv")
        Console.WriteLine("students.csv file has been created successfully!")
    End Sub
End Class

Class Student
    Public Property Name As String
    Public Property Age As Integer
    Public Property Grade As String
End Class
$vbLabelText   $csharpLabel

說明:

  1. 公共類學生定義了您的資料模型的架構。
  2. 使用樣本資料建立了一個學生物件列表。
  3. IronXL的WorkSheet APIs用於建立記憶體中的結構化電子表格。
  4. 手動新增標頭以確保CSV輸出具有可讀性。
  5. 學生資料逐行寫入工作表。
  6. 最後,資料使用SaveAsCsv()保存為CSV文件。

輸出

C# 使用IronXL保存為CSV格式:圖片4 - 控制台輸出

C# 使用IronXL保存為CSV格式:圖片5 - Excel輸出

此模式具有可擴展性; 如此一來,您可以輕鬆地將其調整為更大的資料集,或將其整合到從資料庫或API檢索學生資料的應用程式中。

例如,如果在寫入文件時發生錯誤(例如,文件被鎖定或路徑無效),您可以再處更應優雅地處理:

try
{
    workbook.SaveAsCsv("students.csv");
}
catch (Exception ex)
{
    Console.WriteLine($"Error occurred while saving CSV: {ex.Message}");
}
try
{
    workbook.SaveAsCsv("students.csv");
}
catch (Exception ex)
{
    Console.WriteLine($"Error occurred while saving CSV: {ex.Message}");
}
Try
    workbook.SaveAsCsv("students.csv")
Catch ex As Exception
    Console.WriteLine($"Error occurred while saving CSV: {ex.Message}")
End Try
$vbLabelText   $csharpLabel

這確保即使在出現文件I/O問題時,您的應用程式仍然堅固且具有資訊性。

以下是建立基本CSV文件的範例程式碼。

static void Main(string[] args)
{
    // Create a new workbook
    var writer = WorkBook.Create(ExcelFileFormat.XLSX);
    WorkSheet sheet = writer.CreateWorkSheet("Sales Data");
    // Add headers
    sheet["A1"].Value = "Product";
    sheet["B1"].Value = "Quantity";
    sheet["C1"].Value = "Price";
    sheet["D1"].Value = "Total";
    // Add data rows
    sheet["A2"].Value = "Widget A";
    sheet["B2"].IntValue = 100;
    sheet["C2"].DecimalValue = 29.99m;
    sheet["D2"].Formula = "=B2*C2";
    sheet["A3"].Value = "Widget B";
    sheet["B3"].IntValue = 50;
    sheet["C3"].DecimalValue = 49.99m;
    sheet["D3"].Formula = "=B3*C3";
    // Save as new CSV file
    writer.SaveAsCsv("sales_report.csv");
}
static void Main(string[] args)
{
    // Create a new workbook
    var writer = WorkBook.Create(ExcelFileFormat.XLSX);
    WorkSheet sheet = writer.CreateWorkSheet("Sales Data");
    // Add headers
    sheet["A1"].Value = "Product";
    sheet["B1"].Value = "Quantity";
    sheet["C1"].Value = "Price";
    sheet["D1"].Value = "Total";
    // Add data rows
    sheet["A2"].Value = "Widget A";
    sheet["B2"].IntValue = 100;
    sheet["C2"].DecimalValue = 29.99m;
    sheet["D2"].Formula = "=B2*C2";
    sheet["A3"].Value = "Widget B";
    sheet["B3"].IntValue = 50;
    sheet["C3"].DecimalValue = 49.99m;
    sheet["D3"].Formula = "=B3*C3";
    // Save as new CSV file
    writer.SaveAsCsv("sales_report.csv");
}
$vbLabelText   $csharpLabel

此程式碼建立一個具有標頭和資料的結構化工作簿,然後將其導出為CSV格式。 WorkBook.Create()方法初始化一個新的記憶體電子表格。 每個單元格可以承載不同的資料型別,例如字串、整數、小數,甚至是公式。 當您調用SaveAsCsv()時,IronXL會自動處理轉換,正確地轉義任何特殊字元並保持資料完整性。

此方法的美妙之處在於其靈活性。 您可以在導出之前作為電子表格操作資料,應用公式、格式化或驗證規則。 IronXL在導出過程中自動計算公式,確保您的CSV中包含計算值而不是公式文字。

輸出

C# 使用IronXL保存為CSV格式:圖片6 - CSV輸出

對於自定義分隔符要求,IronXL允許您指定標準逗號的替代方案:

// Save with semicolon delimiter for European locale compatibility
workbook.SaveAsCsv("sales_report.csv", ";");
// Save with semicolon delimiter for European locale compatibility
workbook.SaveAsCsv("sales_report.csv", ";");
$vbLabelText   $csharpLabel
// Save with tab delimiter
workbook.SaveAsCsv("sales_report.tsv", "\t");
// Save with tab delimiter
workbook.SaveAsCsv("sales_report.tsv", "\t");
' Save with tab delimiter
workbook.SaveAsCsv("sales_report.tsv", vbTab)
$vbLabelText   $csharpLabel

此靈活性確保與各種地區設置和應用需求的相容性。 此程式庫自動處理編碼問題,確保跨不同系統和地區的正確字元表示。

C# 使用IronXL保存為CSV格式:圖片7 - 特點

如何匯出DataTable至CSV?

在.NET應用程式中,DataTables廣泛用於儲存來自資料庫或業務邏輯的表格資料。 IronXL提供了無縫的DataTable到CSV轉換,保留了整個過程中的列名稱和資料型別。

// Create a sample DataTable (simulating database results) to store data
DataTable customerOrders = new DataTable("CustomerOrders");
customerOrders.Columns.Add("OrderID", typeof(int));
customerOrders.Columns.Add("CustomerName", typeof(string));
customerOrders.Columns.Add("OrderDate", typeof(DateTime));
customerOrders.Columns.Add("Amount", typeof(decimal));
// Add sample data
customerOrders.Rows.Add(1001, "Acme Corp", new DateTime(2024, 1, 15), 1250.50m);
customerOrders.Rows.Add(1002, "TechStart Inc", new DateTime(2024, 1, 16), 3500.00m);
customerOrders.Rows.Add(1003, "Global Systems", new DateTime(2024, 1, 17), 875.25m);
// Convert DataTable to CSV using IronXL
WorkBook workbook = WorkBook.Create();
WorkSheet sheet = workbook.CreateWorkSheet("Orders");
// Add headers from DataTable columns
for (int i = 0; i < customerOrders.Columns.Count; i++)
{
    sheet.SetCellValue(0, i, customerOrders.Columns[i].ColumnName);
}
// Add data rows
for (int row = 0; row < customerOrders.Rows.Count; row++)
{
    for (int col = 0; col < customerOrders.Columns.Count; col++)
    {
        sheet.SetCellValue(row + 1, col, customerOrders.Rows[row][col]);
    }
}
// Export to CSV
workbook.SaveAsCsv("customer_orders.csv");
// Create a sample DataTable (simulating database results) to store data
DataTable customerOrders = new DataTable("CustomerOrders");
customerOrders.Columns.Add("OrderID", typeof(int));
customerOrders.Columns.Add("CustomerName", typeof(string));
customerOrders.Columns.Add("OrderDate", typeof(DateTime));
customerOrders.Columns.Add("Amount", typeof(decimal));
// Add sample data
customerOrders.Rows.Add(1001, "Acme Corp", new DateTime(2024, 1, 15), 1250.50m);
customerOrders.Rows.Add(1002, "TechStart Inc", new DateTime(2024, 1, 16), 3500.00m);
customerOrders.Rows.Add(1003, "Global Systems", new DateTime(2024, 1, 17), 875.25m);
// Convert DataTable to CSV using IronXL
WorkBook workbook = WorkBook.Create();
WorkSheet sheet = workbook.CreateWorkSheet("Orders");
// Add headers from DataTable columns
for (int i = 0; i < customerOrders.Columns.Count; i++)
{
    sheet.SetCellValue(0, i, customerOrders.Columns[i].ColumnName);
}
// Add data rows
for (int row = 0; row < customerOrders.Rows.Count; row++)
{
    for (int col = 0; col < customerOrders.Columns.Count; col++)
    {
        sheet.SetCellValue(row + 1, col, customerOrders.Rows[row][col]);
    }
}
// Export to CSV
workbook.SaveAsCsv("customer_orders.csv");
Imports System
Imports System.Data
Imports IronXL

' Create a sample DataTable (simulating database results) to store data
Dim customerOrders As New DataTable("CustomerOrders")
customerOrders.Columns.Add("OrderID", GetType(Integer))
customerOrders.Columns.Add("CustomerName", GetType(String))
customerOrders.Columns.Add("OrderDate", GetType(DateTime))
customerOrders.Columns.Add("Amount", GetType(Decimal))
' Add sample data
customerOrders.Rows.Add(1001, "Acme Corp", New DateTime(2024, 1, 15), 1250.5D)
customerOrders.Rows.Add(1002, "TechStart Inc", New DateTime(2024, 1, 16), 3500.0D)
customerOrders.Rows.Add(1003, "Global Systems", New DateTime(2024, 1, 17), 875.25D)
' Convert DataTable to CSV using IronXL
Dim workbook As WorkBook = WorkBook.Create()
Dim sheet As WorkSheet = workbook.CreateWorkSheet("Orders")
' Add headers from DataTable columns
For i As Integer = 0 To customerOrders.Columns.Count - 1
    sheet.SetCellValue(0, i, customerOrders.Columns(i).ColumnName)
Next
' Add data rows
For row As Integer = 0 To customerOrders.Rows.Count - 1
    For col As Integer = 0 To customerOrders.Columns.Count - 1
        sheet.SetCellValue(row + 1, col, customerOrders.Rows(row)(col))
    Next
Next
' Export to CSV
workbook.SaveAsCsv("customer_orders.csv")
$vbLabelText   $csharpLabel

本範例展示了一個真實世界場景,其中來自資料庫的訂單資料需要導出以進行報告或整合目的。 程式碼迭代DataTable結構,保留列標題和行資料。 IronXL適當地處理不同資料型別的轉換,確保日期、小數和字串在生成的CSV文件中格式正確。

輸出

C# 使用IronXL保存為CSV格式:圖片8 - DataTable至CSV輸出

對於涉及多個相關表或進階資料轉換的更複雜情形,您可以利用IronXL的單元格引用和公式功能:

// Add summary row with formulas
int lastRow = customerOrders.Rows.Count + 1;
sheet[$"A{lastRow + 1}"].Value = "Total:";
sheet[$"D{lastRow + 1}"].Formula = $"=SUM(D2:D{lastRow})";
// Calculate and save
workbook.SaveAsCsv("customer_orders_with_total.csv");
// Add summary row with formulas
int lastRow = customerOrders.Rows.Count + 1;
sheet[$"A{lastRow + 1}"].Value = "Total:";
sheet[$"D{lastRow + 1}"].Formula = $"=SUM(D2:D{lastRow})";
// Calculate and save
workbook.SaveAsCsv("customer_orders_with_total.csv");
' Add summary row with formulas
Dim lastRow As Integer = customerOrders.Rows.Count + 1
sheet($"A{lastRow + 1}").Value = "Total:"
sheet($"D{lastRow + 1}").Formula = $"=SUM(D2:D{lastRow})"
' Calculate and save
workbook.SaveAsCsv("customer_orders_with_total.csv")
$vbLabelText   $csharpLabel

此方法提供了比傳統的DataTable匯出方法更多的控制。 您可以在最終匯出之前新增計算欄位、應用條件格式邏輯或重新組織列。 IronXL文件為進階DataTable操控情境提供了全面的範例。

如何將Excel文件轉換為CSV?

IronXL最強大的特點之一是它能夠與現有的Excel文件無縫交流,將它們轉換為CSV格式,同時保留資料完整性。 這在與生成Excel報告但需要CSV進行下游處理的系統整合時特別有用。

// Load an existing Excel file
WorkBook existingWorkbook = WorkBook.Load("Budget.xlsx");
// Access the first worksheet
WorkSheet sheet = existingWorkbook.WorkSheets[0];
// Save as CSV - single sheet
sheet.SaveAsCsv("Budget.csv");
// Or save entire workbook (creates multiple CSV files for multiple sheets)
existingWorkbook.SaveAsCsv("BudgetReport.csv");
// Load an existing Excel file
WorkBook existingWorkbook = WorkBook.Load("Budget.xlsx");
// Access the first worksheet
WorkSheet sheet = existingWorkbook.WorkSheets[0];
// Save as CSV - single sheet
sheet.SaveAsCsv("Budget.csv");
// Or save entire workbook (creates multiple CSV files for multiple sheets)
existingWorkbook.SaveAsCsv("BudgetReport.csv");
' Load an existing Excel file
Dim existingWorkbook As WorkBook = WorkBook.Load("Budget.xlsx")
' Access the first worksheet
Dim sheet As WorkSheet = existingWorkbook.WorkSheets(0)
' Save as CSV - single sheet
sheet.SaveAsCsv("Budget.csv")
' Or save entire workbook (creates multiple CSV files for multiple sheets)
existingWorkbook.SaveAsCsv("BudgetReport.csv")
$vbLabelText   $csharpLabel

載入Excel文件時,IronXL保留所有單元格值,包括那些由公式計算的值。 程式庫在轉換過程中評估Excel公式,確保您的CSV僅包含實際計算值。 這消除了在CSV匯出中出現公式文字的常見問題。

輸入

C# 使用IronXL保存為CSV格式:圖片9 - 範例輸入

輸出

C# 使用IronXL保存為CSV格式:圖片10 - Excel至CSV輸出

對於包含多個工作表的工作簿,IronXL智能地處理每個工作表:

// Process multiple sheets
WorkBook multiSheetWorkbook = WorkBook.Load("annual_data.xlsx");
foreach (WorkSheet sheet in multiSheetWorkbook.WorkSheets)
{
    string fileName = $"export_{sheet.Name}.csv";
    sheet.SaveAsCsv(fileName);
    Console.WriteLine($"Exported {sheet.Name} to {fileName}");
}
// Process multiple sheets
WorkBook multiSheetWorkbook = WorkBook.Load("annual_data.xlsx");
foreach (WorkSheet sheet in multiSheetWorkbook.WorkSheets)
{
    string fileName = $"export_{sheet.Name}.csv";
    sheet.SaveAsCsv(fileName);
    Console.WriteLine($"Exported {sheet.Name} to {fileName}");
}
Imports System

' Process multiple sheets
Dim multiSheetWorkbook As WorkBook = WorkBook.Load("annual_data.xlsx")
For Each sheet As WorkSheet In multiSheetWorkbook.WorkSheets
    Dim fileName As String = $"export_{sheet.Name}.csv"
    sheet.SaveAsCsv(fileName)
    Console.WriteLine($"Exported {sheet.Name} to {fileName}")
Next
$vbLabelText   $csharpLabel

此程式碼迭代Excel文件中的所有工作表,為每個工作表建立單獨的CSV文件。 工作表名稱在文件命名中得以保留,使其容易識別每個CSV文件的來源。IronXL支援多種Excel格式,包括XLSX、XLS、XLSM和XLTX,提供與不同Excel版本和用例的廣泛相容性。 在文件中了解有關格式轉換的更多資訊。

進階CSV管理技術

除了基本的CSV建立之外,IronXL還提供了精緻的功能來處理生產環境中經常出現的複雜場景。 這些功能使它與簡單的文件寫入方法區分開來。

在處理特殊字元時, IronXL自動處理逃逸和編碼:

WorkBook workbook = WorkBook.Create();
WorkSheet sheet = workbook.CreateWorkSheet("Data");
// Data with special characters
sheet["A1"].Value = "Company \"ABC\", Inc.";  // Quotes
sheet["B1"].Value = "Line 1\nLine 2";        // Newlines
sheet["C1"].Value = "Price: €50,00";         // Unicode characters
workbook.SaveAsCsv("special_chars.csv");
WorkBook workbook = WorkBook.Create();
WorkSheet sheet = workbook.CreateWorkSheet("Data");
// Data with special characters
sheet["A1"].Value = "Company \"ABC\", Inc.";  // Quotes
sheet["B1"].Value = "Line 1\nLine 2";        // Newlines
sheet["C1"].Value = "Price: €50,00";         // Unicode characters
workbook.SaveAsCsv("special_chars.csv");
Dim workbook As WorkBook = WorkBook.Create()
Dim sheet As WorkSheet = workbook.CreateWorkSheet("Data")
' Data with special characters
sheet("A1").Value = "Company ""ABC"", Inc."  ' Quotes
sheet("B1").Value = "Line 1" & vbLf & "Line 2"  ' Newlines
sheet("C1").Value = "Price: €50,00"  ' Unicode characters
workbook.SaveAsCsv("special_chars.csv")
$vbLabelText   $csharpLabel

IronXL正確地逃逸引號,處理多行內容並保留Unicode字元。 此自動處理防止了手動字串操作方法中常見的CSV解析錯誤。

輸出

C# 使用IronXL保存為CSV格式:圖片11 - 特殊字元輸出

對於批量處理場景,您可以高效地處理多個文件:

string[] sourceFiles = Directory.GetFiles("input_folder", "*.xlsx");
foreach (string file in sourceFiles)
{
    WorkBook wb = WorkBook.Load(file);
    var csv = Path.ChangeExtension(file, ".csv");
    wb.SaveAsCsv(csv);
}
string[] sourceFiles = Directory.GetFiles("input_folder", "*.xlsx");
foreach (string file in sourceFiles)
{
    WorkBook wb = WorkBook.Load(file);
    var csv = Path.ChangeExtension(file, ".csv");
    wb.SaveAsCsv(csv);
}
Imports System.IO

Dim sourceFiles As String() = Directory.GetFiles("input_folder", "*.xlsx")
For Each file As String In sourceFiles
    Dim wb As WorkBook = WorkBook.Load(file)
    Dim csv = Path.ChangeExtension(file, ".csv")
    wb.SaveAsCsv(csv)
Next
$vbLabelText   $csharpLabel

在處理大量資料集時,記憶體效率變得至關重要。 IronXL在內部優化記憶體使用,但您可以通過分塊處理資料和適當釋放資源進一步提升性能:

WorkBook largeWorkbook = WorkBook.Create();
WorkSheet sheet = largeWorkbook.CreateWorkSheet("LargeData");
// Process in batches
const int batchSize = 1000;
for (int batch = 0; batch < 10; batch++)
{
    for (int row = 0; row < batchSize; row++)
    {
        int actualRow = (batch * batchSize) + row;
        sheet.SetCellValue(actualRow, 0, $"Row {actualRow}");
        // Add more data...
        sheet.SetCellValue(actualRow, 1, DateTime.Now);
        sheet.SetCellValue(actualRow, 2, $"Batch {batch + 1}");
    }
}
largeWorkbook.SaveAsCsv("large_dataset.csv");
WorkBook largeWorkbook = WorkBook.Create();
WorkSheet sheet = largeWorkbook.CreateWorkSheet("LargeData");
// Process in batches
const int batchSize = 1000;
for (int batch = 0; batch < 10; batch++)
{
    for (int row = 0; row < batchSize; row++)
    {
        int actualRow = (batch * batchSize) + row;
        sheet.SetCellValue(actualRow, 0, $"Row {actualRow}");
        // Add more data...
        sheet.SetCellValue(actualRow, 1, DateTime.Now);
        sheet.SetCellValue(actualRow, 2, $"Batch {batch + 1}");
    }
}
largeWorkbook.SaveAsCsv("large_dataset.csv");
Dim largeWorkbook As WorkBook = WorkBook.Create()
Dim sheet As WorkSheet = largeWorkbook.CreateWorkSheet("LargeData")
' Process in batches
Const batchSize As Integer = 1000
For batch As Integer = 0 To 9
    For row As Integer = 0 To batchSize - 1
        Dim actualRow As Integer = (batch * batchSize) + row
        sheet.SetCellValue(actualRow, 0, $"Row {actualRow}")
        ' Add more data...
        sheet.SetCellValue(actualRow, 1, DateTime.Now)
        sheet.SetCellValue(actualRow, 2, $"Batch {batch + 1}")
    Next
Next
largeWorkbook.SaveAsCsv("large_dataset.csv")
$vbLabelText   $csharpLabel

輸出

C# 使用IronXL保存為CSV格式:圖片12 - 大資料集輸出

結論

IronXL將C#中的CSV文件管理從繁瑣的任務轉變為簡單的流程。 通過為CSV和Excel操作提供統一的API,它消除了對多個程式庫或複雜解析邏輯的需求。 該程式庫自動處理特殊字元、資料型別和編碼問題,確保資料在不同系統和區域中的可靠導出。

無論您是在構建報告系統、資料整合管道還是簡單的導出功能,IronXL都提供了高效CSV管理所需的工具。 其與現有Excel文件和DataTable結構的相容性使其易於整合到現有應用程式中,無需進行大規模重構。 一旦生成CSV文件,您可以直接在Excel中打開它們或使用任何文字編輯器檢查其原始格式,以快速驗證或排除故障。

準備好簡化您的CSV操作了嗎? 從免費試用開始,或探索全面的API文件以發現更多高級功能。 對於生產部署,授權從$999開始,並包括專業支持和更新。

C# 使用IronXL保存為CSV格式:圖片13 - 授權

常見問題

什麼是IronXL?

IronXL是一個強大的C#程式庫,允許開發者在.NET應用程式中讀取、編輯和建立Excel和CSV文件。

如何使用IronXL將資料儲存為CSV格式?

您可以通過將資料載入到IronXL WorkBook中,然後使用'SaveAs'方法將其匯出為CSV文件來保存資料為CSV格式。

使用IronXL進行CSV管理的好處是什麼?

IronXL提供了一種有效管理CSV文件的方式,提供如文件易操作性、資料導入/匯出以及與各種.NET應用程式的相容性特色。

IronXL 可以在儲存為 CSV 時處理大型資料集嗎?

是的,IronXL設計為能有效處理大型資料集,非常適合將大量資料收藏儲存為CSV格式。

是否可以使用IronXL將Excel文件轉換為CSV?

是的,IronXL允許您將Excel文件轉換為CSV,方法是將Excel文件載入到WorkBook中並使用'SaveAs'方法匯出為CSV。

IronXL支持哪種程式語言?

IronXL與C#相容,並設計為能無縫整合進.NET應用程式中。

IronXL是否支持讀寫CSV文件?

是的,IronXL支持從CSV文件中讀取和寫入CSV文件,提供了CSV文件管理的完整解決方案。

在C#項目中使用IronXL有任何前置需求嗎?

要在C#項目中使用IronXL,您需要安裝.NET框架,您可以透過NuGet輕鬆整合IronXL。

IronXL可以用於CSV文件中的資料分析嗎?

是的,IronXL可用於資料分析,允許您程式化操作和查詢CSV文件中的資料。

哪些型別的應用程式可以從IronXL的CSV功能中受益?

任何需要高效CSV資料管理的.NET應用程式,如資料處理工具、報告系統和企業應用程式,都可以從IronXL中受益。

Curtis Chau
技術作家

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

除了開發,Curtis對物聯網(IoT)有濃厚的興趣,探索創新的方法來整合硬體和軟體。在空閒時間,他喜歡玩遊戲和建立Discord機器人,結合他對技術的熱愛與創造力。

Iron 支援團隊

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