跳過到頁腳內容
使用 IRONXL

C# CSV 讀取器和寫入器:使用 IronXL 建立、匯出和轉換 CSV 文件

CSV 檔案(以逗號分隔的值儲存的純文字格式)仍然是應用程式、資料庫和報表系統之間進行資料交換的最通用格式之一。 無論是匯出使用者清單、產生財務報告,還是準備資料以匯入分析平台,使用 C# 以程式設計方式建立和讀取 CSV 檔案的能力對於現代 .NET 開發至關重要。 開發人員通常使用簡單的 var line 方法開始產生 CSV,然後使用 StringBuilderStreamWriter,但隨著資料複雜性的增加,這些手動方法很快就會變得容易出錯。

有些開發人員會使用 CSV Helper 函式庫來進行基本的讀/寫操作,但與IronXL等以電子表格為先的方法相比,這些工具仍然需要手動映射和行級處理。 本指南示範如何使用 IronXL(一個強大的 .NET 庫,無需安裝 Microsoft Excel 即可簡化電子表格操作)將資料寫入 CSV 檔案、將現有 Excel 工作簿轉換為 CSV 格式以及將物件匯出為逗號分隔值。 IronXL 可在 Windows、macOS、Linux 和 Docker、Azure 等容器化環境中運行,使其成為雲端原生應用程式和微服務架構的理想選擇。

什麼是 CSV 格式?它為什麼重要?

逗號分隔值 (CSV) 檔案是最廣泛使用的格式之一,可用於儲存表格資料並在不同應用程式之間交換。 以最簡單的形式來說,CSV 檔案是一種純文字檔案,每一行都包含一系列以逗號分隔的值。 這種直接的結構使得 CSV 資料很容易在各種軟體系統中產生、讀取和處理。

CSV 格式既輕巧又易於閱讀,因此是匯出報表、在資料庫之間傳輸資料以及與分析工具整合的常用選擇。 CSV 檔案中的每一行代表一筆記錄,該行中的每個值都以逗號分隔。 檔案的第一行通常作為標頭,列出每一列的名稱。 接下來的每一行都包含實際資料,每個值對應標頭中的一列。

了解 CSV 檔案的結構有助於您更好地選擇分隔符號、字元轉義和編碼——所有這些因素都會影響下游系統能否可靠地解析您的輸出。 CSV 檔案格式由 RFC 4180 定義,該 RFC 4180 提供了處理特殊情況的指導,例如嵌入的逗號、欄位中的換行符和帶引號的字串值。

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

透過 NuGet(微軟的 .NET 套件管理器),只需幾秒鐘即可將 IronXL 加入新專案中。 開啟 Visual Studio,然後存取 NuGet Package Manager Console 並執行下列指令:

Install-Package IronXL.Excel

使用 IronXL 將 C# 儲存為 CSV 檔案:圖 1 - 安裝

或者,在"解決方案總管"中的專案上按滑鼠右鍵,選擇"管理 NuGet 套件",在"瀏覽"標籤中搜尋"IronXL",然後按一下"安裝"。 IronXL 支援.NET Framework 4.6.2+、.NET Core、.NET 5/6/7/8/10 ,並且可以在任何平台上運行,無需外部相依性或 COM 互通要求。

安裝完成後,使用 using 語句將 IronXL 命名空間加入您的程式碼檔案:

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

此單一命名空間可存取建立試算表和 CSV 匯出作業所需的所有類別。 與依賴 StreamWriterStringBuilder 手動編寫 CSV 檔案的方法不同,IronXL 可以自動處理所有複雜的 CSV 格式設置,包括轉義特殊字元、保留資料類型以及在匯出之前計算公式。

IronXL 文件涵蓋了完整的 API 接口,包括單元格樣式、公式計算、密碼保護和圖表生成等高級功能。 為了方便快速參考, IronXL 範例庫提供了可直接運行的程式碼範例,涵蓋了數十種常見的電子表格場景。

IronXL 支援哪些平台?

