C#将List<T>导出为 CSV 文件(Excel 直接打开,无需第三方组件包)
导出速度超快。
C# 全选
/// <summary>
/// 将 List<T> 导出为 CSV 文件(Excel 直接打开)
/// </summary>
public static int ExportToCsv<T>(List<T> dataList, string savePath)
{
var count = 0;
// 获取实体类的所有属性名(作为 Excel 表头)
var properties = typeof(T).GetProperties();
// 使用 StreamWriter 写入文件
using (var writer = new StreamWriter(savePath))
{
// 1. 写入表头(列名)
var headers = new List<string>();
foreach (var prop in properties)
{
headers.Add(prop.Name);
}
writer.WriteLine(string.Join(",", headers));
// 2. 写入数据行
foreach (var item in dataList)
{
var rowData = new List<string>();
foreach (var prop in properties)
{
// 获取属性值并转字符串,防止逗号/特殊字符报错
object value = prop.GetValue(item, null);
string cellValue = value?.ToString() ?? string.Empty;
// 处理包含逗号、引号的内容(CSV 标准格式)
if (cellValue.Contains(",") || cellValue.Contains("\""))
{
cellValue = $"\"{cellValue.Replace("\"", "\"\"")}\"";
}
rowData.Add(cellValue);
}
writer.WriteLine(string.Join(",", rowData));
count++;
}
}
return count;
}
使用
C# 全选
var list = gvList.DataSource as List<ACSEventResultMini>;
string savePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), $"Hik数据-{DateTime.Now.ToString("yyMMddHHmmss")}.csv");
var count = HikExportToCsv.ExportToCsv(list, savePath);
MsgEx.ShowInfomation($"记录:{count},文件:{savePath}");
版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
NewDoc C/S框架网





