将DataTable转换成CSV文件

    DataTable用于在.net项目中,用于缓存数据,DataTable表示内存中数据的一个表。CSV文件最早用在简单的数据库里,由于其格式简单,并具备很强的开放性,所以起初被扫图家用作自己图集的标记。CSV文件是个纯文本文件,每一行表示一张图片的许多属性。

    在.net项目中运用C#将DataTable转化为CSV文件,现在提供一个较为通用的方法,具体代码如下:

       /// <summary>
        /// 将DataTable转换成CSV文件
        /// </summary>
        /// <param name="dt">DataTable</param>
        /// <param name="filePath">文件路径</param>
        public static void SaveCsv(DataTable dt, string filePath)
        {
            FileStream fs = null;
            StreamWriter sw = null;
            try
            {
                fs = new FileStream(filePath + dt.TableName + ".csv", FileMode.Create, FileAccess.Write);
                sw = new StreamWriter(fs, Encoding.Default);
                var data = string.Empty;
                //写出列名称
                for (var i = 0; i < dt.Columns.Count; i++)
                {
                    data += dt.Columns[i].ColumnName;
                    if (i < dt.Columns.Count - 1)
                    {
                        data += ",";
                    }
                }
                sw.WriteLine(data);
                //写出各行数据
                for (var i = 0; i < dt.Rows.Count; i++)
                {
                    data =string.Empty;
                    for (var j = 0; j < dt.Columns.Count; j++)
                    {
                        data += dt.Rows[i][j].ToString();
                        if (j < dt.Columns.Count - 1)
                        {
                            data += ",";
                        }
                    }
                    sw.WriteLine(data);
                }
            }
            catch (IOException ex)
            {
                throw new IOException(ex.Message, ex);
            }
            finally
            {
                if (sw != null) sw.Close();
                if (fs != null) fs.Close();
            }
        }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏跟着阿笨一起玩NET

Linq 分组(group by)求和(sum)并且按照分隔符(join)分割列数据

转载:http://www.cnblogs.com/zq281660880/archive/2012/09/26/2704836.html

3192
来自专栏大内老A

深入理解C# 3.x的新特性(1): Anonymous Type

在C#3.0中,引入了一个新的Feature:Anonymous Method,允许我们已Inline的方式来定义Delegate,为Developer在Cod...

3998
来自专栏草根专栏

.NET Core 网络数据采集 -- 使用AngleSharp做html解析

4670
来自专栏跟着阿笨一起玩NET

C#自定义泛型类绑定ComboBox控件

C# WinForm ComboBox 自定义数据项 (ComboBoxItem )

2451
来自专栏大内老A

以上下文(Context)的形式创建一个共享数据的容器

在很多情况下我们具有这样的需求:为一组相关的操作创建一个执行上下文并提供一个共享的数据容器,而不是简单地定义一个全局变量,或者将数据通过参数传来传去。这样的上下...

2105
来自专栏更流畅、简洁的软件开发方式

【开源】QuickPager ASP.NET2.0分页控件V2.0.0.1——分页控件的源码 (二)

namespace JYK.Controls.PageManage {     /**//// <summary>     /// 生成分页控件需要的SQL语句...

2236
来自专栏菩提树下的杨过

如何给已经有数据的DataTable动态增加一列并赋值

以前手写sql的时代,我们经常用DataTable,自从用Linq后,很少用DataTable这些原始的东东了,近日在开发中遇到一些特殊情况,用户要求临时在显示...

2789
来自专栏james大数据架构

Excel导入导出数据库01

主要分为两部份 1.Excel操作类 1 引入 2 using System.Data.OleDb; 3 using System.IO; 4 ...

25610
来自专栏阿炬.NET

【要什么自行车】ASP.NET MVC4笔记03:调用编辑器 kindeditor

3205
来自专栏技术博客

字符串"2013/5/18 0:00:00”不是有效的 AllXsd 值

可以看到上述日期字符串当中18后面存在一个空格,就是这个空格导致的不是一个有效的AllXsd值。想让此字符串日期转换为有效的格式,可以用T来替换掉18后面的空格...

1703

扫码关注云+社区

领取腾讯云代金券