IronXL 可在任何支援 .NET 的平台上運作。 這包括 Windows 桌面和伺服器環境、macOS 開發機器以及包括 Docker 容器在內的 Linux 伺服器。 對於在 Azure 或 AWS 上建置雲端原生應用程式的團隊來說,IronXL 無需任何額外配置即可運作。 該程式庫不需要 COM 互通、不需要安裝 Microsoft Office,也不需要外部系統相依性—因此可以透過標準套件管理工作流程輕鬆部署和更新。

如何從頭開始建立一個新的 CSV 檔案?

以程式設計方式建立新的 CSV 檔案涉及三個步驟:建立工作簿、填充資料並將其儲存為 CSV 格式。 IronXL 的 API 模仿了熟悉的 Excel 物件模型,使開發人員能夠輕鬆地編寫在控制台應用程式或任何 .NET 專案類型中使用電子表格概念的程式碼。

假設您需要將員工記錄清單匯出為 CSV 檔案。以下是一個使用頂級語句的完整範例:

using IronXL;

// Create a new workbook and worksheet
WorkBook workBook = WorkBook.Create();
WorkSheet sheet = workBook.CreateWorkSheet("Employees");

// Add header row with column names
sheet["A1"].Value = "EmployeeID";
sheet["B1"].Value = "Name";
sheet["C1"].Value = "Department";
sheet["D1"].Value = "Salary";

// Add employee data rows
sheet["A2"].Value = 1001;
sheet["B2"].Value = "Sarah Johnson";
sheet["C2"].Value = "Engineering";
sheet["D2"].Value = 85000;

sheet["A3"].Value = 1002;
sheet["B3"].Value = "Michael Chen";
sheet["C3"].Value = "Marketing";
sheet["D3"].Value = 72000;

sheet["A4"].Value = 1003;
sheet["B4"].Value = "Emily Rodriguez";
sheet["C4"].Value = "Finance";
sheet["D4"].Value = 91000;

// Save as CSV file
workBook.SaveAsCsv("employees.csv", ",");
using IronXL;

// Create a new workbook and worksheet
WorkBook workBook = WorkBook.Create();
WorkSheet sheet = workBook.CreateWorkSheet("Employees");

// Add header row with column names
sheet["A1"].Value = "EmployeeID";
sheet["B1"].Value = "Name";
sheet["C1"].Value = "Department";
sheet["D1"].Value = "Salary";

// Add employee data rows
sheet["A2"].Value = 1001;
sheet["B2"].Value = "Sarah Johnson";
sheet["C2"].Value = "Engineering";
sheet["D2"].Value = 85000;

sheet["A3"].Value = 1002;
sheet["B3"].Value = "Michael Chen";
sheet["C3"].Value = "Marketing";
sheet["D3"].Value = 72000;

sheet["A4"].Value = 1003;
sheet["B4"].Value = "Emily Rodriguez";
sheet["C4"].Value = "Finance";
sheet["D4"].Value = 91000;

// Save as CSV file
workBook.SaveAsCsv("employees.csv", ",");
Imports IronXL

' Create a new workbook and worksheet
Dim workBook As WorkBook = WorkBook.Create()
Dim sheet As WorkSheet = workBook.CreateWorkSheet("Employees")

' Add header row with column names
sheet("A1").Value = "EmployeeID"
sheet("B1").Value = "Name"
sheet("C1").Value = "Department"
sheet("D1").Value = "Salary"

' Add employee data rows
sheet("A2").Value = 1001
sheet("B2").Value = "Sarah Johnson"
sheet("C2").Value = "Engineering"
sheet("D2").Value = 85000

sheet("A3").Value = 1002
sheet("B3").Value = "Michael Chen"
sheet("C3").Value = "Marketing"
sheet("D3").Value = 72000

sheet("A4").Value = 1003
sheet("B4").Value = "Emily Rodriguez"
sheet("C4").Value = "Finance"
sheet("D4").Value = 91000

' Save as CSV file
workBook.SaveAsCsv("employees.csv", ",")
$vbLabelText   $csharpLabel

WorkBook.Create() 方法完全在記憶體中初始化一個新的電子表格,直到最終保存作業之前不需要臨時檔案或磁碟輸入/輸出。 CreateWorkSheet() 方法會將命名的工作表加入工作簿中-當多工作表工作簿匯出為 CSV 時,此名稱就變得相關了。

