封装一个CSVHelper

  1     public class CSVHelper
  2     {
  3         /// <summary>
  4         /// CSV转换成DataTable(OleDb数据库访问方式)
  5         /// </summary>
  6         /// <param name="csvPath">csv文件路径</param>
  7         /// <returns></returns>
  8         public static DataTable CSVToDataTableByOledb(string csvPath)
  9         {
 10             DataTable csvdt = new DataTable("csv");
 11             if (!File.Exists(csvPath))
 12             {
 13                 throw new FileNotFoundException("csv文件路径不存在!");
 14             }
 15
 16             FileInfo fileInfo = new FileInfo(csvPath);
 17             using (OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileInfo.DirectoryName + ";Extended Properties=‘Text;‘"))
 18             {
 19                 OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * FROM [" + fileInfo.Name + "]", conn);
 20                 adapter.Fill(csvdt);
 21             }
 22             return csvdt;
 23         }
 24
 25         /// <summary>
 26         /// CSV转换成DataTable(文件流方式)
 27         /// </summary>
 28         /// <param name="csvPath">csv文件路径</param>
 29         /// <returns></returns>
 30         public static DataTable CSVToDataTableByStreamReader(string csvPath)
 31         {
 32             DataTable csvdt = new DataTable("csv");
 33
 34             int intColCount = 0;
 35             bool blnFlag = true;
 36             DataColumn column;
 37             DataRow row;
 38             string strline = null;
 39             string[] aryline;
 40
 41             using (StreamReader reader = new StreamReader(csvPath, FileUtil.GetEncoding(csvPath)))
 42             {
 43                 while (!string.IsNullOrEmpty((strline = reader.ReadLine())))
 44                 {
 45                     aryline = strline.Split(new char[] { ‘,‘ });
 46
 47                     if (blnFlag)
 48                     {
 49                         blnFlag = false;
 50                         intColCount = aryline.Length;
 51                         for (int i = 0; i < aryline.Length; i++)
 52                         {
 53                             column = new DataColumn(aryline[i]);
 54                             csvdt.Columns.Add(column);
 55                         }
 56                         continue;
 57                     }
 58
 59                     row = csvdt.NewRow();
 60                     for (int i = 0; i < intColCount; i++)
 61                     {
 62                         row[i] = aryline[i];
 63                     }
 64                     csvdt.Rows.Add(row);
 65                 }
 66             }
 67
 68             return csvdt;
 69         }
 70
 71         /// <summary>
 72         /// DataTable 生成 CSV
 73         /// </summary>
 74         /// <param name="dt">DataTable</param>
 75         /// <param name="csvPath">csv文件路径</param>
 76         public static void DataTableToCSV(DataTable dt, string csvPath)
 77         {
 78             if (null == dt)
 79                 return;
 80
 81             StringBuilder csvText = new StringBuilder();
 82             StringBuilder csvrowText = new StringBuilder();
 83             foreach (DataColumn dc in dt.Columns)
 84             {
 85                 csvrowText.Append(",");
 86                 csvrowText.Append(dc.ColumnName);
 87             }
 88             csvText.AppendLine(csvrowText.ToString().Substring(1));
 89
 90             foreach (DataRow dr in dt.Rows)
 91             {
 92                 csvrowText = new StringBuilder();
 93                 foreach (DataColumn dc in dt.Columns)
 94                 {
 95                     csvrowText.Append(",");
 96                     csvrowText.Append(dr[dc.ColumnName].ToString().Replace(‘,‘, ‘ ‘));
 97                 }
 98                 csvText.AppendLine(csvrowText.ToString().Substring(1));
 99             }
100
101             File.WriteAllText(csvPath, csvText.ToString(), Encoding.Default);
102         }
103     }

原文地址:https://www.cnblogs.com/zzlblog/p/10013122.html

时间: 2024-08-07 20:08:17

封装一个CSVHelper的相关文章

Directx11学习笔记【四】 封装一个简单的Dx11DemoBase

