写csv测试

/// <summary>

/// 使用固定的字段名称和对应值写入CSV文件

/// </summary>

/// <param name="fieldNames">固定的字段名称列表(标题行)</param>

/// <param name="values">与字段对应的 values 列表</param>

/// <param name="filePath">CSV文件路径</param>

/// <param name="append">是否追加到现有文件,true为追加,false为覆盖</param>

public int WriteToCsv(List<string> fieldNames, List<object> values, string filePath)

{

// 验证参数

if (fieldNames == null || fieldNames.Count == 0)

return -1;

// throw new ArgumentException("字段名称列表不能为空", nameof(fieldNames));

if (values == null || values.Count == 0)

return -2;

// throw new ArgumentException("值列表不能为空", nameof(values));

if (fieldNames.Count != values.Count)

return -3;

// throw new ArgumentException("字段名称数量与值数量不匹配");

if (string.IsNullOrEmpty(filePath))

return -4;

// throw new ArgumentException("文件路径不能为空", nameof(filePath));

// 检查文件是否存在

filePath = filePath +"\\"+ DateTime.Now.ToString("yyyy-MM-dd")+".csv";

bool fileExists = File.Exists(filePath);

// 创建StringBuilder来构建内容

StringBuilder content = new StringBuilder();

// 仅在文件不存在或不追加时写入标题行

if ( !fileExists)

{

string header = string.Join(",", fieldNames);

content.AppendLine(header);

}

// 处理值并添加到内容

string valueLine = string.Join(",", values.Select(v =>

{

if (v == null) return "";

string valueStr = v.ToString();

// 处理包含逗号或引号的特殊值

if (valueStr.Contains(",") || valueStr.Contains("\""))

{

return $"\"{valueStr.Replace("\"", "\"\"")}\"";

}

return valueStr;

}));

content.AppendLine(valueLine);

// 写入文件

using (StreamWriter writer = new StreamWriter(filePath, fileExists, Encoding.UTF8))

{

writer.Write(content.ToString());

}

return 0;

}

相关推荐
_下雨天.1 小时前
LVS负载均衡
服务器·负载均衡·lvs
mounter6254 小时前
【硬核前沿】CXL 深度解析:重塑数据中心架构的“高速公路”,Linux 内核如何应对挑战?-- CXL 协议详解与 LSF/MM 最新动态
linux·服务器·网络·架构·kernel
泓铮4 小时前
Windows 环境下 WSL2 与 VMware Workstation 17 共存机制研究与工程实践
windows
zzzyyy5385 小时前
Linux环境变量
linux·运维·服务器
等....5 小时前
Minio使用
数据库
kebeiovo5 小时前
atomic原子操作实现无锁队列
服务器·c++
win x6 小时前
Redis 使用~如何在Java中连接使用redis
java·数据库·redis
CHHC18806 小时前
NetCore树莓派桌面应用程序
linux·运维·服务器
迷枫7126 小时前
DM8 数据库安装实战:从零搭建达梦数据库环境(附全套工具链接)
数据库
帮我吧智能服务平台7 小时前
装备制造智能制造升级:远程运维与智能服务如何保障产线OEE
运维·服务器·制造