在C#中导出DataTable数据到CSV文件时,如果您希望自定义列名称并在导入结束后于最后一行的第一列添加“End of report”,
时间: 2025-06-30 07:00:24 AIGC 浏览: 31
在 C# 中将 `DataTable` 数据导出为 CSV 文件,并自定义列名以及在最后添加一行 "End of report" 的操作相对简单。下面是一个基本示例,展示了如何完成这项任务:
```csharp
using System;
using System.Data;
using System.IO;
using System.Text;
public class CsvExporter {
public static void Export(DataTable dataTable, string outputPath) {
// 设置编码格式防止乱码
var encoding = Encoding.UTF8;
using (var writer = new StreamWriter(outputPath, false, encoding)) {
// 自定义列标题
for(int i=0;i<dataTable.Columns.Count ;i++){
if(i>0){
writer.Write(",");
}
// 替换默认的字段名为我们想要的文字,这里假设第一列为姓名、第二列为年龄...
switch(dataTable.Columns[i].ColumnName){
case "Name":
writer.Write("姓名");
break;
case "Age":
writer.Write("年龄");
break;
default:
writer.Write(dataTable.Columns[i].ColumnName);
break;
}
}
writer.WriteLine();
foreach(var row in dataTable.Rows.Cast<DataRow>()) {
for (int j = 0; j < dataTable.Columns.Count;j++) {
if(j!=0)
writer.Write(",");
string value=row[j]?.ToString().Replace("\"","\"\"");
writer.Write($"\"{value}\"");
}
writer.WriteLine();
}
// 添加结束标志行 “End of Report”
writer.WriteLine("\"End of report\",\"\",\"\"");
}
}
}
```
注意此段代码做了如下的工作:
1. 创建了一个新的文本流指向输出路径并指定字符集(避免中文乱码);
2. 根据传入 DataTable 对象生成首行列名;这里通过switch-case结构来自定义列名称;
3. 遍历所有非空数据行的数据项并且对特殊字符进行了转义处理以保证CSV正确性;
4. 最后写入包含 "End of report" 字样的行。
你可以根据实际需求调整上述过程中的细节部分,比如更复杂的值转换规则等。
阅读全文
相关推荐


















