写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;

}

相关推荐
2501_918126912 小时前
apache 服务器如何使用
运维·服务器·apache
安当加密2 小时前
SLA操作系统双因素认证实现Windows远程桌面OTP双因子安全登录—从零搭建企业级RDP安全加固体系
windows·安全
tt5555555555552 小时前
Linux零基础入门:权限与常用命令详解
linux·运维·服务器
todoitbo3 小时前
从MongoDB到金仓:电子证照系统国产化改造的实践与经验
数据库·mongodb
谱写秋天3 小时前
软考-系统架构设计师*数据库基本概念详细讲解
数据库·系统架构·软考架构师
nice_lcj5204 小时前
Java 集合框架之 List 全面解析(从概念到实践)
java·windows·list
Java永无止境4 小时前
延时任务之Redis 过期事件监听原理与缺陷
数据库·redis·缓存·延时任务
Albert Edison4 小时前
【MySQL】表的操作
数据库·mysql·oracle
欢喜躲在眉梢里4 小时前
mysql中的日志
android·运维·数据库·mysql·adb·日志·mysql日志