输出未正确写入CSV
本文关键字:CSV 输出 | 更新日期: 2023-09-27 18:15:46
所以我有一个问题,我的输出被写入CSV文件。在写入CSV文件时,此代码的输出格式是正确的,但它只在文件中输入了一行。应该有更多。大约150行。输出电流为:
(859.85 7N830127 185)
这是正确的,但应该有更多这样的。在我看来,它只是写入已解析EDI文件的第一行,然后停止。我需要找到一种方法来确保它写所有的数据正在被解析,有人能帮助我吗?
static void Main(string[] args)
{
StreamReader sr = new StreamReader("edifile.txt");
string[] ediMapTemp = sr.ReadLine().Split('|');
List<string[]> ediMap = new List<string[]>();
List<object[]> outputMatrix = new List<object[]>();
foreach (var line in ediMapTemp)
{
ediMap.Add(line.Split('~'));
}
DetailNode node = new DetailNode(0, null, 0);
int hierarchicalDepth = 0;
int hierarchicalIdNumber;
int hierarchicalParentIdNumber;
int hierarchicalLevelCode;
int hierarchicalChildCode = 0;
for (int i = 0; i < ediMap.Count; i++)
{
string segmentHeader = ediMap[i][0];
if (segmentHeader == "HL")
{
hierarchicalIdNumber = Convert.ToInt32(ediMap[i][1]);
hierarchicalParentIdNumber = Convert.ToInt32(ediMap[i][2]);
hierarchicalLevelCode = Convert.ToInt32(ediMap[i][3]);
hierarchicalChildCode = Convert.ToInt32(ediMap[i][4]);
List<string[]> levelDetails = new List<string[]>();
for (int v = i + 1; v < ediMap.Count; v++)
{
if (ediMap[v][0] == "HL") break;
levelDetails.Add(ediMap[v]);
}
DetailNode getNode = node.Find(node, hierarchicalParentIdNumber);
getNode.headList.Add(new DetailNode(hierarchicalIdNumber, levelDetails, getNode.depth + 1));
}
}
node.Traversal(new VID(), node);
foreach (var vid in VIDList.vidList)
using (StreamWriter writer = new StreamWriter("Import.csv"))
{
//probably a loop here
writer.WriteLine(String.Join(",", vid.totalCurrentCharges, vid.assetId, vid.componentName, vid.recurringCharge));
}
}
快速检查,代码应该如下:
using (StreamWriter writer = new StreamWriter("Import.csv"))
{
//a loop here
foreach (var vid in VIDList.vidList)
{
writer.WriteLine(String.Join(",", vid.totalCurrentCharges, vid.assetId, vid.componentName, vid.recurringCharge));
}
}
您将打开文件一次,然后循环遍历您的集合,写入每个集合。
在我看来,您正在为尝试写入的每一行重新打开输出文件,因此您正在为每一行使用新文件覆盖输出文件。这意味着文件中只保留最后一个条目。试着移动这行
using (StreamWriter writer = new StreamWriter("Import.csv"))
在foreach循环之外