輸出

使用 IronXL 將 C# 儲存為 CSV 檔案:圖 2 - CSV 輸出

類似 sheet["A1"] 的儲存格引用可以直接存取可以賦值的特定儲存格。 IronXL 接受各種資料類型,包括字串、整數、小數、日期和布林值,並自動處理每種類型的適當格式。 對於更複雜的資料輸入場景,請查閱IronXL 系列操作指南,以了解批次儲存格分配技術。

SaveAsCsv() 方法將工作表內容匯出到檔案。第一個參數指定輸出檔名和路徑,第二個參數定義分隔符號。 IronXL 會自動處理適當的格式,包括轉換可能會破壞 CSV 解析的特殊字符,並在整個匯出過程中維持資料完整性。

如何將物件清單匯出為 CSV 檔案?

使用強類型物件時,可以使用循環遍歷集合並將每個項目寫入工作表。 以下是一個使用帶有公共字串屬性的 Student 類別的範例:

using IronXL;

// Define the Student class with public string properties
public class Student
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Email { get; set; }
}

// Create sample data
var students = new List<Student>
{
    new Student { FirstName = "John", LastName = "Smith", Email = "john@example.com" },
    new Student { FirstName = "Jane", LastName = "Doe", Email = "jane@example.com" }
};

WorkBook workBook = WorkBook.Create();
WorkSheet sheet = workBook.DefaultWorkSheet;

// Add header row
sheet["A1"].Value = "FirstName";
sheet["B1"].Value = "LastName";
sheet["C1"].Value = "Email";

// Use foreach to iterate through the list and write each item
int row = 2;
foreach (var item in students)
{
    sheet[$"A{row}"].Value = item.FirstName;
    sheet[$"B{row}"].Value = item.LastName;
    sheet[$"C{row}"].Value = item.Email;
    row++;
}

workBook.SaveAsCsv("students.csv", ",");
using IronXL;

// Define the Student class with public string properties
public class Student
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Email { get; set; }
}

// Create sample data
var students = new List<Student>
{
    new Student { FirstName = "John", LastName = "Smith", Email = "john@example.com" },
    new Student { FirstName = "Jane", LastName = "Doe", Email = "jane@example.com" }
};

WorkBook workBook = WorkBook.Create();
WorkSheet sheet = workBook.DefaultWorkSheet;

// Add header row
sheet["A1"].Value = "FirstName";
sheet["B1"].Value = "LastName";
sheet["C1"].Value = "Email";

// Use foreach to iterate through the list and write each item
int row = 2;
foreach (var item in students)
{
    sheet[$"A{row}"].Value = item.FirstName;
    sheet[$"B{row}"].Value = item.LastName;
    sheet[$"C{row}"].Value = item.Email;
    row++;
}

workBook.SaveAsCsv("students.csv", ",");
Imports IronXL

' Define the Student class with public string properties
Public Class Student
    Public Property FirstName As String
    Public Property LastName As String
    Public Property Email As String
End Class

' Create sample data
Dim students As New List(Of Student) From {
    New Student With {.FirstName = "John", .LastName = "Smith", .Email = "john@example.com"},
    New Student With {.FirstName = "Jane", .LastName = "Doe", .Email = "jane@example.com"}
}

Dim workBook As WorkBook = WorkBook.Create()
Dim sheet As WorkSheet = workBook.DefaultWorkSheet

' Add header row
sheet("A1").Value = "FirstName"
sheet("B1").Value = "LastName"
sheet("C1").Value = "Email"

' Use For Each to iterate through the list and write each item
Dim row As Integer = 2
For Each item In students
    sheet($"A{row}").Value = item.FirstName
    sheet($"B{row}").Value = item.LastName
    sheet($"C{row}").Value = item.Email
    row += 1
Next

workBook.SaveAsCsv("students.csv", ",")
$vbLabelText   $csharpLabel

此模式示範如何透過迭代每一項目並將其屬性對應到特定欄位,將清單物件匯出為 CSV 資料。 foreach 循環處理集合中的每個學生,字串插值動態地建構單元格引用。 對於涉及基於反射的屬性對應或匿名類型的場景,您可以透過遍歷類型元資料中的 PropertyInfo 物件來調整此方法。

