國(guó)產(chǎn)化Excel處理組件Spire.XLS教程:C# 讀取 CSV 文件,從基礎(chǔ)讀取到 DataTable 轉(zhuǎn)換
CSV(逗號(hào)分隔值)作為輕量級(jí)數(shù)據(jù)交換格式,廣泛應(yīng)用于財(cái)務(wù)報(bào)表、用戶數(shù)據(jù)、分析結(jié)果等場(chǎng)景。在.NET 開(kāi)發(fā)中,高效處理和解析 CSV 文件是一項(xiàng)基礎(chǔ)且重要的技能。本文將介紹如何借助Spire.XLS for .NET 通過(guò) C# 讀取 CSV 文件,包括直接讀取和將 CSV 轉(zhuǎn)換為 DataTable 兩種方式。
Spire.XLS for .NET試用下載,請(qǐng)聯(lián)系E-iceblue官方授權(quán)代理商慧都科技
歡迎加入Spire技術(shù)交流Q群(125237868),與更多小伙伴一起提升文檔開(kāi)發(fā)技能~
安裝 Spire.XLS 庫(kù)
Spire.XLS for .NET 不僅是專業(yè)的 Excel 處理工具,還對(duì) CSV 文件提供了完善支持,無(wú)需依賴 Microsoft Office,處理效率高且跨平臺(tái)兼容。
安裝步驟:
- 打開(kāi) Visual Studio 項(xiàng)目,在解決方案資源管理器中右鍵點(diǎn)擊項(xiàng)目;
- 選擇「管理 NuGet 包」,搜索「Spire.XLS」;
- 點(diǎn)擊「安裝」完成依賴添加。
或通過(guò)程序包管理器控制臺(tái)執(zhí)行命令:
PM> Install-Package Spire.XLS
C# 讀取 CSV 文件內(nèi)容
以下 C# 代碼示例演示如何加載 CSV 文件、訪問(wèn)其中數(shù)據(jù),并以表格格式將內(nèi)容輸出到控制臺(tái)。
using Spire.Xls;
namespace ReadCSV
{
class Program
{
static void Main(string[] args)
{
// 創(chuàng)建 Workbook 實(shí)例
Workbook workbook = new Workbook();
// 加載 CSV 文件
workbook.LoadFromFile("庫(kù)存表.csv", ",");
// 獲取第一個(gè)工作表
Worksheet sheet = workbook.Worksheets[0];
// 獲取已使用的范圍
CellRange range = sheet.AllocatedRange;
// 遍歷行和列
for (int row = 1; row <= range.RowCount; row++)
{
for (int col = 1; col <= range.ColumnCount; col++)
{
// 獲取單元格值
string cellValue = range[row, col].Value;
Console.Write(cellValue + "\t");
}
Console.WriteLine();
}
Console.ReadLine();
}
}
}
核心說(shuō)明:
- Workbook 類:作為 CSV 文件的內(nèi)存容器,統(tǒng)一處理邏輯。
- Workbook.LoadFromFile():用于加載 CSV 文件,參數(shù)說(shuō)明如下:
- 文件路徑:如"庫(kù)存表.csv"。
- 分隔符:","(逗號(hào) - CSV 的默認(rèn)分隔符)。
- Worksheet.AllocatedRange:僅獲取包含數(shù)據(jù)的單元格范圍。
- CellRange[row, col].Value:用于獲取特定單元格的值。
運(yùn)行效果:CSV 數(shù)據(jù)將以清晰的制表符分隔格式輸出到控制臺(tái)。

若需要通過(guò) VB.NET 讀取 CSV 文件,可使用 C# 到 VB.NET轉(zhuǎn)換器 直接轉(zhuǎn)換代碼。
C# 讀取 CSV 到 DataTable
DataTable 是.NET 中靈活的內(nèi)存數(shù)據(jù)結(jié)構(gòu),便于篩選、排序、綁定 UI 等高級(jí)操作。以下代碼演示如何將 CSV 直接轉(zhuǎn)換為 DataTable:
using Spire.Xls;
using System.Data;
namespace ReadCSV
{
class Program
{
static void Main(string[] args)
{
// 創(chuàng)建 Workbook 實(shí)例
Workbook workbook = new Workbook();
// 加載 CSV 文件
workbook.LoadFromFile("庫(kù)存表.csv", ",");
// 獲取第一個(gè)工作表
Worksheet worksheet = workbook.Worksheets[0];
// 將工作表中的數(shù)據(jù)導(dǎo)出到 DataTable
DataTable dataTable = worksheet.ExportDataTable();
// 獲取行和列的數(shù)量
Console.WriteLine("\n轉(zhuǎn)換完成!DataTable信息:");
Console.WriteLine($"列數(shù):{dataTable.Columns.Count}");
Console.WriteLine($"行數(shù):{dataTable.Rows.Count}");
Console.WriteLine();
// 打印列名
for (int i = 0; i < dataTable.Columns.Count; i++)
{
Console.Write(dataTable.Columns[i].ColumnName + " | ");
}
Console.WriteLine();
Console.WriteLine("----------------------------------------------------------");
// 打印行數(shù)據(jù)
for (int i = 0; i < dataTable.Rows.Count; i++)
{
for (int j = 0; j < dataTable.Columns.Count; j++)
{
string value = dataTable.Rows[i][j].ToString();
Console.Write(value + "\t");
}
Console.WriteLine();
}
}
}
}
核心說(shuō)明:
- Worksheet.ExportDataTable():一鍵完成 CSV 到 DataTable 的轉(zhuǎn)換。
- 元數(shù)據(jù)與內(nèi)容訪問(wèn):可通過(guò) DataTable 的 Columns 和 Rows 屬性快速獲取元數(shù)據(jù)與內(nèi)容。
- 高級(jí)操作:轉(zhuǎn)換后的數(shù)據(jù)支持與數(shù)據(jù)庫(kù)、UI 組件(如 DataGridView)直接交互。
運(yùn)行效果:輸出包含列名、數(shù)據(jù)行及統(tǒng)計(jì)信息的結(jié)構(gòu)化結(jié)果。

