C#:CsvReader读取.CSV文件(转换成DataTable)
原文引用: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标题和列的操作然后根据自身的需求去改写,主要改也是简单的循环或者根据解析格式不同换一种格式其它的看需求调整。),希望对大家有所帮助,共同学习!
C#:CsvReader读取.CSV文件(转换成DataTable)的更多相关文章
- C# CSV 文件转换成DataTable
{ DataTable dt = new DataTable(); FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess ...
- C#:CsvReader读取.CSV文件并转换成DataTable
原文引用:https://www.codeproject.com/Articles/9258/A-Fast-CSV-Reader using LumenWorks.Framework.IO.Csv; ...
- xls/csv文件转换成dbf文件
转至:https://blog.csdn.net/linhai1028/article/details/80211252 编写的一个小脚本,主要是利用python中的pandas,xlrd,dbfpy ...
- python csv文件转换成xml, 构建新xml文件
csv文件 code from xml.etree.ElementTree import Element,ElementTree,tostring import json,csv def csvtox ...
- Java读取Excel文件转换成JSON并转成List——(七)
Jar包
- C#:将.csv格式文件转换成.xlsx格式文件
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- C#:StreamReader读取.CSV文件(转换成DataTable)
using System.Data; using System.IO; /// <summary> /// Stream读取.csv文件 /// </summary> /// ...
- 转换成CSV文件、Word、Excel、PDF等的方法--读取CSV文件的方法
1. 转换成CSV文件: http://www.dotnetgallery.com/lab/resource93-Export-to-CSV-file-from-Data-Table-in-Aspne ...
- python读取csv文件、excel文件并封装成dict类型的list,直接看代码
# coding=UTF-8import csvimport xlrd class ReaderFile(): """ 读取csv文件 filePath:文件路径 &qu ...
随机推荐
- es6基本语法
//let和const申明变量和常量 //作用域只限于当前代码块 //使用let申明的变量作用域不会提升 //在相同的作用域下不能申明相同的变量 //for循环体现let的父子作用域 二.es6的解构 ...
- Linux:CPU使用率100%排查方法
Linux作为一个多任务操作系统,将每个CPU的时间划分为很短的时间片,再通过调度器轮流分配给各个任务使用,因此造成多任务同时运行的错觉. CPU使用率 Linux作为一个多任务操作系统,将每个CPU ...
- 怎样从外网访问内网Zeus?
本地安装了一个Zeus,只能在局域网内访问,怎样从外网也能访问到本地的Zeus呢?本文将介绍具体的实现步骤. 准备工作 安装并启动Zeus 默认安装的Zeus端口是9090. 实现步骤 下载并解压ho ...
- 使用Ajax出现302 Moved Temporarily
现象:在用ajax发送请求时,各种参数都对,地址也对,一直进error返回parse error. 使用浏览器发现ajax请求的header的响应码处:302 Moved Temporarily 百度 ...
- Java日志 #01# 入门
很多人在学习完一个东西之后就会忘掉自己作为初学者时的体验.. 例如刚接触git的时候自己也是一头雾水,然后别人问起来,老是会说:xxxx#!@#,就是这么回事儿,有什么不好懂的. 其实从不懂到懂,再到 ...
- CE教程
https://www.52pojie.cn/thread-726510-1-1.htmlhttps://www.52pojie.cn/thread-726154-1-1.html https://w ...
- P3157 [CQOI2011]动态逆序对(树状数组套线段树)
P3157 [CQOI2011]动态逆序对 树状数组套线段树 静态逆序对咋做?树状数组(别管归并QWQ) 然鹅动态的咋做? 我们考虑每次删除一个元素. 减去的就是与这个元素有关的逆序对数,介个可以预处 ...
- 报错ORA-19809 ORA-19804
现象 问题检查 查看群集状态,发现归档挂起 [oracle@jydb1 ~]$ srvctl status database -d orcl -v 查看空间使用情况 #大小查看 SQL> sho ...
- Codeforces Round #439 (Div. 2) Problem A (Codeforces 869A) - 暴力
Rock... Paper! After Karen have found the deterministic winning (losing?) strategy for rock-paper-sc ...
- Git Add,Git别名等
一,Git Add 1. git add -A 保存所有的修改 2. git add . 保存新的添加和修改,但是不包括删除 3. git add -u 保存修改和删除,但是不 ...