我有以下代码从DataGridView生成CSV文件并且工作正常。但它并没有保留确切的格式。例如,我在一个单元格中有125600.00,在DataGridView中有另一个单元格中有08。当我使用Excel打开CSV文件时,它显示为125600和8.当我使用记事本打开CSV文件时,它显示正确的125600.00和08.我能做些什么来查看相同的格式擅长? 感谢您的任何建议。
private void btnPrint_Click(object sender, EventArgs e)
{
sbMainFile = new StringBuilder();
int dgcolcount = this.dataGridView1.Columns.Count;
for (int i = 0; i < dgcolcount; i++)
{
sbMainFile.Append(this.dataGridView1.Columns[i].Name);
if (i < dgcolcount - 1)
{
sbMainFile.Append(",");
}
}
sbMainFile.Append("\r\n");
StringBuilder sbRow = null;
foreach (DataGridViewRow row in this.dataGridView1.Rows)
{
sbRow = new StringBuilder();
for (int i = 0; i < dataGridView1.Columns.Count; i++)
{
sbRow.Append(row.Cells[i].Value.ToString());
if (i < dgcolcount - 1)
{
sbRow.Append(",");
}
}
sbMainFile.AppendLine(sbRow.ToString());
}
SaveFileDialog savefile = new SaveFileDialog();
savefile.FileName = "default";
savefile.Filter = "CSV Files | *.csv";
savefile.DefaultExt = "csv";
if (savefile.ShowDialog() == DialogResult.OK)
{
using (System.IO.StreamWriter sw = new System.IO.StreamWriter(savefile.FileName))
sw.Write(sbMainFile.ToString());
}
}
答案 0 :(得分:2)
您可以将“列值”保存为字符串;例如08 as =“08”
变化
sbRow.Append(row.Cells[i].Value.ToString());
到
sbRow.AppendFormat("=\"{0}\"", row.Cells[i].Value.ToString());
答案 1 :(得分:1)
您的代码没有任何问题。这实际上是Excel为您格式化数据的问题。您实际上并没有丢失任何数据。您只需在Excel中指定格式即可。 (如果单击其中一个格式被破坏的单元格,您实际上可以在f(x)编辑器中看到“原始”值。)