若需分析、計(jì)算或格式化數(shù)據(jù),您可以通過(guò) C# 將 CSV 轉(zhuǎn)換為 Excel。
兩種方法的適用場(chǎng)景
根據(jù)實(shí)際需求選擇合適的方法:
| 方法 | 適用場(chǎng)景 | 典型用例 |
|---|---|---|
| 直接讀取 CSV | 快速驗(yàn)證數(shù)據(jù)、簡(jiǎn)單打印輸出 | 檢查 CSV 文件是否正確加載、預(yù)覽數(shù)據(jù) |
| 轉(zhuǎn)換為 DataTable | 復(fù)雜數(shù)據(jù)處理、綁定 UI 或數(shù)據(jù)庫(kù) | 篩選行、排序數(shù)據(jù)或保存到SQL Server |
結(jié)論
借助 Spire.XLS for .NET,C# 處理 CSV 文件變得簡(jiǎn)單高效:直接讀取適用于快速驗(yàn)證,轉(zhuǎn)換為 DataTable 則便于高級(jí)操作。兩種方法均無(wú)需依賴 Office,且代碼可直接復(fù)用(只需修改文件路徑)。
常見(jiàn)問(wèn)題
問(wèn)題1:為什么選擇用 Spire.XLS 讀取 CSV 文件?
答:雖然 .NET Framework 提供了內(nèi)置的 StreamReader 處理 CSV 文件,但 Spire.XLS 的優(yōu)勢(shì)在于:
- 無(wú)需依賴:不需要安裝 Microsoft Excel 或 Office
- 高性能:針對(duì)大型 CSV 文件的高效處理進(jìn)行了優(yōu)化
- 靈活性:提供多種讀取 CSV 數(shù)據(jù)的方式,可按需選擇
- 跨平臺(tái):兼容.NET Framework/.NET Core/.NET Standard 等多框架
問(wèn)題2:如何處理非逗號(hào)分隔的文件(如分號(hào)或制表符)?
答:只需將 LoadFromFile() 的第二個(gè)參數(shù)替換為實(shí)際分隔符即可:
// 讀取制表符分隔的文件
workbook.LoadFromFile("data.txt", "\t");
// 讀取分號(hào)分隔的文件
workbook.LoadFromFile("data.csv", ";");
// 讀取豎線分隔的文件
workbook.LoadFromFile("data.csv", "|");
問(wèn)題3:能否讀取 CSV 中的指定行或列?
答:可以。通過(guò)定義范圍實(shí)現(xiàn)精準(zhǔn)讀取,例如跳過(guò)標(biāo)題行只取特定列:
// 定義特定范圍
int startRow = 2; // 從第2行開(kāi)始(跳過(guò)標(biāo)題)
int endRow = 4; // 在第4行結(jié)束
int startCol = 2; // 從第2列開(kāi)始
int endCol = 6; // 在第6列結(jié)束
// 遍歷行和列
for (int row = startRow; row <= endRow; row++)
{
for (int col = startCol; col <= endCol; col++)
{
// 獲取單元格值
string cellValue = worksheet.Range[row, col].Value;
Console.Write(cellValue + "\t");
}
Console.WriteLine();
}
注意:Spire.XLS 采用 1-based 索引(與Excel一致),因此第一行/列編號(hào)為1(而非0)。
Spire.XLS for .NET試用下載,請(qǐng)聯(lián)系E-iceblue官方授權(quán)代理商慧都科技
歡迎加入Spire技術(shù)交流Q群(125237868),與更多小伙伴一起提升文檔開(kāi)發(fā)技能~
CSV(逗號(hào)分隔值)作為輕量級(jí)數(shù)據(jù)交換格式,廣泛應(yīng)用于財(cái)務(wù)報(bào)表、用戶數(shù)據(jù)、分析結(jié)果等場(chǎng)景。在.NET 開(kāi)發(fā)中,高效處理和解析 CSV 文件是一項(xiàng)基礎(chǔ)且重要的技能。本文將介紹如何借助Spire.XLS for .NET 通過(guò) C# 讀取 CSV 文件,包括直接讀取和將 CSV 轉(zhuǎn)換為 DataTable 兩種方式。
浙公網(wǎng)安備 33010602011771號(hào)