.csv文件按逗號分割,非簡單的split分割


1、csv文件各列默認是以英文逗號(,)來分割的。但是在實際中,數據中也會有包含英文逗號,Windows在保存這類的數據時會把含有逗號的數據當做字符串保存,在兩端會加上雙引號。此時如果簡單的用英文逗號做split,讀出來的數據完全不是想要的。(在確保數據中不包含特殊字符的情況下可以用split)

 

 

 

 

 

 

2、ADO、OLEDB讀取CSV文件

這種可以很快讀取數據,也可以避免1中的問題。

但是出現了另外一種情況,ISAM機制會自動判斷各列的數據類型(詳細參閱https://www.douban.com/note/18510346/)。此時,如果實際數據類型與判斷出來的數據類型不匹配的話,系統會用NULL替換,造成數據的丟失。

注:在讀取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:\temp\test.csv"))
            {
                parser.TextFieldType = FieldType.Delimited;
                parser.SetDelimiters(",");
                while (!parser.EndOfData)
                {
                    //Processing row
                    string[] fields = parser.ReadFields();
                    foreach (string field in fields)
                    {
                        //TODO: Process field
                    }
                }
            }
        }
    }
}

 

————————————————
版權聲明:本文為CSDN博主「cilves」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/hancluo/article/details/86590732


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM