如何为按字典生成的CSV文件添加自定义非格式首行?
给拆分后的CSV文件添加自定义首行
原代码实现了按compId拆分CSV文件的功能,现在需要给每个生成的CSV文件添加一行格式独立的首行,实现方式如下:
修改思路
在首次创建对应compId的输出文件时,先写入自定义首行,再依次写入原文件的表头和数据行即可。
修改后的完整代码
string chargeMonth = DateTime.Now.ToString("yyyyMM"); var fileCreationDate = DateTime.Now.ToString("yyyyMMdd"); string fileCreationTime = DateTime.Now.ToString("HHmmss"); string constVal = "MLL"; string fileType = "HIYUV-CHEVRA"; string[] values; string header, sumRow; string line, compId; string inputFile = "records.CSV"; // 定义自定义首行内容,可根据实际需求修改 string customFirstLine = "aaaabbbbcccc"; Dictionary<string, System.IO.StreamWriter> outputFiles = new Dictionary<string, System.IO.StreamWriter>(); // 修正路径转义问题,使用逐字字符串 using (System.IO.StreamReader file = new System.IO.StreamReader(@"D:\" + inputFile, Encoding.Default)) { header = file.ReadLine(); while ((line = file.ReadLine()) != null) { values = line.Split(",".ToCharArray()); compId = values[3]; if (!outputFiles.ContainsKey(compId)) { sumRow = constVal + "-" + fileType + "-" + (String.Format("{0:00000}", Int32.Parse(compId))) + "-" + chargeMonth + "-" + fileCreationDate + "-" + fileCreationTime; string outputFileName = constVal + "-" + fileType + "-" + (String.Format("{0:00000}", Int32.Parse(compId))) + "-" + chargeMonth + "-" + fileCreationDate + "-" + fileCreationTime + ".CSV"; var writer = new System.IO.StreamWriter(@"D:\" + outputFileName); outputFiles.Add(compId, writer); // 先写入自定义首行 writer.WriteLine(customFirstLine); // 再写入原表头 writer.WriteLine(header); } outputFiles[compId].WriteLine(line); } } foreach (System.IO.StreamWriter outputFile in outputFiles.Values) { outputFile.Close(); }
关键修改点
- 新增
customFirstLine变量,存储自定义首行的内容,可根据实际需求调整内容格式 - 在创建新的
StreamWriter后,先调用writer.WriteLine(customFirstLine)写入自定义首行,再写入原表头和后续数据行 - 修正了原代码中路径的转义问题,使用
@标记逐字字符串避免路径解析错误
内容的提问来源于stack exchange,提问作者user20622377
相关产品推荐
相关产品推荐

