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

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

C# crifan 10909浏览 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文件

去写代码,结果使用:

            //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报错,说上下文没有啊
    QF8年前 (2016-09-04)回复
  2. 请问dgvSearchResult是DataGridView的名字吗?他是什么类型的变量怎么定义的。 我想保存DataGridVie中我选中的某一行到CSV中,能帮忙整理一下代码么?本人是C#外行,领命于领导完不成任务了,十分感谢
    熊猫10年前 (2015-05-18)回复
85 queries in 0.690 seconds, using 22.10MB memory