将一些数据写入csv文件时遇到了很大问题。我有很多测量值。每个值都由名称,单位,值描述。所以我想为具有这三个属性的列构建每个值。 我想将它存储到csv文件中,如下所示:
Width Cell Wall Thickness Coarseness Curl-Index etc.
mm mm mg/m % etc.
16,2 3,2 0,000 11,7 etc.
直到现在我正在编写名称的标题,另一个用于单位和值(以前存储在字符串数组中)我只是写在一行中。 直到现在我的csv文件看起来像这样:(
Width;Cell Wall Thickness;Coarseness;Curl-Index;etc.
mm;mm;mg/m;%;etc.
16,2;3,2;0,000;11,7;etc.
如果它不是很多值,我不会关心这个,但有很多,所以当我打开csv文件时,问题是标题不适合值和单位。它没有组织,我无法将值与标题匹配。 我希望所有内容都按列组织。任何帮助将非常感谢! 这是我到现在为止的代码:
StreamWriter sw = new StreamWriter("test2.csv");
int RowCount = 3;
int ColumnCount = 4;
string[][] Transfer_2D = new string[RowCount][];
Transfer_2D[0] = new string[3]{"Width", "CWT", "Coarseness", "Curl-Index"};//name of the values
Transfer_2D[1] = new string[3] {"mm", "mm", "mg/m", "%"}; //units
Transfer_2D[2] = new string[3] { TransferData[0], TransferData[1], TransferData[2], TransferData[3] };
for (int i = 0; i < RowCount; i++)
{
for (int j = 0; j < ColumnCount; j++)
{
sw.Write(Transfer_2D[i][j]);//write one row separated by columns
if (j < ColumnCount)
{
sw.Write(";");//use ; as separator between columns
}
}
if (i < RowCount)
{
sw.Write("\n");//use \n to separate between rows
}
}
sw.Close();
}
答案 0 :(得分:0)
对于CSV工作,我使用http://joshclose.github.io/CsvHelper/,这是一个非常好的助手类,但它需要你稍微改变你的工作。
我建议你创建一个类来存储每个条目,然后创建一个“Mapper”来将它映射到csv字段。然后,您只需将对象集合和映射类传递给帮助程序,它就会生成结构化的CSV。
该页面上有很多例子,所以你应该直截了当地完成工作。
答案 1 :(得分:0)
您可以将字符串设置为固定长度。 例子看这里:(.NET Format a string with fixed spaces)
编辑代码更改
int iWantedStringLength = 20;
// Edited here:
string sFormatInstruction = "{0,-" + iWantedStringLength.ToString() + "}";
for (int i = 0; i < RowCount; i++)
{
for (int j = 0; j < ColumnCount; j++)
{
sw.Write(String.Format(sFormatInstruction, Transfer_2D[i][j]));//write one row separated by columns
if (j < ColumnCount)
{
sw.Write(";");//use ; as separator between columns
}
}
if (i < RowCount)
{
sw.Write("\n");//use \n to separate between rows
}
}