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

}

相关推荐
赵渝强老师9 小时前
【赵渝强老师】OceanBase的配置文件与配置项
数据库·oceanbase
玖日大大10 小时前
OceanBase SeekDB:AI 原生数据库的技术革命与实践指南
数据库·人工智能·oceanbase
2501_9254355210 小时前
怎么彻底禁止Windows更新?一键彻底关闭win11自动更新的工具
windows
高溪流11 小时前
3.数据库表的基本操作
数据库·mysql
alonewolf_9911 小时前
深入剖析MySQL锁机制与MVCC原理:高并发场景下的数据库核心优化
数据库·mysql
一 乐11 小时前
绿色农产品销售|基于springboot + vue绿色农产品销售系统(源码+数据库+文档)
java·前端·数据库·vue.js·spring boot·后端·宠物
Codeking__11 小时前
Redis初识——什么是Redis
数据库·redis·mybatis
k***19512 小时前
Spring 核心技术解析【纯干货版】- Ⅶ:Spring 切面编程模块 Spring-Instrument 模块精讲
前端·数据库·spring
程序员黄老师12 小时前
主流向量数据库全面解析
数据库·大模型·向量·rag
Full Stack Developme12 小时前
Redis 可以实现哪些业务功能
数据库·redis·缓存