CSV(逗号分隔值)文件凭借其简洁性、易读性以及跨系统兼容性,仍是现代软件开发领域中应用最广泛的数据交换格式之一。无论是数据导出、系统间同步,还是批量数据处理,CSV 都扮演着关键角色。对于 在 C# 中创建 CSV 文件的开发需求,Spire.XLS for .NET 库提供了一套强大且易用的解决方案—无需手动拼接字符串,也无需依赖本地 Excel 环境,通过简洁 API 即可完成各类 CSV 操作。
本文将介绍如何使用 Spire.XLS 通过 C# 生成 CSV 文件,覆盖基础创建、列表映射、Excel 转换三大高频需求,并附完整代码与详细解析。
- 为什么选择 Spire.XLS 创建 CSV 文件?
- Spire.XLS 快速部署
- 通过 C# 创建基础 CSV 文件
- 使用 C# 从对象列表生成 CSV 文件
- 使用 C# 从 Excel 表格创建 CSV 文件
- 常见问题解答(FAQ)
为什么选择 Spire.XLS 创建CSV文件?
Spire.XLS for .NET 是一款专注于电子表格处理的专业 API,不仅支持 Excel 全格式操作,对 CSV 文件也提供了深度适配,其核心优势如下:
- 无 Excel 依赖:与 Microsoft Office Interop 不同,Spire.XLS 无需依赖 Excel 即可运行,彻底解决生产环境中的依赖问题。
- API 简洁易用:封装了底层文件操作逻辑,开发者通过直观的方法调用即可完成 CSV 的创建、填充与保存,大幅降低编码复杂度。
- Excel-CSV 无缝转换:支持直接读取 XLS/XLSX 文件并导出为 CSV,无需手动解析 Excel 格式,转换效率高且无数据丢失。
- 高度灵活定制:可自由配置 CSV 的分隔符(逗号、分号等)、编码格式(UTF-8、Unicode 等)及数据样式,适配不同业务场景需求。
Spire.XLS 快速部署
在开始编码前,需完成以下准备工作:
- 环境要求:已安装 Visual Studio。
- 组件安装:通过 NuGet 包管理器快速安装 Spire.XLS for .NET,两种方式任选其一:
- 图形界面操作:右键单击项目 → 管理NuGet程序包 → 搜索Spire.XLS → 安装。
- 控制台命令:打开程序包管理器控制台,输入以下命令并回车:
PM> Install-Package Spire.XLS
通过 C# 创建基础 CSV 文件
适用于需手动定义表头与数据的简单场景,以下示例演示了如何从零构建 CSV 文件:
using System;
using System.Text;
using Spire.Xls;
namespace CreateBasicCSV
{
class Program
{
static void Main(string[] args)
{
// 1. 初始化工作簿(Spire.XLS核心操作对象)
Workbook workbook = new Workbook();
// 2. 创建工作表(CSV文件对应单个工作表)
Worksheet worksheet = workbook.Worksheets.Add("产品数据");
// 3. 定义CSV表头(A1-D1为表头单元格)
worksheet.Range["A1"].Value = "产品编号";
worksheet.Range["B1"].Value = "产品名称";
worksheet.Range["C1"].Value = "售价";
worksheet.Range["D1"].Value = "库存状态";
// 4. 填充示例数据(按行赋值,适配不同数据类型)
worksheet.Range["A2"].Value2 = 1001; // 数值类型
worksheet.Range["B2"].Value = "戴尔XPS 15笔记本"; // 字符串类型
worksheet.Range["C2"].Value2 = 1299.99; // 浮点类型
worksheet.Range["D2"].Value = "有货"; // 字符串类型
worksheet.Range["A3"].Value2 = 1002;
worksheet.Range["B3"].Value = "无线蓝牙鼠标";
worksheet.Range["C3"].Value2 = 29.99;
worksheet.Range["D3"].Value = "无货";
worksheet.Range["A4"].Value2 = 1003;
worksheet.Range["B4"].Value = "机械键盘(青轴)";
worksheet.Range["C4"].Value2 = 89.99;
worksheet.Range["D4"].Value = "有货";
// 5. 导出为CSV文件(指定分隔符为逗号,编码为UTF-8)
worksheet.SaveToFile("基础产品列表.csv", ",", Encoding.UTF8);
workbook.Dispose(); // 释放资源
Console.WriteLine("CSV文件创建成功!");
}
}
}
核心代码解析:
- 工作簿初始化:首先创建
Workbook对象(Spire.XLS 操作 Excel/CSV 的核心对象)。 - 工作表创建:添加一个工作表用于写入数据(CSV 本质是单工作表数据)。
- 数据填充:Spire.XLS 提供两种单元格值属性,可处理不同数据类型:
Value:用于文本/字符串类型数据。Value2:用于布尔值、字符串、数字、日期等类型数据。
- 另存为 CSV:通过
SaveToFile方法将工作表转换为 CSV 文件。
输出结果:
使用 C# 从对象列表生成 CSV 文件
实际开发中,数据常存储在 List<T> 等集合中,以下示例演示如何将 Product 对象列表直接映射为 CSV 文件,适配结构化数据场景:
using System;
using System.Collections.Generic;
using System.Text;
using Spire.Xls;
namespace CreateCSVFromList
{
// 定义产品实体类(与CSV字段一一对应)
public class Product
{
public int 商品编号 { get; set; }
public string 商品名称 { get; set; }
public decimal 售价 { get; set; }
public bool 是否有货 { get; set; }
}
class Program
{
static void Main(string[] args)
{
// 1. 准备结构化列表数据
List<Product> productList = new List<Product>()
{
new Product { 商品编号 = 1001, 商品名称 = "笔记本电脑", 售价 = 999.99m, 是否有货 = true },
new Product { 商品编号 = 1002, 商品名称 = "纯棉T恤", 售价 = 19.99m, 是否有货 = false },
new Product { 商品编号 = 1003, 商品名称 = "陶瓷咖啡杯", 售价 = 8.99m, 是否有货 = false },
new Product { 商品编号 = 1004, 商品名称 = "静音无线鼠标", 售价 = 24.99m, 是否有货 = true }
};
// 2. 初始化Spire.XLS核心对象
Workbook workbook = new Workbook();
Worksheet worksheet = workbook.Worksheets[0]; // 默认使用第一个工作表
// 3. 写入CSV表头(索引从1开始)
worksheet.Range[1, 1].Text = "商品编号"; // 第1行第1列
worksheet.Range[1, 2].Text = "商品名称"; // 第1行第2列
worksheet.Range[1, 3].Text = "售价"; // 第1行第3列
worksheet.Range[1, 4].Text = "是否有货"; // 第1行第4列
// 4. 批量填充列表数据(从第2行开始写入)
for (int i = 0; i < productList.Count; i++)
{
int currentRow = i + 2; // 行号:从2开始(跳过表头)
Product product = productList[i];
// 按数据类型赋值,确保CSV数据格式正确
worksheet.Range[currentRow, 1].NumberValue = product.商品编号; // 数值型
worksheet.Range[currentRow, 2].Text = product.商品名称; // 字符串型
worksheet.Range[currentRow, 3].NumberValue = (double)product.售价; // 十进制转双精度
worksheet.Range[currentRow, 4].Text = product.是否有货 ? "是" : "否"; // 布尔值转中文描述
}
// 5. 保存CSV文件
string outputPath = "结构化产品列表.csv";
worksheet.SaveToFile(outputPath, ",", Encoding.UTF8);
workbook.Dispose();
Console.WriteLine($"CSV文件已保存至:{outputPath}");
}
}
}
核心代码说明:
- 工作簿/工作表:即使处理 CSV 文件,Spire.XLS 仍通过
Workbook管理工作表。 - 单元格索引:Spire.XLS 采用 1-based 索引(行/列从1开始,而非0)。
- 数据类型处理:
- 字符串类型值(如商品名称/分类)使用
.Text属性。 - 数值类型值(int/decimal/double)使用
.NumberValue属性。 - 布尔类型值使用
.BooleanValue属性。
- 字符串类型值(如商品名称/分类)使用
输出 CSV 文件:

