您的当前位置:首页.csv文件按逗号分割,非简单的split分割

.csv文件按逗号分割,非简单的split分割

2020-05-21 来源:世旅网
.csv⽂件按逗号分割,⾮简单的split分割

1、csv⽂件各列默认是以英⽂逗号(,)来分割的。但是在实际中,数据中也会有包含英⽂逗号,Windows在保存这类的数据时会把含有逗号的数据当做字符串保存,在两端会加上双引号。此时如果简单的⽤英⽂逗号做split,读出来的数据完全不是想要的。(在确保数据中不包含特殊字符的情况下可以⽤split)

2、ADO、OLEDB读取CSV⽂件

这种可以很快读取数据,也可以避免1中的问题。

注:在读取EXCEL⽂件的时候,可以设 IMEX=1 ,此时会把所有列作为⽂本读取,但是CSV中该参数没⽤。简单⽰例(OLEDB):

' 读取csv到Datatable

Dim Source_Path As String

Dim File_name As String = File_FullName.Split(\"\\\")(UBound(File_FullName.Split(\"\\\"))) Source_Path = File_FullName.Replace(File_name, \"\") Try

Dim 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 OleDbDataAdapter

cmdSelect = New OleDbDataAdapter(\"select * from \" & \"[\" & File_name & \"]\", conn) Dim dt As DataTable = New DataTable() cmdSelect.Fill(dt) conn.Close() Return dt

Catch ex As Exception Debug.Print(ex.ToString) Return False End Try

C#

//需要先添加Microsoft.VisualBasic的引⽤using Microsoft.VisualBasic.FileIO;namespace ConsoleApp1{

class Program {

static void Main(string[] args) {

using (TextFieldParser parser = new TextFieldParser(@\"c:\emp\est.csv\")) {

parser.TextFieldType = FieldType.Delimited; parser.SetDelimiters(\); while (!parser.EndOfData) {

//Processing row

string[] fields = parser.ReadFields(); foreach (string field in fields) {

//TODO: Process field } } } } }}

因篇幅问题不能全部显示,请点此查看更多更全内容