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

}

相关推荐
就叫飞六吧20 小时前
MySQL不停机迁移完全指南
数据库·mysql
猎人everest20 小时前
Windows系统Redis(8.2.2)安装与配置完整教程
数据库·windows·redis
苦学编程的谢20 小时前
Redis_10_Zset
数据库·redis·缓存
q***420520 小时前
在Spring Boot项目中使用MySQL数据库
数据库·spring boot·mysql
我系真滴菜21 小时前
SQLiteStudio基本操作教程
数据库
q***498621 小时前
在Django中安装、配置、使用CKEditor5,并将CKEditor5录入的文章展现出来,实现一个简单博客网站的功能
数据库·django·sqlite
q***180621 小时前
如何使用C#与SQL Server数据库进行交互
数据库·c#·交互
●VON1 天前
补充说明:Windows 完全可以开发 Qt 鸿蒙应用!(附专属适配方案)
windows·qt·华为·harmonyos·鸿蒙
Wang's Blog1 天前
MySQL: 操作系统对MySQL性能的影响及选型指南
数据库·mysql
Lucifer三思而后行1 天前
Oracle ADG 配置闪回导致报表查询延时!
数据库·oracle