封装一个CSVHelper
- public class CSVHelper
- {
- /// <summary>
- /// CSV转换成DataTable(OleDb数据库访问方式)
- /// </summary>
- /// <param name="csvPath">csv文件路径</param>
- /// <returns></returns>
- public static DataTable CSVToDataTableByOledb(string csvPath)
- {
- DataTable csvdt = new DataTable("csv");
- if (!File.Exists(csvPath))
- {
- throw new FileNotFoundException("csv文件路径不存在!");
- }
- FileInfo fileInfo = new FileInfo(csvPath);
- using (OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileInfo.DirectoryName + ";Extended Properties='Text;'"))
- {
- OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * FROM [" + fileInfo.Name + "]", conn);
- adapter.Fill(csvdt);
- }
- return csvdt;
- }
- /// <summary>
- /// CSV转换成DataTable(文件流方式)
- /// </summary>
- /// <param name="csvPath">csv文件路径</param>
- /// <returns></returns>
- public static DataTable CSVToDataTableByStreamReader(string csvPath)
- {
- DataTable csvdt = new DataTable("csv");
- int intColCount = ;
- bool blnFlag = true;
- DataColumn column;
- DataRow row;
- string strline = null;
- string[] aryline;
- using (StreamReader reader = new StreamReader(csvPath, FileUtil.GetEncoding(csvPath)))
- {
- while (!string.IsNullOrEmpty((strline = reader.ReadLine())))
- {
- aryline = strline.Split(new char[] { ',' });
- if (blnFlag)
- {
- blnFlag = false;
- intColCount = aryline.Length;
- for (int i = ; i < aryline.Length; i++)
- {
- column = new DataColumn(aryline[i]);
- csvdt.Columns.Add(column);
- }
- continue;
- }
- row = csvdt.NewRow();
- for (int i = ; i < intColCount; i++)
- {
- row[i] = aryline[i];
- }
- csvdt.Rows.Add(row);
- }
- }
- return csvdt;
- }
- /// <summary>
- /// DataTable 生成 CSV
- /// </summary>
- /// <param name="dt">DataTable</param>
- /// <param name="csvPath">csv文件路径</param>
- public static void DataTableToCSV(DataTable dt, string csvPath)
- {
- if (null == dt)
- return;
- StringBuilder csvText = new StringBuilder();
- StringBuilder csvrowText = new StringBuilder();
- foreach (DataColumn dc in dt.Columns)
- {
- csvrowText.Append(",");
- csvrowText.Append(dc.ColumnName);
- }
- csvText.AppendLine(csvrowText.ToString().Substring());
- foreach (DataRow dr in dt.Rows)
- {
- csvrowText = new StringBuilder();
- foreach (DataColumn dc in dt.Columns)
- {
- csvrowText.Append(",");
- csvrowText.Append(dr[dc.ColumnName].ToString().Replace(',', ' '));
- }
- csvText.AppendLine(csvrowText.ToString().Substring());
- }
- File.WriteAllText(csvPath, csvText.ToString(), Encoding.Default);
- }
- }
封装一个CSVHelper的更多相关文章
- 自己封装一个Log模块
Unity自己有log系统,为什么要自己封装一个 1.不好用,只能在pc上记录log文件,移动平台是没有的 2.在开发时期的log,不想在正式版里面出现.没有一个统一的开关来控制是不是要显示log,要 ...
- PHP封装一个通用好用的文件上传处理类
封装一个文件上传类完成基本功能如下: 1.可上传多个或单个文件 2.上传成功返回一个或多个文件名 3.上传失败则返回每个失败文件的错误信息 上传类中的基本功能: 1.构造参数,用户可以自定义配置参数, ...
- Swift - 简单封装一个工具类模板
创建模板类(封装一个类) 例1:新建一个名字叫做 Product 的类 Product.swift File 的内容 class Product { var name: String var desc ...
- 使用xib封装一个自定义view的步骤
使用xib封装一个自定义view的步骤 1> 新建一个继承UIView的自定义view,假设类名叫做(MJAppView) 2> 新建一个MJAppView.xib文件来描述MJAppVi ...
- yii2封装一个类控制div宽度,高度
1.首先,封装一个类,放在文件夹vendor下,命名为articls.php. <?phpclass Articles{ //测试 function add() { r ...
- C 封装一个简单二叉树基库
引文 今天分享一个喜欢佩服的伟人,应该算人类文明极大突破者.收藏过一张纸币类型如下 那我们继续科普一段关于他的简介 '高斯有些孤傲,但令人惊奇的是,他春风得意地度过了中产阶级的一生,而 没有遭受到冷 ...
- IOS中封装一个View的思路
一.封装一个View的思路 1.将View内部的业务逻辑(显示内容)封装到View中 2.一般情况下,View的位置应该由父控件来决定,也就是位置不应该固定死在View内部 3.至于View的宽高,根 ...
- 使用libzplay库封装一个音频类
装载请说明原地址,谢谢~~ 前两天我已经封装好一个duilib中使用的webkit内核的浏览器控件和一个基于vlc的用于播放视频的视频控件,这两个控件可以分别用在放酷狗播放器的乐库功能和MV ...
- 简易封装一个带有占位文字的TextView
在实际iOS应用开发中我们经常会用到类似于下图所示的界面,即带有占位文字的文本框:
随机推荐
- 理解Underscore中的uniq函数
uniq函数,是Underscore中的一个数组去重函数,给它传递一个数组,它将会返回该数组的去重副本. 1 ES6版本去重 在ES6版本中,引入了一个新的数据结构——set,这是一种类似数组的数据结 ...
- websphere 配置库中已存在应用程序,异常处理
from:http://mengdboy.iteye.com/blog/1677379 出现此问题的原因之一:操作界面上没有卸载完成. 进行一下操作: 1.删除 $WAS_HOME/profiles/ ...
- UIView 动画 依赖与 CALayer的证据
- (nullable id<CAAction>)actionForLayer:(CALayer *)layer forKey:(NSString *)event Layer: -(voi ...
- BZOJ1037:[ZJOI2008]生日聚会Party(DP)
Description 今天是hidadz小朋友的生日,她邀请了许多朋友来参加她的生日party.hidadz带着朋友们来到花园中,打算坐成一排玩游戏. 为了游戏不至于无聊,就座的方案应满足如下条件: ...
- php-------面向对象详解
php面向对象详解 面向对象 对象概念是面向对象技术的核心.在显示世界里我们所面对的事情都是对象,如计算机.电视机.自行车等.在面向对象的程序设计中,对象是一个由信息及对信息进行处理的描述所组成的整体 ...
- Linux学习总结(十)-文件复制及查看, 环境变量
一 文件复制及移动 1.命令 cp --------copy 的意思格式 cp 选项 源文件 目标文件a: 对于文件我们直接cp 文件 目标文件假定我们在普通用户家目录下/home/lv新建两个普通文 ...
- webservice和wcf和web.api简单介绍
转自:无废话的wcf等等 在.net平台下,有大量的技术让你创建一个HTTP服务,像Web Service,WCF,现在又出了Web API.在.net平台下,你有很多的选择来构建一个HTTP Ser ...
- MVC学习十三:RouteDebugger插件应用
1.下载第三方程序集RouteDebugger https://files.cnblogs.com/files/WarBlog/RouteDebugger.rar 2.把RouteDebugger程序 ...
- 【luogu P2195 HXY造公园】 题解
题目链接:https://www.luogu.org/problemnew/show/P2195 fir.吐槽题目(省略1w字 sec.考虑对一个森林的维护,每棵树用并查集维护. 操作1:输出当前查询 ...
- 一点一点看JDK源码(四)java.util.ArrayList 中篇
一点一点看JDK源码(四)java.util.ArrayList 中篇 liuyuhang原创,未经允许禁止转载 本文举例使用的是JDK8的API 目录:一点一点看JDK源码(〇) 1.综述 在前篇中 ...