【发布时间】:2023-04-04 23:59:01
【问题描述】:
我一直在尝试在数据记录后将数据表导出到 Visual Studio 中的 csv。
由于某种原因,我在导入 excel 时得到了奇怪的结果,而记事本很好。似乎正在添加换行符,但在数据中的随机点。
我已经为此奋斗了一段时间,因此感谢您的帮助!
void SaveAllData()
{
{
saveFileDialog1.InitialDirectory = "C"; // open save file window
saveFileDialog1.Title = "Save as CSV File"; // promt save as csv
saveFileDialog1.FileName = DateTime.Now.ToString("dd.MM.yy_HH.mm");
saveFileDialog1.Filter = "CSV File | *.csv"; // csv format
if (saveFileDialog1.ShowDialog() != DialogResult.Cancel) // if save dialog opens
{
string value = "";
DataGridViewRow dr = new DataGridViewRow();
StreamWriter swOut = new StreamWriter(saveFileDialog1.FileName, true, Encoding.ASCII);
//write header rows to csv
for (int i = 0; i <= IncomingDataTable.Columns.Count - 1; i++)
{
if (i > 0)
{
swOut.Write(",");
}
swOut.Write(IncomingDataTable.Columns[i].HeaderText);
}
swOut.WriteLine();
//write DataGridView rows to csv
for (int j = 0; j <= IncomingDataTable.Rows.Count - 1; j++)
{
if (j > 0)
{
swOut.WriteLine();
}
dr = IncomingDataTable.Rows[j];
for (int i = 0; i <= IncomingDataTable.Columns.Count - 1; i++)
{
if (i > 0)
{
swOut.Write(",");
}
value = dr.Cells[i].Value.ToString();
swOut.Write(value);
}
}
swOut.Close();
}
MessageBox.Show("Your data has been successfully saved.", "Message", MessageBoxButtons.OK, MessageBoxIcon.Information); // alert user file has saved
serialPort1.Close(); // close serial port
Setup_Page f1 = new Setup_Page(); // open setup page
this.Hide();
f1.ShowDialog();
Close(); // close this page
}
}
【问题讨论】:
-
有一些库可以为您执行此操作:nuget.org/packages/CsvHelper
-
@Magnus 我的问题不是导出为 CSV,而是在导出过程中我的数据中出现换行符。
-
您的传入数据是否包含换行符?尝试在写字板而不是记事本中打开 CSV 文件,因为写字板会在换行时中断,但记事本不会。如果这是问题所在,请在写入之前修剪所有传入数据。
-
@Lithis 天才!最烦人的事情是我已经在修剪我的数据,但没有将修剪后的数据用于表格。非常感谢您的帮助!
标签: c# excel visual-studio csv streamwriter