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