原文引用:https://www.codeproject.com/Articles/9258/A-Fast-CSV-Reader

    using LumenWorks.Framework.IO.Csv;
    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.IO;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks; /// <summary>
/// 获取路径下的.csv文件
/// </summary>
/// <param name="FilePath"></param>
/// <returns></returns>
public static DataTable GetStream(string FilePath)
{
FileStream fileStream = new FileStream(FilePath, FileMode.Open, FileAccess.Read, FileShare.Read);
byte[] bytes = new byte[fileStream.Length];
fileStream.Read(bytes, 0, bytes.Length);
fileStream.Close();
Stream stream = new MemoryStream(bytes);
return GetData(stream);
} /// <summary>
/// 将.csv文件转换成DataTable
/// </summary>
/// <param name="stream"></param>
/// <returns></returns>
private static DataTable GetData(Stream stream)
{
using (stream)
{
using (StreamReader input = new StreamReader(stream, Encoding.GetEncoding("GBK")))
{
using (CsvReader csv = new CsvReader(input, true))
{
DataTable dt = new DataTable();
//第一行字段数量
int columnCount = csv.FieldCount;
//标题数组
string[] headers = csv.GetFieldHeaders();
//循环添加标题行
for (int i = 0; i < columnCount; i++)
{
dt.Columns.Add(headers[i]);
}
//循环添加列数据
while (csv.ReadNextRecord())
{
DataRow dr = dt.NewRow();
for (int i = 0; i < columnCount; i++)
{
if (!string.IsNullOrWhiteSpace(csv[i]))
{
dr[i] = csv[i];
}
}
dt.Rows.Add(dr);
}
return dt;
}
}
}
}

 

我只是参考原文里面的实例,根据我项目的需求换了一种写法,换汤不换药(先看明白简单的CsvReader对.csv标题和列的操作然后根据自身的需求去改写,主要改也是简单的循环或者根据解析格式不同换一种格式其它的看需求调整。),希望对大家有所帮助,共同学习!

最新文章

  1. Softreference | WeakReference
  2. 天河微信小程序入门《四》:融会贯通,form表单提交数据库
  3. Swift -字符串
  4. markdown安装和使用
  5. php基础06:运算符
  6. C# Winform常见的Editor及其它经验
  7. 结合NGUI做的手机拍照(可自定义相框)
  8. 分享web前端七款HTML5 Loading动画特效集锦
  9. SSM拦截器应用
  10. ios 设置label的高度随着内容的变化而变化
  11. 谈谈iOS中粘性动画以及果冻效果的实现
  12. BZOJ 1084 最大子矩阵
  13. zoj 1078
  14. Python爬虫通过替换http request header来欺骗浏览器实现登录
  15. Oracle查询用户权限
  16. Web系统Login拦截器
  17. c++析构函数调用时机
  18. IDEA常用快捷键总结
  19. javaScript+html5实现图片拖拽
  20. jxl 读取xls,并转为二维数组可进行保存

热门文章

  1. 《天书夜读:从汇编语言到windows内核编程》三 练习反汇编C语言程序
  2. java面向对象的构造函数
  3. shell的EOF用法
  4. Python 面向对象(三) 魔术方法
  5. GItCandy版本库搬迁步骤
  6. 自学HTML5难 我们应该怎么做
  7. Python简单爬虫
  8. CCF-201604-1-折点计数
  9. 关于PHP 采集类
  10. C++雾中风景4:多态引出的困惑,对象的拷贝?