2011-06-02 43 views
-1

顯然,我在嘗試使用schema.ini來定義csv時缺少一些東西。我的代碼似乎忽略了schema.ini。schema.ini來定義csv

的SCHEMA.INI被放置在相同的子目錄的CSV和如下:

[excel.csv] 
Format = CSVDelimited 

Col1=TSP text width 17 
Col2=Svc text width 17 
Col3=DTM text width 3 

其由「標題」行和一個「數據」行是如下CSV數據:

"TSP","Svc","DTM" 

"006958581","006927792","rdt" 

我嘗試使用的代碼如下:

Imports System.Data.OleDb 
Module Module1 
Sub Main() 

Dim Csv_in_name As String = "excel.csv" 
Dim Csv_in_path As String = 
     "C:\Documents and Settings\Administrator\My Documents" + _ 
     "\Visual Studio 2008\Projects\csv_reader\csv_reader\bin\Debug" 
Dim cn As New OleDbConnection 
Dim adapter As New OleDbDataAdapter 
Dim cmd As New OleDbCommand 
Dim dtset As New DataSet 
Dim dt As New DataTable 
Dim cnstr As String = 
     "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data source = " + _ 
     Csv_in_path + "\; Extended Properties=""Text;HDR=No;FMT=Delimited""" 

cn.ConnectionString = cnstr 
cn.Open() 

cmd.Connection = cn 
cmd.CommandText = "Select * from " + Csv_in_name 

adapter.SelectCommand = cmd 
adapter.Fill(dtset, "MyTable") 

dt = dtset.Tables("MyTable") 
cn.Close() 
dt.WriteXml(Csv_in_path + "\data.xml") 

End Sub 
End Module 

HDR=No在T他連接字符串,代碼似乎忽略schema.ini由字段分隔符名稱證明。兩行被解釋爲數據和XML數據如下:

<?xml version="1.0" standalone="yes" ?> 
<NewDataSet> 
    <MyTable> 
    <F1>TSP</F1> 
    <F2>Svc</F2> 
    <F3>DTM</F3> 
    </MyTable> 
    <MyTable> 
    <F1>006958581</F1> 
    <F2>006927792</F2> 
    <F3>rdt</F3> 
    </MyTable> 
</NewDataSet> 

HDR=Yes,符合市場預期SCHEMA.INI被忽略,字段通過在CSV的第一行正確標記。 XML數據如下:

<?xml version="1.0" standalone="yes" ?> 
<NewDataSet> 
    <MyTable> 
    <TSP>006958581</TSP> 
    <Svc>006927792</Svc> 
    <DTM>rdt</DTM> 
    </MyTable> 
</NewDataSet> 

由於SCHEMA.INI存在於這兩種情況下,我會預期在第一個實例,但具有相同字段分隔符中,因爲這些第二個實例2行數據的是schema.ini中的定義。爲什麼schema.ini被忽略?

+0

您知道如何格式化您的問題,以便更好地顯示代碼和文件內容。 – 2011-06-02 15:05:45

+0

而這一個是怎麼來的VB.NET從一些其他網站(MSDN論壇,3.5年前發佈!)複製? http://social.msdn.microsoft.com/forums/en-US/vbgeneral/thread/ba46bd29-984c-4431-825f-a9cb0b57db2b/ – 2011-06-02 15:17:12

回答

1

將其更改爲HDR=No

HDR代表列標題

+0

實際上對不起,沒有工作的人 - 改變之後根本沒有改變 – 2011-06-02 02:48:06

+0

It應該工作。發生了什麼? – SLaks 2011-06-02 02:48:39

+0

根本沒有任何變化,它仍然作爲標題放在第一個記錄 – 2011-06-02 02:58:10