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文件相关推荐

  1. 【OpenCV】读取csv文件

    csv简介 逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本).纯文本意味着该文件是一个 ...

  2. 读取CSV文件内容,将其转换成JSON字符串输出

    CsvToJsonUtil 工具类作用:读取CSV文件内容,将其转换成JSON字符串输出 转换工具类代码如下: package com.test.util;import java.io.*; impo ...

  3. 技术图文:C# VS. Python 读取CSV文件指南

    背景 CSV 是一种以逗号进行特征分隔的文本文件类型,在数据库或电子表格中是一种非常常见的导入导出格式.本篇图文就以泰坦尼克号船员获救预测( Kaggle)中使用的数据集为例来说明 C#.Python ...

  4. python将二维列表内容写入和读取.csv文件

    python将列表按行写入至.csv文件 # coding:utf-8 import csv list=[[1,2,3,4],[5,6,7,8],[89,55,66666,5],['张三','李四', ...

  5. R语言读取CSV文件

    #读取CSV文件 data <- read.csv("drugbank.csv", header = FALSE)

  6. pandas读取csv文件的前几行数据(nrows参数)、pandas读取csv文件的中间几行数据(skiprows=range(a,b))

    pandas读取csv文件的前几行数据(nrows参数).pandas读取csv文件的中间几行数据(skiprows=range(a,b)) 目录 pandas读取csv文件的前几行数据.pandas ...

  7. pandas读取csv文件发生编码(encoding)错误:获取文件编码格式之后再读取文件

    pandas读取csv文件发生编码(encoding)错误:获取文件编码格式之后再读取文件 目录

  8. python读取csv文件并修改指定内容-pandas读取CSV文件时查看修改各列的数据类型格式...

    下面给大家介绍下pandas读取CSV文件时查看修改各列的数据类型格式,具体内容如下所述: 我们在调bug的时候会经常查看.修改pandas列数据的数据类型,今天就总结一下: 1.查看: Numpy和 ...

  9. python读取csv文件的方法-CSV文件在Python中的几种处理方式

    Comma Separated Values,简称CSV,它是一种以逗号分隔数值的文件类型.在数据库或电子表格中,它是最常见的导入导出格式,它以一种简单而明了的方式存储和共享数据,CSV文件通常以纯文 ...

  10. python批量读取csv文件-Python读取/批量读取文件

    相信很多人的日常工作中,数据源除了来自数据库以外,其次就是外部文件,因此掌握读取文件的技能是相当必要的.在这里特此整理读取外部文件的方法,希望能有助你们快速解决问题.当然本文对读者的假设是有一定的py ...

最新文章

  1. 相关子查询 与非相关子查询
  2. [Python] sys.argv[] 用法
  3. OpenCV 中文wiki
  4. python第七章_python 第七章 模块
  5. leetcode-sort-colors
  6. 学习笔记4 :opencv 、PIL、matplotlib.image打开、保存图片
  7. 以数据为中心的存储观
  8. java enum枚举类型的使用
  9. html仿命令行界面,HTML仿命令行界面具体实现
  10. boost电路输出电流公式_boost电路解析
  11. SSM药店管理系统的设计与实现答辩PPT模板
  12. freeswitch php esl,FreeSWITCH增加PHP ESL模块支持
  13. mysql execute stmt_mysql_stmt_execute()
  14. python正则表达式代码_python正则表达式实例代码
  15. AARRR模型——变现:终极目标(上)
  16. App Tamer for mac怎么用?
  17. 天龙八部手游服务器维护公告,天龙八部手游 近期更新维护公告
  18. G - 数字转换 LibreOJ - 10155
  19. Win10任务栏图标一直刷新的解决方法
  20. PTA平台,jmu-python-字符串-统计不同字符个数

热门文章

  1. ADE7878ACPZ-RL引脚分析
  2. Oracle数据库主键自增的两种方式(SEQUENCE和触发器)
  3. Oracle主键设置自增
  4. html比白色深,卫生间下灰上白效果图 洗手间墙砖比地砖颜色深还是浅好
  5. jquery实现根据id给input赋值
  6. 给Neuralink员工“头顶绑炸弹”,马斯克的脑机能进行人体实验吗?
  7. TP5之页面跳转样式
  8. vue openlayers——图层控制 切换底图
  9. android so文件的作用,Android SO库
  10. python 转义符与转义字符 200310