我的csv包含mix数据类型f.ex.在单元格E8中,数据格式为日期,此E列中的其他数据为字符串。 我在经典的asp,VB Script和后端SQl服务器中使用这个连接字符串
ChekCnn.Open“Provider = Microsoft.Jet.OLEDB.4.0; Data Source =”& Path1& “;扩展属性=”“文本; HDR = YES; IMEX = 1; FMT =定界”“” 设置rs1 = ChekCnn.Execute(“SELECT * FROM myCSV.csv”)
问题在于,如果在单元格E8处有日期,那么包含字符串数据的其他单元格将不会读取并显示为空白,如果在单元格E8处为空白,则它将读取E列的每个单元格数据。
答案 0 :(得分:3)
您可以使用“schema.ini”来控制用于列的数据类型,以便将列设置为文本并转换每行数据。
“schema.ini”的MSDN参考:http://msdn.microsoft.com/en-us/library/ms709353.aspx
“schema.ini”必须与* .csv文件位于同一文件夹中。
dim ChekCnn : set ChekCnn=CreateObject ("ADODB.Connection")
dim rs1 : set rs1 = CreateObject ("ADODB.Recordset")
ChekCnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & "c:\temp\" & ";Extended Properties=""text;HDR=YES;IMEX=1;FMT=Delimited"""
Set rs1 = ChekCnn.Execute("SELECT * FROM test.csv")
Do until rs1.eof
wscript.echo rs1("dataname") & "=>" & rs1("data")
rs1.MoveNext
loop
rs1.close
test.csv
dataname,data
test1,100
test2,100
test3,100
test4,nothing
test5,100
test6,100
test7,100
SCHEMA.INI
[test.csv]
Format=CSVDelimited
DecimalSymbol=.
Col1=dataname Text
Col2=data Text
输出不带 schema.ini
test1=>100
test2=>100
test3=>100
test4=>
test5=>100
test6=>100
test7=>100
使用 schema.ini输出
test1=>100
test2=>100
test3=>100
test4=>nothing
test5=>100
test6=>100
test7=>100
答案 1 :(得分:0)
如果列名中有空格,则可以将Schema.ini文件写为
Col1 =“系统名称”文本
Col2 =“系统代码”文本