【发布时间】:2017-10-27 05:55:09
【问题描述】:
我目前有一个程序,它使用 StreamReader 访问 CSV 文件并将值存储在数据网格中,但是在保存此数据时,它会为数据行的每一列值打印一个新行。
程序当前将 csv 文件打印为:
headerText、headerText、headerText、headerText
第 1 栏、第 2 栏、第 1 栏、第 2 栏、第 3 栏、第 1 栏、第 2 栏、第 3 栏、第 4 栏
我需要打印的是:
headerText、headerText、headerText、headerText
第 1 栏、第 2 栏、第 3 栏、第 4 栏
string CsvFpath = "C:/StockFile/stockfiletest.csv";
try
{
StreamWriter csvFileWriter = new StreamWriter(CsvFpath, false);
string columnHeaderText = "";
int countColumn = stockGridView.ColumnCount - 1;
if (countColumn >= 0)
{
columnHeaderText = stockGridView.Columns[0].HeaderText;
}
for (int i = 1; i <= countColumn; i++)
{
columnHeaderText = columnHeaderText + ',' + stockGridView.Columns[i].HeaderText;
}
csvFileWriter.WriteLine(columnHeaderText);
foreach (DataGridViewRow dataRowObject in stockGridView.Rows)
{
if (!dataRowObject.IsNewRow)
{
string dataFromGrid = "{0} += {1} += {2} += {3}";
dataFromGrid = dataRowObject.Cells[0].Value.ToString();
for (int i = 1; i <= countColumn; i++)
{
dataFromGrid = dataFromGrid + ',' + dataRowObject.Cells[i].Value.ToString();
csvFileWriter.Write(dataFromGrid);
}
csvFileWriter.WriteLine();
}
}
csvFileWriter.Dispose();
MessageBox.Show("Saved stockfile.csv");
}
catch (Exception exceptionObject)
{
MessageBox.Show(exceptionObject.ToString());
}
谁能告诉我我的字符串格式有什么问题以及如何实现所需的文件输出?
【问题讨论】:
-
请注意,发明自己的序列化代码通常是个坏主意...有很多现有的 CSV 库可以处理来自值的引号、逗号和其他有趣的字符...
-
@Alexei Levenkov 谢谢你的建议,在这个项目中我被限制在某些条件下,我目前正在学习编程 cert IV 所以即使我不能在这个项目上使用那个建议我肯定会将来带上它,如果我能找到一种更简单的方法,我会一直采用它,有时懒惰可能是一件好事,因为它不使用比必要更多的代码或使用其他来源更好地执行功能。谢谢伙计,我会接受你的建议。
标签: c# string csv datagridview