如何將現有的 Excel 檔案轉換為 CSV 檔案?

將 Excel 試算表轉換為 CSV 格式,是與傳統系統整合、為資料庫匯入準備資料,或從人工製作的報表產生機器可讀輸出時的常見需求。 IronXL 以最少的程式碼處理此轉換,同時保留資料的正確性。

using IronXL;

// Load an existing Excel file
WorkBook workBook = WorkBook.Load("Monthly_Report_20251012.xlsx");

// Convert and save as CSV format
workBook.SaveAsCsv("Monthly_Report_20251012.csv");
using IronXL;

// Load an existing Excel file
WorkBook workBook = WorkBook.Load("Monthly_Report_20251012.xlsx");

// Convert and save as CSV format
workBook.SaveAsCsv("Monthly_Report_20251012.csv");
Imports IronXL

' Load an existing Excel file
Dim workBook As WorkBook = WorkBook.Load("Monthly_Report_20251012.xlsx")

' Convert and save as CSV format
workBook.SaveAsCsv("Monthly_Report_20251012.csv")
$vbLabelText   $csharpLabel

Load() 方法可以開啟各種格式的 Excel 文件,包括 XLSX、XLS、XLSM,甚至現有的 CSV 或 TSV 檔案。 這種靈活性意味著您可以建立標準化的匯出管道,接受任何格式的輸入檔案。 請參閱 IronXL 文檔,以了解支援的 Excel 格式的完整清單。

輸入

使用 IronXL 將 C# 儲存為 CSV 檔案:圖 3 - Excel 輸入範例

輸出

使用 IronXL 將 C# 儲存為 CSV 檔案:圖 4 - Excel 到 CSV 的輸出

在轉換過程中,IronXL 的突出功能之一是自動公式評估。 儲存為 CSV 時,IronXL 會計算試算表中存在的任何公式,並匯出結果值而非公式文字。 例如,包含 =SUM(A1:A10) 的儲存格將匯出為計算的總計,從而確保 CSV 檔案包含下游系統可以立即使用的操作資料。

多工作表匯出如何運作?

在處理包含多個工作表的 Excel 工作簿時,IronXL.Excel 會自動為每個工作表建立獨立的 CSV 檔案。 此功能對於財務報告、區域銷售資料,或每個部門或類別在單一主工作簿中各自佔用工作表的任何情況,尤其有價值。

using IronXL;

// Load a multi-sheet workbook (e.g., annual sales by region)
WorkBook workBook = WorkBook.Load("annual_sales.xlsx");

// Export all sheets to CSV -- creates separate files for each sheet
workBook.SaveAsCsv("sales_export.csv");
// Output: sales_export.North.csv, sales_export.South.csv, sales_export.East.csv, etc.

// Or export a specific worksheet
WorkSheet northRegion = workBook.GetWorkSheet("North");
northRegion.SaveAsCsv("north_region_sales.csv");
using IronXL;

// Load a multi-sheet workbook (e.g., annual sales by region)
WorkBook workBook = WorkBook.Load("annual_sales.xlsx");

// Export all sheets to CSV -- creates separate files for each sheet
workBook.SaveAsCsv("sales_export.csv");
// Output: sales_export.North.csv, sales_export.South.csv, sales_export.East.csv, etc.

// Or export a specific worksheet
WorkSheet northRegion = workBook.GetWorkSheet("North");
northRegion.SaveAsCsv("north_region_sales.csv");
Imports IronXL

' Load a multi-sheet workbook (e.g., annual sales by region)
Dim workBook As WorkBook = WorkBook.Load("annual_sales.xlsx")

' Export all sheets to CSV -- creates separate files for each sheet
workBook.SaveAsCsv("sales_export.csv")
' Output: sales_export.North.csv, sales_export.South.csv, sales_export.East.csv, etc.

' Or export a specific worksheet
Dim northRegion As WorkSheet = workBook.GetWorkSheet("North")
northRegion.SaveAsCsv("north_region_sales.csv")
$vbLabelText   $csharpLabel

