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

}

相关推荐
全栈老石4 小时前
拆解低代码引擎核心:元数据驱动的"万能表"架构
数据库·低代码
阿白的白日梦5 小时前
winget基础管理---更新/修改源为国内源
windows
YuMiao6 小时前
gstatic连接问题导致Google Gemini / Studio页面乱码或图标缺失问题
服务器·网络协议
倔强的石头_1 天前
kingbase备份与恢复实战(二)—— sys_dump库级逻辑备份与恢复(Windows详细步骤)
数据库
jiayou642 天前
KingbaseES 实战:深度解析数据库对象访问权限管理
数据库
李广坤3 天前
MySQL 大表字段变更实践(改名 + 改类型 + 改长度)
数据库
Sinclair3 天前
简单几步,安卓手机秒变服务器,安装 CMS 程序
android·服务器
Rockbean4 天前
用40行代码搭建自己的无服务器OCR
服务器·python·deepseek
爱可生开源社区4 天前
2026 年,优秀的 DBA 需要具备哪些素质?
数据库·人工智能·dba
埃博拉酱4 天前
VS Code Remote SSH 连接 Windows 服务器卡在"下载 VS Code 服务器":prcdn DNS 解析失败的诊断与 BITS 断点续传
windows·ssh·visual studio code