苏飞论坛广告位

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

分布式系统框架(V1.3) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程 - 订阅更新

HttpHelper万能框架(V2.2) HttpHelper官方出品,无敌框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V1.9) 最牛的爬虫类,没有爬不到只有想不到 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 18084|回复: 6
打印 上一主题 下一主题

[Excel] CsvHelper---C#关于CSV文件的导入和导出以及转化

[复制链接]
  • TA的每日心情
    开心
    昨天 11:24
  • 签到天数: 602 天

    [LV.9]以坛为家II

    跳转到指定楼层
    楼主
    发表于 2012-12-6 10:27:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
             CsvHelper---C#关于CSV文件的导入和导出以及转化
    导读部分
    -------------------------------------------------------------------------------------------------------------
    C#基类库苏飞版--系列教程导航http://www.sufeinet.com/thread-655-1-1.html

    下载之前你首先要注册成为会员哦,注册之后就可以直接下载啦
    更新时间:2012-12-06
    最新的CsvHelper类下载:
    CsvHelper.rar (1.02 KB, 下载次数: 531)
    这个类是关于Csv文件的一些高级操作
    1.DataTable导出到CSV
    2.将Csv读入DataTable
    看下面代码吧
    [C#] 纯文本查看 复制代码
    /// <summary>
    /// 联系方式:361983679  
    /// 更新网站:[url=http://www.sufeinet.com/thread-655-1-1.html]http://www.sufeinet.com/thread-655-1-1.html[/url]
    /// </summary>
    using System.Data;
    using System.IO;
    
    namespace DotNet.Utilities
    {
        /// <summary>
        /// CSV文件转换类
        /// </summary>
        public static class CsvHelper
        {
            /// <summary>
            /// 导出报表为Csv
            /// </summary>
            /// <param name="dt">DataTable</param>
            /// <param name="strFilePath">物理路径</param>
            /// <param name="tableheader">表头</param>
            /// <param name="columname">字段标题,逗号分隔</param>
            public static bool dt2csv(DataTable dt, string strFilePath, string tableheader, string columname)
            {
                try
                {
                    string strBufferLine = "";
                    StreamWriter strmWriterObj = new StreamWriter(strFilePath, false, System.Text.Encoding.UTF8);
                    strmWriterObj.WriteLine(tableheader);
                    strmWriterObj.WriteLine(columname);
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        strBufferLine = "";
                        for (int j = 0; j < dt.Columns.Count; j++)
                        {
                            if (j > 0)
                                strBufferLine += ",";
                            strBufferLine += dt.Rows[j].ToString();
                        }
                        strmWriterObj.WriteLine(strBufferLine);
                    }
                    strmWriterObj.Close();
                    return true;
                }
                catch
                {
                    return false;
                }
            }
    
            /// <summary>
            /// 将Csv读入DataTable
            /// </summary>
            /// <param name="filePath">csv文件路径</param>
            /// <param name="n">表示第n行是字段title,第n+1行是记录开始</param>
            public static DataTable csv2dt(string filePath, int n, DataTable dt)
            {
                StreamReader reader = new StreamReader(filePath, System.Text.Encoding.UTF8, false);
                int i = 0, m = 0;
                reader.Peek();
                while (reader.Peek() > 0)
                {
                    m = m + 1;
                    string str = reader.ReadLine();
                    if (m >= n + 1)
                    {
                        string[] split = str.Split(',');
    
                        System.Data.DataRow dr = dt.NewRow();
                        for (i = 0; i < split.Length; i++)
                        {
                            dr = split;
                        }
                        dt.Rows.Add(dr);
                    }
                }
                return dt;
            }
        }
    }
    

  • TA的每日心情
    开心
    2018-8-18 18:38
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    沙发
    发表于 2013-8-30 16:54:29 | 只看该作者
    有没有例子啊,使用不来

    补充内容 (2013-9-17 06:53):
    跟了一遍代码后,终于会了,原来传进去的参数DataTable 必须是把表头(column)先按文件格式设置好

    该用户从未签到

    板凳
    发表于 2014-4-2 23:15:27 | 只看该作者

    该用户从未签到

    地板
    发表于 2014-10-15 13:25:55 | 只看该作者

    该用户从未签到

    5
    发表于 2014-12-1 17:26:53 | 只看该作者
    [C#] 纯文本查看 复制代码
            /// <summary>
            /// 导出报表为Csv
            /// </summary>
            /// <param name="dt">DataTable</param>
            /// <param name="strFilePath">物理路径</param>
            /// <param name="tableheader">表头</param>
            /// <param name="columname">字段标题,逗号分隔</param>
            public static bool dt2csv(DataTable dt, string strFilePath, string tableheader, string columname,string fileds ="")
            {
                try
                {
                    string strBufferLine = "";
                    StreamWriter strmWriterObj = new StreamWriter(strFilePath, false, System.Text.Encoding.UTF8);
                    strmWriterObj.WriteLine(tableheader);
                    strmWriterObj.WriteLine(columname);
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        strBufferLine = "";
                        if (fileds != "")
                        {
                            string[] filedArr = fileds.Split(',');
                            for (int j = 0; j < filedArr.Length; j++)
                            {
                                string filed = filedArr[j];
                                if (j > 0)
                                    strBufferLine += ",";
                                strBufferLine += dt.Rows[i][filed].ToString().Replace(',',',').Replace('"','“');
                            }
                        }
                        else
                        {
                            for (int j = 0; j < dt.Columns.Count; j++)
                            {
                                if (j > 0)
                                    strBufferLine += ",";
                                strBufferLine += dt.Rows[i][j].ToString().Replace(',', ',').Replace('"', '“');
                            }
                        }
                        strmWriterObj.WriteLine(strBufferLine);
                    }
                    strmWriterObj.Close();
                    return true;
                }
                catch
                {
                    return false;
                }
            }


    改造好的导出!楼主这个导出时必须是和表字段一样,这个可以按表字段来导出

    该用户从未签到

    6
    发表于 2015-1-17 12:35:54 | 只看该作者
  • TA的每日心情
    开心
    2017-6-28 20:55
  • 签到天数: 1 天

    [LV.1]初来乍到

    7
    发表于 2016-10-25 10:24:17 | 只看该作者
    您需要登录后才可以回帖 登录 | 马上注册

    本版积分规则

    QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备17001017号-1 )

    GMT+8, 2018-10-18 12:56

    © 2017-2018

    快速回复 返回顶部 返回列表