命名慣例會將每個工作表名稱附加到基本檔案名稱,讓您在處理或歸檔時,能簡單辨識每個匯出檔案的來源。 對於只需要特定工作表的特定匯出,可以使用 GetWorkSheet() 擷取所需的工作表,然後直接在該工作表物件上呼叫 SaveAsCsv()

請參閱 IronXL 文檔,以了解有關 Excel 格式轉換的更多資訊。

如何將資料表匯出為 CSV 檔案?

企業應用程式經常使用從資料庫查詢、API 回應或記憶體資料處理中填入的 DataTable 物件。 IronXL for .NET 在這些 .NET 資料結構與檔案匯出之間架起橋樑,提供從應用程式記憶體到可分享 CSV 檔案的可靠路徑。 這種方法比手動編寫帶有 StreamWriter 的 CSV 檔案更可靠,因為 IronXL 會自動處理字元轉義、分隔符號管理和編碼。

using IronXL;
using System.Data;

// Create and populate a DataTable with columns
DataTable products = new DataTable();
products.Columns.Add("SKU", typeof(string));
products.Columns.Add("ProductName", typeof(string));
products.Columns.Add("Price", typeof(decimal));
products.Columns.Add("InStock", typeof(int));

// Add rows of data
products.Rows.Add("SKU-001", "Wireless Mouse", 29.99m, 150);
products.Rows.Add("SKU-002", "Mechanical Keyboard", 89.99m, 75);
products.Rows.Add("SKU-003", "USB-C Hub", 45.99m, 200);

// Create workbook and transfer DataTable contents
WorkBook workBook = WorkBook.Create();
WorkSheet sheet = workBook.DefaultWorkSheet;

// Add header row from column names
for (int col = 0; col < products.Columns.Count; col++)
{
    sheet.SetCellValue(0, col, products.Columns[col].ColumnName);
}

// Add data rows using nested loops
for (int row = 0; row < products.Rows.Count; row++)
{
    for (int col = 0; col < products.Columns.Count; col++)
    {
        sheet.SetCellValue(row + 1, col, products.Rows[row][col].ToString());
    }
}

// Export to CSV
workBook.SaveAsCsv("product_inventory.csv", ",");
using IronXL;
using System.Data;

// Create and populate a DataTable with columns
DataTable products = new DataTable();
products.Columns.Add("SKU", typeof(string));
products.Columns.Add("ProductName", typeof(string));
products.Columns.Add("Price", typeof(decimal));
products.Columns.Add("InStock", typeof(int));

// Add rows of data
products.Rows.Add("SKU-001", "Wireless Mouse", 29.99m, 150);
products.Rows.Add("SKU-002", "Mechanical Keyboard", 89.99m, 75);
products.Rows.Add("SKU-003", "USB-C Hub", 45.99m, 200);

// Create workbook and transfer DataTable contents
WorkBook workBook = WorkBook.Create();
WorkSheet sheet = workBook.DefaultWorkSheet;

// Add header row from column names
for (int col = 0; col < products.Columns.Count; col++)
{
    sheet.SetCellValue(0, col, products.Columns[col].ColumnName);
}

// Add data rows using nested loops
for (int row = 0; row < products.Rows.Count; row++)
{
    for (int col = 0; col < products.Columns.Count; col++)
    {
        sheet.SetCellValue(row + 1, col, products.Rows[row][col].ToString());
    }
}

// Export to CSV
workBook.SaveAsCsv("product_inventory.csv", ",");
Imports IronXL
Imports System.Data

' Create and populate a DataTable with columns
Dim products As New DataTable()
products.Columns.Add("SKU", GetType(String))
products.Columns.Add("ProductName", GetType(String))
products.Columns.Add("Price", GetType(Decimal))
products.Columns.Add("InStock", GetType(Integer))

' Add rows of data
products.Rows.Add("SKU-001", "Wireless Mouse", 29.99D, 150)
products.Rows.Add("SKU-002", "Mechanical Keyboard", 89.99D, 75)
products.Rows.Add("SKU-003", "USB-C Hub", 45.99D, 200)

' Create workbook and transfer DataTable contents
Dim workBook As WorkBook = WorkBook.Create()
Dim sheet As WorkSheet = workBook.DefaultWorkSheet