使用 C# 从 Excel 表格创建 CSV 文件
将 Excel 文件转换为 CSV 是实际开发中的常见场景。以下示例加载现有 Excel 文件(.xls 或 .xlsx 格式),并将其第一个工作表导出为 CSV 文件。该方法无需手动解析单元格数据,操作十分简单:
using System.Text;
using Spire.Xls;
namespace ExcelToCSV
{
class Program
{
static void Main(string[] args)
{
// 1. 加载现有Excel文件
Workbook workbook = new Workbook();
workbook.LoadFromFile("产品.xlsx");
// 2. 选择第一个工作表
Worksheet worksheet = workbook.Worksheets[0];
// 3. 将工作表另存为CSV文件
worksheet.SaveToFile("Excel转CSV.csv", ",", Encoding.UTF8);
workbook.Dispose();
Console.WriteLine($"Excel转CSV成功!");
}
}
}
转换结果:
自定义技巧: 可以修改 SaveToFile() 方法中的分隔符和编码参数,以满足不同地区的格式要求。
总结
通过 Spire.XLS for .NET 组件,C# 开发者可轻松实现 CSV 文件的创建与转换。无论你是从零构建基础 CSV 文件、将集合数据映射到 CSV,还是将 Excel 文件转换为 CSV,本文均提供了详细、可落地的操作步骤。如需了解更多 .NET 中操作 Excel 或 CSV 的示例,可访问Spire.XLS 官方文档。
常见问题解答(FAQ)
问题1:CSV 文件中的中文或特殊字符显示乱码怎么办?
答:保存 CSV 时指定 Encoding.UTF8 或 Encoding.Unicode编码。
问题2:能否生成包含多个工作表的 CSV 文件?
答:不能。CSV 是纯文本格式,本身不支持多工作表结构。如需处理多个数据集,可创建多个独立的CSV文件,或在保存前将多个工作表合并为一个工作表。
问题3:如何生成无表头行的 CSV 文件?
答:无需写入表头行,直接从第 1 行开始填充数据即可。







