【问题标题】:Writing into a new column in excel file from list of string从字符串列表写入 excel 文件中的新列
【发布时间】:2021-08-27 03:00:23
【问题描述】:

我将所有结果放在一个列中,但我希望它们在一个新列中


TextWriter tw = new StreamWriter(ms); 
for (int i = 0; i < myList.Count; i++)
{   
    for(int j = 0; j< myList[i].Count; j++)
    {
        tw.Write(myList[i][j]);
    }
    tw.WriteLine();
}

我得到的结果:

Person1AddressPhone

单列下

我想要的结果是:

Person1 |Address |Phone

mylist - 新 list1{person1, add1, phn1}, mylist - 新 list2{person2, add2, phn2}

任何帮助将不胜感激。谢谢。

【问题讨论】:

  • StreamWriter 通常不与 Excel 一起使用。可能,您正在尝试写入一个分隔的文本文件。
  • 看起来您正在编写自己的 CSV 编写器?不要打扰;那里有很多好的库(csvhelper、lumenworks、servicestack)。如果你想制作 excel 文件(XLSX),也有更好的库(epplus,closedxml)
  • @MaciejLos,是的,我正在编写一个 csv 文件,通常我们从 excel 中打开它,所以我提到了它们。
  • @CaiusJard,有没有免费且值得信赖的,我的意思是我可能写了大量记录,所以我正在创建自己的记录。
  • 您正在使用单个循环编写 2D 数据,所以我很清楚为什么所有数据都出现在单个列中?没有足够的信息来给出一个体面的答案,但你似乎没有写任何分隔符或行尾,除非它们已经是列表中数据的一部分,我们也看不到

标签: c# excel export-to-csv streamwriter file-writing


【解决方案1】:

由于您在评论中提到您正在编写一个 csv 文件。我假设您将文件保存为 .csv。您只需要添加自己的分隔符即可。

TextWriter tw = new StreamWriter(ms);    

for(int j = 0; j< myList[i].Count; j++)
{
  tw.Write(myList[i][j]) ;
  if(j < myList[i].Count) tw.Write('|');
}

当然,还有很多图书馆在外面做得更好。喜欢CsvHelper

【讨论】:

  • 那个管道符号是excel表的列
  • 是的,你是对的。通过这样写。然后你用 excel 打开你的 .csv 文件。您可以选择自己的分隔符。他们将很好地融入 excel 列。当然,如果你有一行新数据,你必须写一个新行。
  • 我能知道 mylist 中的数据是什么样的吗?
  • mylist - 新 list1{person1, add1, phn1}, mylist - 新 list2{person2, add2, phn2}
  • @crazyCoder 所有这些信息都属于您的问题。这样可以避免人们不得不花时间猜测,并且您可以获得正确的答案,从而更快地解决您的问题
【解决方案2】:

成功了。感谢@Anthony。我用逗号代替'|'默认情况下,sign 和 excel 分隔列。

【讨论】:

    猜你喜欢
    • 2011-10-18
    • 2014-05-02
    • 1970-01-01
    • 2016-06-15
    • 2021-03-07
    • 1970-01-01
    • 1970-01-01
    • 2020-04-21
    • 1970-01-01
    相关资源
    最近更新 更多