我有一个C#WinForm应用程序,其中包含许多List<string>
和List<double>
。我需要创建一个新的.txt文件,并将每个List<>
保存到文本文件的特定列。
我尝试了WriteAllLines函数但写了一个List<>
。
我还尝试创建一个Excel文件,以便指定我希望List<>
保存到哪个列。但我很难将临时excel文件保存为.txt文件。
我知道这段代码可以将现有的excel文件保存为PDF,但是不存在将excel保存为文本文件的类似功能。
NewExcelWorkBook.ExportAsFixedFormat(Excel.XlFixedFormatType.xlTypePDF, "Holdings in BE Import Format.txt", Excel.XlFixedFormatQuality.xlQualityStandard, true,
false, 1, 10, true);
请告诉我一种方法将多个List<>
写入特定的.txt文件列,或者您可以告诉我如何将excel文件另存为.txt文件。跳过临时excel文件将是理想的,但如果直接写入.txt很难,则可以接受此解决方案。
非常感谢你!
答案 0 :(得分:3)
如果您希望第一列的大小固定为20个字符,则可以尝试以下操作:
List<string> stringList = new List<string>
{
"ABCDEF",
"DEF",
"GHIAAAAAAAAAAAAAA",
"SOMETHNG LONGER THAN 20 characters",
};
List<double> doubleList = new List<double>
{
1d,
2,
3,
4
};
List<string> combined = new List<string>();
int count = stringList.Count >= doubleList.Count ? stringList.Count : doubleList.Count;
for (int i = 0; i < count; i++)
{
string firstColumn = stringList.Count <= i ? "" : stringList[i];
string secondColumn = doubleList.Count <= i ? "" : doubleList[i].ToString();
if (firstColumn.Length > 20)
{
//truncate rest of the values
firstColumn = firstColumn.Substring(0, 20);
}
else
{
firstColumn = firstColumn + new string(' ', 20 - firstColumn.Length);
}
combined.Add(string.Format("{0} {1}", firstColumn, secondColumn));
}
File.WriteAllLines("yourFilePath.csv", combined);
输出文件就像:
ABCDEF 1
DEF 2
GHIAAAAAAAAAAAAAA 3
SOMETHNG LONGER THAN 4
答案 1 :(得分:0)
List<string> list1 = new List<string>();
List<int> list2 = new List<int>();
//...
string separator = "\t";
using (StreamWriter writer = new StreamWriter(fileName)){
for (int i = 0; i<Math.Max(list1.Count, list2.Count); i++){
var element1 = i < list1.Count ? list1[i] : "";
var element2 = i < list2.Count ? list2[i].ToString() : "";
writer.Write(element1);
writer.Write(separator);
writer.WriteLine(element2);
}
}