http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

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

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 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, 下载次数: 589)
这个类是关于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;
        }
    }
}



1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
沙发
发表于 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 | 只看该作者
l楼主的帖子太丰富了!!!!
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 | 只看该作者
感谢您的无私奉献,真是帮了我的大忙了
7
发表于 2016-10-25 10:24:17 | 只看该作者
导出来的都是乱码
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

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

GMT+8, 2024-11-24 21:03

© 2014-2021

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