' Add header row from column names
For col As Integer = 0 To products.Columns.Count - 1
    sheet.SetCellValue(0, col, products.Columns(col).ColumnName)
Next

' Add data rows using nested loops
For row As Integer = 0 To products.Rows.Count - 1
    For col As Integer = 0 To products.Columns.Count - 1
        sheet.SetCellValue(row + 1, col, products.Rows(row)(col).ToString())
    Next
Next

' Export to CSV
workBook.SaveAsCsv("product_inventory.csv", ",")
$vbLabelText   $csharpLabel

此模式遍歷 DataTable 結構,先傳送列標題,然後系統性地填入每個資料行。 DefaultWorkSheet 屬性可快速存取新建立的工作簿中的第一個工作表,從而在簡單情況下無需明確建立工作表。

輸出

使用 IronXL 將 C# 儲存為 CSV:圖 5 - 資料表到 CSV 輸出

IronXL 在傳輸過程中會保留資料類型,確保數值維持其精確度,日期保留其格式。 這種方法可以很好地擴展到任何大小的數據表,無論是包含來自簡單查找查詢的幾十行數據,還是包含來自大型數據導出的數千條記錄。 匯出前如需對電子表格進行其他操作,請探索儲存格格式設定選項和範圍操作

如何處理 CSV 檔案中的自訂分隔符號?

不同的系統和地區標準需要不同的分隔符號。 雖然逗號在許多國家都是標準的分隔符號,但在歐洲地區,逗號通常是數值中的小數分隔符號,因此歐洲地區更偏好使用分號。 當源資料中的欄位值包含逗號時,Tab-separated 檔案 (TSV) 會很受歡迎。 IronXL 的 SaveAsCsv() 方法可以處理所有這些情況,而無需額外的程式碼來處理每一行輸出。

using IronXL;

WorkBook workBook = WorkBook.Load("data.xlsx");

// Standard comma delimiter (default format)
workBook.SaveAsCsv("output_comma.csv", ",");

// Semicolon delimiter (common in European systems)
workBook.SaveAsCsv("output_semicolon.csv", ";");

// Tab delimiter (TSV format)
workBook.SaveAsCsv("output_tab.tsv", "\t");

// Pipe delimiter (used in some data interchange formats)
workBook.SaveAsCsv("output_pipe.csv", "|");
using IronXL;

WorkBook workBook = WorkBook.Load("data.xlsx");

// Standard comma delimiter (default format)
workBook.SaveAsCsv("output_comma.csv", ",");

// Semicolon delimiter (common in European systems)
workBook.SaveAsCsv("output_semicolon.csv", ";");

// Tab delimiter (TSV format)
workBook.SaveAsCsv("output_tab.tsv", "\t");

// Pipe delimiter (used in some data interchange formats)
workBook.SaveAsCsv("output_pipe.csv", "|");
Imports IronXL

Dim workBook As WorkBook = WorkBook.Load("data.xlsx")

' Standard comma delimiter (default format)
workBook.SaveAsCsv("output_comma.csv", ",")

' Semicolon delimiter (common in European systems)
workBook.SaveAsCsv("output_semicolon.csv", ";")

' Tab delimiter (TSV format)
workBook.SaveAsCsv("output_tab.tsv", vbTab)

' Pipe delimiter (used in some data interchange formats)
workBook.SaveAsCsv("output_pipe.csv", "|")
$vbLabelText   $csharpLabel

SaveAsCsv() 的第二個參數接受任何字串作為分隔符,從而為與各種系統和區域要求整合提供了完全的靈活性。 在產生用於國際分發的檔案時,請考慮目標系統的區域設定要求—歐洲金融系統通常要求使用分號分隔符,而北美系統通常預設使用逗號分隔符。 CSV 的 RFC 4180 標準描述如何對包含分隔符號的值進行引用,以防止解析錯誤。

C#中產生CSV檔案的最佳實踐是什麼?

在 C# 中處理 CSV 檔案時,遵循既定做法可確保您的資料保持準確、可讀,並與其他系統相容。 下表總結了最重要的考慮因素:

