求指教:Datagridview导出数据保存不完整

tasmanqi 2020-02-04 03:44:49


图片中的4个datagridview控件的数据分别需要导出保存到CSV文件中,目前就第一个datagridview控件能导出,但都出数据不完整。剩下3个datagridview的数据导出全部为空。

程序如下:

private void BtExportCSV_PTData1_Click(object sender, EventArgs e)
{
SaveCSVFile(dataGridView1);
}

private void SaveCSVFile(DataGridView dgv)
{
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.DefaultExt = "csv";
DialogResult result = saveFileDialog.ShowDialog();
if (result == DialogResult.OK)
{
System.IO.Stream fs = saveFileDialog.OpenFile();
System.IO.StreamWriter sw = new System.IO.StreamWriter(fs);
if (dgv.Rows.Count > 0)
{
foreach (DataGridViewColumn col in dgv.Columns)
{
sw.Write(col.HeaderText + ",");
}
sw.Write(Environment.NewLine);
foreach (DataGridViewRow row in dgv.Rows)
{
foreach (DataGridViewCell cell in row.Cells)
{
if (cell.Value != null)
{
sw.Write(cell.Value.ToString() + ",");
}
}
sw.Write(Environment.NewLine);
}
fs.Flush();
fs.Close();
}
}
}
...全文
182 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
tasmanqi 2020-03-03
  • 打赏
  • 举报
回复
哎,犯了一个低级错误,fs.Flush()改成 sw.Flush()就行了。 private void SaveCSVFile(DataGridView dgv) { SaveFileDialog saveFileDialog = new SaveFileDialog(); saveFileDialog.DefaultExt = "csv"; DialogResult result = saveFileDialog.ShowDialog(); if (result == DialogResult.OK) { System.IO.Stream fs = saveFileDialog.OpenFile(); System.IO.StreamWriter sw = new System.IO.StreamWriter(fs); if (dgv.Rows.Count > 0) { foreach (DataGridViewColumn col in dgv.Columns) { sw.Write(col.HeaderText + ","); } sw.Write(Environment.NewLine); foreach (DataGridViewRow row in dgv.Rows) { foreach (DataGridViewCell cell in row.Cells) { if (cell.Value != null) { sw.Write(cell.Value.ToString() + ","); } } sw.Write(Environment.NewLine); } } sw.Flush(); sw.Close(); fs.Close(); } }
horizon82 2020-02-07
  • 打赏
  • 举报
回复
逐行逐列调试,看下输出的是什么。
yanghao1 2020-02-05
  • 打赏
  • 举报
回复
刷新一下应该可以。
tasmanqi 2020-02-05
  • 打赏
  • 举报
回复
引用 1 楼 吉普赛的歌 的回复:
建议你保存数据源的 DataTable , 直接用 DataTable 导出 Excel 文件。
你好,用datatable直接导出数据还是不完整,但是导出的数据是要多一点。 private void SaveCSVFile(DataTable dt) { SaveFileDialog saveFileDialog = new SaveFileDialog(); saveFileDialog.DefaultExt = "csv"; DialogResult result = saveFileDialog.ShowDialog(); if (result == DialogResult.OK) { System.IO.Stream fs = saveFileDialog.OpenFile(); System.IO.StreamWriter sw = new System.IO.StreamWriter(fs,Encoding.UTF8,1024); if (dt.Rows.Count > 0) { foreach (DataColumn col in dt.Columns) { sw.Write(col.ColumnName + ","); } sw.Write(Environment.NewLine); foreach (DataRow row in dt.Rows) { foreach(object ob in row.ItemArray.ToList<object>()) { if (ob != null) { sw.Write(ob.ToString() + ","); } } sw.Write(Environment.NewLine); } fs.Flush(); fs.Close(); } } }
吉普赛的歌 2020-02-04
  • 打赏
  • 举报
回复
建议你保存数据源的 DataTable , 直接用 DataTable 导出 Excel 文件。

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