根据前面两个笔记的内容,我们来封装一个简单的基类,方便以后的使用. 代码和前面类似,没有什么新的内容,直接看代码吧(由于代码上次都注释了,这次代码就没怎么写注释o(╯□╰)o) Dx11DemoBase.h Dx11DemoBase.h #pragma once #include <d3d11.h> #include <D3DX11.h> #include <DxErr.h> class Dx11DemoBase { public: Dx11DemoBase(); vi

封装一个类似jquery的ajax方法

//封装一个类似jquery的ajax方法,当传入参数,就可以发送ajax请求 //参数格式如下{ // type:"get"/"post", // dataType:"json"/"jsonp", // url:"地址", // data:{key:value} // success:function(){ // } // } //还需要一个跨域方法,可以访问远程服务器的数据 function myAja

C 封装一个通用链表 和 一个简单字符串开发库

引言 这里需要分享的是一个 简单字符串库和 链表的基库,代码也许用到特定技巧.有时候回想一下, 如果我读书的时候有人告诉我这些关于C开发的积淀, 那么会走的多直啊.刚参加工作的时候做桌面开发, 服务是C++写,界面是C#写.那时候刚进去评级我是中级,因为他问我关于系统锁和信号量都答出来.开发一段 时间,写C#也写的很溜.后面招我那个人让我转行就写C++和php,那时候就开始学习C++有关知识. 后面去四川工作了,开发安卓,用eclipse + java语法 + android jdk,开发前端,

[js高手之路]javascript腾讯面试题学习封装一个简易的异步队列

这道js的面试题,是这样的,页面上有一个按钮,一个ul,点击按钮的时候,每隔1秒钟向ul的后面追加一个li, 一共追加10个,li的内容从0开始技术( 0, 1, 2, ....9 ),首先我们用闭包封装一个创建li元素的函数. 1 var create = (function(){ 2 var count = 0; 3 return function(){ 4 var oLi = document.createElement( "li" ); 5 oLi.innerHTML = co

封装一个Ajax工具函数

/*封装一个ajax工具函数*/ window.$ = {}; /*通过$定义一个ajax函数*/ /* * 1. type   string   请求的方式  默认是get * 2. url    string   请求地址  接口地址 * 3. async  boolean  默认的是true * 4. data   object   {}请求数据 * * 5.success function  成功回调函数 * 6.error   function  失败的回调函数 * */ $.ajax

C 封装一个简单二叉树基库

引文 今天分享一个喜欢佩服的伟人,应该算人类文明极大突破者.收藏过一张纸币类型如下 那我们继续科普一段关于他的简介 '高斯有些孤傲,但令人惊奇的是,他春风得意地度过了中产阶级的一生,而  没有遭受到冷酷现实的打击:这种打击常无情地加诸于每个脱离现实环境生活的  人.或许高斯讲求实效和追求完美的性格,有助于让他抓住生活中的简单现实.  高斯22岁获博士学位,25岁当选圣彼德堡科学院外籍院士,30岁任哥廷根大学数  学教授兼天文台台长.虽说高斯不喜欢浮华荣耀,但在他成名后的五十年间,这  些东西就像

1.使用C++封装一个链表类LinkList

 使用C++封装一个链表类LinkList.写出相应一个测试用例 链表需要提供 添加 修改删除 除重 合并 排序创建 销毁等接口. 不能调用库函数或者使用STL等类库 题目延伸***********逆置链表********** LinkNode.h #ifndef LINKNODE_H #define LINKNODE_H #include <iostream> class LinkNode { public: int m_idata; LinkNode* m_pnext; }; #end

封装一个简单的solrserver组件

一个简单的solrserver组件 实现索引更新的异步处理,以及查询接口,日志/线程池/队列监控没有加上. SolrDocment封装 接口: public interface ISolrDocument { public SolrInputDocument convertToInputDocument() throws Exception; public void buildSolrDocument(SolrDocument document) throws Exception; } 实现:

基于ionic框架封装一个图片轮播指令的几点

在这里我想在项目中封装一个图片轮播的指令 (本项目使用的是ionic框架) 1)定义指令 define(['app'],function(myapp){ myapp.directive('myslidebanner',['$state',function(s){ return{ templateUrl:'directives/slide-banner/slide-banner.html', scope:{ banimg:'=',//数据的来源 }, link:function(s,el,atr)