C# 中 CSV 檔案產生最佳實踐
實踐 為何這很重要 IronXL 方法
一致的分隔符 防止下游系統中出現解析錯誤 將分隔符號作為第二個參數傳遞給 SaveAsCsv() 函數。
報價特殊值 當資料中出現逗號時,保持欄位完整性 由 IronXL 自動處理
統一的日期格式 避免不同地區和系統之間的歧義 儲存前設定儲存格格式以控制輸出
值中避免換行符號。 防止行結構損壞 IronXL 在匯出過程中會轉義嵌入的換行符
處理例外 確保文件流正確關閉。 IronXL在內部處置資源
儲存前請驗證 在數據問題影響消費者之前就發現並解決。 導出前使用範圍運算驗證儲存格值

除了基本要素之外,在面向國際受眾時,也應考慮進行明確編碼。 在 Microsoft Excel 中開啟 CSV 檔案時,通常需要使用帶有 BOM 的 UTF-8 編碼才能正確顯示非 ASCII 字元。 對於涉及數百萬行的大量匯出,請考慮將資料分塊到多個檔案中,而不是寫入單個大型 CSV 檔案——這樣可以控製檔案大小,並減少生成和使用期間的記憶體壓力。

對於建立資料管道的團隊來說, IronXL 非同步和串流文件涵蓋了處理大型資料集的模式,而無需將整個工作簿載入記憶體。 IronXL 範例庫包含用於批次處理、計劃匯出作業以及與 Entity Framework 等流行 ORM 框架整合的其他模式。

使用.NET 生態系統的 CSV 處理工具時,請了解 IronXL 相對於底層方法的定位,有助於您為每個場景選擇合適的工具。 對於純粹的 CSV 生成,無需任何 Excel 參與,使用手動引用邏輯可能就足夠了。 對於任何涉及 Excel 格式相容性、公式計算或豐富格式設定的操作,IronXL 都能提供更可靠的基礎。

如何使用 IronXL 讀取現有的 CSV 檔案?

將 CSV 資料讀取回應用程式與載入任何其他電子表格格式遵循相同的模式。 IronXL 的 Load() 方法可以識別 CSV 檔案並將其解析為標準工作簿/工作表模型,使您可以使用與 Excel 檔案相同的 API 存取單一儲存格和區域。

using IronXL;

// Load an existing CSV file
WorkBook workBook = WorkBook.Load("employees.csv");
WorkSheet sheet = workBook.DefaultWorkSheet;

// Access specific cells by reference
string firstHeader = sheet["A1"].StringValue;

// Iterate through all rows
foreach (var row in sheet.Rows)
{
    foreach (var cell in row)
    {
        Console.Write(cell.StringValue + "\t");
    }
    Console.WriteLine();
}

// Access a range of cells
var nameColumn = sheet["B2:B100"];
foreach (var cell in nameColumn)
{
    Console.WriteLine(cell.StringValue);
}
using IronXL;

// Load an existing CSV file
WorkBook workBook = WorkBook.Load("employees.csv");
WorkSheet sheet = workBook.DefaultWorkSheet;

// Access specific cells by reference
string firstHeader = sheet["A1"].StringValue;

// Iterate through all rows
foreach (var row in sheet.Rows)
{
    foreach (var cell in row)
    {
        Console.Write(cell.StringValue + "\t");
    }
    Console.WriteLine();
}

// Access a range of cells
var nameColumn = sheet["B2:B100"];
foreach (var cell in nameColumn)
{
    Console.WriteLine(cell.StringValue);
}
Imports IronXL

' Load an existing CSV file
Dim workBook As WorkBook = WorkBook.Load("employees.csv")
Dim sheet As WorkSheet = workBook.DefaultWorkSheet

' Access specific cells by reference
Dim firstHeader As String = sheet("A1").StringValue

' Iterate through all rows
For Each row In sheet.Rows
    For Each cell In row
        Console.Write(cell.StringValue & vbTab)
    Next
    Console.WriteLine()
Next

' Access a range of cells
Dim nameColumn = sheet("B2:B100")
For Each cell In nameColumn
    Console.WriteLine(cell.StringValue)
