最新消息:20210816 当前crifan.com域名已被污染,为防止失联,请关注(页面右下角的)公众号

【已解决】C#中DataGridView中的数据导出为CSV

C# crifan 11146浏览 0评论

【背景】

一个C#的winform程序,其中有DataGridView,里面已有数据:

datagridview has contain data

之前已经可以实现导出为Excel:

【已解决】将C#中的DataGridView中的数据,导出为Excel

现在想要将其导出为CSV文件。

【解决过程】

1.参考:

Export DataGridView to CSV

Exporting datagridview to csv file

DataGridView导出到CSV文件

去写代码,结果使用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
//settings
//string delimiter = "|";
string delimiter = ",";
 
string outputFilename = "fiverrComScrapedResult.csv";
string fullFilename = Path.Combine(getSaveFolder(), outputFilename);
 
StreamWriter csvStreamWriter = new StreamWriter(fullFilename, false, System.Text.Encoding.UTF8);
 
//output header data
string strHeader = "";
for (int i = 0; i < dgvSearchResult.Columns.Count; i++)
{
    strHeader += dgvSearchResult.Columns[i].HeaderText + delimiter;
}
csvStreamWriter.WriteLine(strHeader);
 
//output rows data
for (int j = 0; j < dgvSearchResult.Rows.Count; j++)
{
    string strRowValue = "";
 
    for (int k = 0; k < dgvSearchResult.Columns.Count; k++)
    {
        strRowValue += dgvSearchResult.Rows[j].Cells[k].Value + delimiter;
 
    }
    csvStreamWriter.WriteLine(strRowValue);
}
 
csvStreamWriter.Close();

就可以生成对应的csv文件了。

但是,其中,如果是分隔符为"|"的话,结果生成的csv,用excel打开,却是没法自动分列显示的,只是个普通文本:

delimter use vertical line use excel open not show ok

必须用逗号“,”作为分隔符,然后生成的csv,用excel打开,才可以自动识别,对应的数据,才可以分列显示:

use comma as delimter can show ok

 

【总结】

C#中,将DataGridView中的数据,导出为CSV,其实就是:

  • 新建个普通的文本文件,对应的是StreamWriter
  • 然后将DataGridView中的数据
    • 包括头和每行的数据,
  • 都转成字符串,然后把字符串,保存到对应的StreamWriter
  • 最后数据写完后,close,即可。

转载请注明:在路上 » 【已解决】C#中DataGridView中的数据导出为CSV

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (2)

  1. string fullFilename = Path.Combine(getSaveFolder(), outputFilename); 为什么这句中的getSaveFolder报错,说上下文没有啊
    QF9年前 (2016-09-04)回复
  2. 请问dgvSearchResult是DataGridView的名字吗?他是什么类型的变量怎么定义的。 我想保存DataGridVie中我选中的某一行到CSV中,能帮忙整理一下代码么?本人是C#外行,领命于领导完不成任务了,十分感谢
    熊猫10年前 (2015-05-18)回复
85 queries in 0.193 seconds, using 22.15MB memory