.net读取CSV文件
1、csv文件各列默认是以英文逗号(,)来分割的。但是在实际中,数据中也会有包含英文逗号,Windows在保存这类的数据时会把含有逗号的数据当做字符串保存,在两端会加上双引号。此时如果简单的用英文逗号做split,读出来的数据完全不是想要的。(在确保数据中不包含特殊字符的情况下可以用split)
2、ADO、OLEDB读取CSV文件
这种可以很快读取数据,也可以避免1中的问题。
但是出现了另外一种情况,ISAM机制会自动判断各列的数据类型(详细参阅https://www.douban.com/note/18510346/)。此时,如果实际数据类型与判断出来的数据类型不匹配的话,系统会用NULL替换,造成数据的丢失。
注:在读取EXCEL文件的时候,可以设 IMEX=1 ,此时会把所有列作为文本读取,但是CSV中该参数没用。
简单示例(OLEDB):
' 读取csv到DatatableDim Source_Path As StringDim File_name As String = File_FullName.Split("\")(UBound(File_FullName.Split("\")))Source_Path = File_FullName.Replace(File_name, "")TryDim connectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Source_Path & ";Extended Properties=""text;HDR=Yes;FMT=Delimited"""Dim conn As New OleDbConnection(connectionString)conn.Open()Dim cmdSelect As OleDbDataAdaptercmdSelect = New OleDbDataAdapter("select * from " & "[" & File_name & "]", conn)Dim dt As DataTable = New DataTable()cmdSelect.Fill(dt)conn.Close()Return dtCatch ex As ExceptionDebug.Print(ex.ToString)Return FalseEnd Try
3、Microsoft.VisualBasic.FileIO读取CSV文件
在参阅百度各种搜索方法后仍然没找到合适的解决方法,绝大多数内容都是各种转载,复制
尝试使用Bing搜索英文文档,在stackoverflow中有人建议使用Microsoft.VisualBasic.FileIO.TextFieldParser来读取CSV文件。
测试代码如下:
VB.net
Imports Microsoft.VisualBasic.FileIOModule Module1Sub Main()Dim path As String = ""Dim parser As TextFieldParser = New TextFieldParser(path, Text.Encoding.GetEncoding("GBK"))parser.TextFieldType = FieldType.Delimitedparser.SetDelimiters(",")Dim row As String()Dim i = 0While Not parser.EndOfDatarow = parser.ReadFields()For Each line In row'do somethingNextEnd WhileConsole.ReadKey()End SubEnd Module
C#
//需要先添加Microsoft.VisualBasic的引用
using Microsoft.VisualBasic.FileIO;
namespace ConsoleApp1
{class Program{static void Main(string[] args){using (TextFieldParser parser = new TextFieldParser(@"c:\temp\test.csv")){parser.TextFieldType = FieldType.Delimited;parser.SetDelimiters(",");while (!parser.EndOfData){//Processing rowstring[] fields = parser.ReadFields();foreach (string field in fields){//TODO: Process field}}}}}
}
该方法目前可以终结上边两种问题
相关链接:
https://docs.microsoft.com/zh-cn/dotnet/visual-basic/developing-apps/programming/drives-directories-files/parsing-text-files-with-the-textfieldparser-object
https://stackoverflow.com/questions/3507498/reading-csv-files-using-c-sharp
.net读取CSV文件相关推荐
- 【OpenCV】读取csv文件
csv简介 逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本).纯文本意味着该文件是一个 ...
- 读取CSV文件内容,将其转换成JSON字符串输出
CsvToJsonUtil 工具类作用:读取CSV文件内容,将其转换成JSON字符串输出 转换工具类代码如下: package com.test.util;import java.io.*; impo ...
- 技术图文:C# VS. Python 读取CSV文件指南
背景 CSV 是一种以逗号进行特征分隔的文本文件类型,在数据库或电子表格中是一种非常常见的导入导出格式.本篇图文就以泰坦尼克号船员获救预测( Kaggle)中使用的数据集为例来说明 C#.Python ...
- python将二维列表内容写入和读取.csv文件
python将列表按行写入至.csv文件 # coding:utf-8 import csv list=[[1,2,3,4],[5,6,7,8],[89,55,66666,5],['张三','李四', ...
- R语言读取CSV文件
#读取CSV文件 data <- read.csv("drugbank.csv", header = FALSE)
- pandas读取csv文件的前几行数据(nrows参数)、pandas读取csv文件的中间几行数据(skiprows=range(a,b))
pandas读取csv文件的前几行数据(nrows参数).pandas读取csv文件的中间几行数据(skiprows=range(a,b)) 目录 pandas读取csv文件的前几行数据.pandas ...
- pandas读取csv文件发生编码(encoding)错误:获取文件编码格式之后再读取文件
pandas读取csv文件发生编码(encoding)错误:获取文件编码格式之后再读取文件 目录
- python读取csv文件并修改指定内容-pandas读取CSV文件时查看修改各列的数据类型格式...
下面给大家介绍下pandas读取CSV文件时查看修改各列的数据类型格式,具体内容如下所述: 我们在调bug的时候会经常查看.修改pandas列数据的数据类型,今天就总结一下: 1.查看: Numpy和 ...
- python读取csv文件的方法-CSV文件在Python中的几种处理方式
Comma Separated Values,简称CSV,它是一种以逗号分隔数值的文件类型.在数据库或电子表格中,它是最常见的导入导出格式,它以一种简单而明了的方式存储和共享数据,CSV文件通常以纯文 ...
- python批量读取csv文件-Python读取/批量读取文件
相信很多人的日常工作中,数据源除了来自数据库以外,其次就是外部文件,因此掌握读取文件的技能是相当必要的.在这里特此整理读取外部文件的方法,希望能有助你们快速解决问题.当然本文对读者的假设是有一定的py ...
最新文章
- 相关子查询 与非相关子查询
- [Python] sys.argv[] 用法
- OpenCV 中文wiki
- python第七章_python 第七章 模块
- leetcode-sort-colors
- 学习笔记4 :opencv 、PIL、matplotlib.image打开、保存图片
- 以数据为中心的存储观
- java enum枚举类型的使用
- html仿命令行界面,HTML仿命令行界面具体实现
- boost电路输出电流公式_boost电路解析
- SSM药店管理系统的设计与实现答辩PPT模板
- freeswitch php esl,FreeSWITCH增加PHP ESL模块支持
- mysql execute stmt_mysql_stmt_execute()
- python正则表达式代码_python正则表达式实例代码
- AARRR模型——变现:终极目标(上)
- App Tamer for mac怎么用?
- 天龙八部手游服务器维护公告,天龙八部手游 近期更新维护公告
- G - 数字转换 LibreOJ - 10155
- Win10任务栏图标一直刷新的解决方法
- PTA平台,jmu-python-字符串-统计不同字符个数