Next
$vbLabelText   $csharpLabel

讀取和寫入操作的這種一致性意味著您的團隊只需要學習一個 API 即可完成所有與電子表格相關的任務。 開啟 CSV 檔案的同一個 WorkBook.Load() 方法也可以處理 XLSX、XLS 和 XLSM 格式——這在建立接受多種格式輸入的管道時非常有用。 請參閱文檔,以了解有關使用 IronXL 讀取 CSV 文件的更多資訊。

下一步計劃是什麼?

本指南涵蓋了使用 IronXL 在 C# 中建立和管理 CSV 檔案的核心模式:

  • WorkBook.Create() 用於在記憶體中初始化新的電子表格
  • 用於以任何受支援的格式開啟現有的 Excel 和 CSV 文件
  • SaveAsCsv() 用於匯出帶有自訂分隔符號的數據
  • 使用 GetWorkSheet() 匯出單一工作表,以實現定向轉化
  • DataTable 資料庫到 CSV 工作流程的迭代模式
  • 使用 foreach 循環匯出物件列表
  • 使用完整權限將 CSV 資料讀回您的應用程式

要實作這些技巧,請開始 IronXL 免費試用,探索電子表格的全部功能,且測試時間無限制。 準備進行生產部署時,請查看IronXL 授權選項,找到適合您團隊規模和使用需求的方案。

有關單元格樣式、公式創建、圖表生成和密碼保護等高級場景的更多範例,請瀏覽IronXL 文件完整的程式碼範例庫IronXL 教學系列介紹了更複雜的整合場景,包括資料表匯出格式轉換寫入 CSV 檔案

常見問題解答

什麼是 CSV 檔案,為什麼它很重要?

CSV檔案或逗號分隔值檔案是一種用於應用程式、資料庫和報告系統之間的資料交換的純文本格式。它的通用格式使其可用於匯出列表、生成報告,以及為分析準備資料。

如何使用C#創建CSV檔案?

您可以使用IronXL在C#中創建CSV檔案,通過創建WorkBook,將資料填充到WorkSheet,並使用所需的輸出路徑和分隔字符調用SaveAsCsv()。

使用 IronXL 製作 CSV 有哪些優點?

IronXL在C#中提供了一種免錯誤的CSV檔案創建方法,比傳統的手動方法如StreamWriter更有效率地處理複雜的資料結構。它還支援Excel到CSV的轉換、公式評估和多工作表匯出。

在建立 CSV 檔案時,IronXL 如何處理資料的複雜性?

IronXL在CSV匯出過程中自動管理字符逃逸、分隔符處理、公式評估和資料類型保留,從而最大限度地減少錯誤並確保資料完整性。

IronXL 可以用於將資料匯入分析平台嗎?

是的,IronXL 可透過協助建立結構良好的 CSV 檔案來準備匯入分析平台的資料,確保資料傳輸的相容性和便利性。

是否可以使用 IronXL 自動生成 CSV 檔案?

IronXL 支援 C# 自動化,讓開發人員可以程式化地產生 CSV 檔案,作為大型 .NET 應用程式的一部分,提升效率和生產力。

在 C# 中手動建立 CSV 的方法有哪些常見的錯誤?

像StreamWriter這樣的手動方法需要定製代碼來處理字符逃逸、分隔符管理和編碼--隨著資料複雜性的增長,這些都成為容易出錯的問題。

IronXL 如何改善 .NET 開發中的 CSV 檔案建立流程?

IronXL通過提供直觀的方法來自動處理資料複雜性,從而簡化了CSV創建過程,確保在.NET應用程式中精確和高效的CSV檔案生成。

IronXL 可以將資料庫中的資料匯出成 CSV 檔案嗎?

是的,IronXL可以將數據庫查詢加載的DataTable物件直接匯出到CSV檔案中,促進資料交換和與其他系統的集成。

如何使用IronXL讀取現有的CSV檔案?

使用WorkBook.Load()與您的CSV檔案的路徑。IronXL將CSV解析為其標準的工作簿/工作表模型,讓您可以使用與Excel檔案相同的API訪問單個儲存格和範圍。

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

鋼鐵支援團隊

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