【问题标题】:ADODB.RecordSet doesn't delimit CSV columnsADODB.RecordSet 不分隔 CSV 列
【发布时间】:2016-04-10 09:20:24
【问题描述】:

我有一个 VBScript,它使用 ADODB.RecordSet 来获取分隔的 CSV 文件的所有项目。这是一段脚本:

Set rsSource = Server.CreateObject("ADODB.RecordSet")
Set cnxExcel = CreateObject("ADODB.Connection")
cnxExcel.Provider = "Microsoft.Jet.OLEDB.4.0"
cnxExcel.ConnectionString = "Data Source=" & CheminSource & ";Extended Properties='Text;HDR=YES;FMT=Delimited'"
cnxExcel.Open
rsSource.Open "SELECT * FROM [" & Fichier & "]", cnxExcel, 3
If rsSource.EOF AND rsSource.BOF Then
  RecordSetVide = true
Else
  rsSource.MoveFirst
  NbColonne = 1         
  For Each adoFld in rsSource.Fields
    ReDim Preserve TabColonne(NbColonne)
    TabColonne(NbColonne) = adoFld.Name         
  Next
End If

问题是我得到一个非分隔的输出并且分号可见:

item1;item2;item3...

代替:

项目1
项目2
第 3 项
...

这段代码过去在 II6 (W2K) 上运行良好,但在迁移到 IIS7.5 (W2008R2) 时,似乎没有考虑分隔符。

【问题讨论】:

    标签: .net csv vbscript iis-7.5 adodb


    【解决方案1】:

    引用connectionstrings.com:

    Microsoft Jet OLE DB 4.0

    分隔列

    Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\txtFilesFolder\;
    Extended Properties="text;HDR=Yes;FMT=Delimited";
    

    可以在注册表中的以下位置指定分隔符:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Text
    "Format" = "TabDelimited"

    "Format" = "Delimited(;)"

    How to Use JET in 64 bit environments

    【讨论】:

    • 谢谢!这解决了我的问题,但密钥不在您指定的路径中,而是: HKLM\Software\Wow6432Node\Microsoft\Jet\4.0\Engines\Text
    • 那么你有一个 64 位系统。在引用中添加了涵盖 64 位环境中 JET 的链接。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-18
    • 1970-01-01
    • 2013-06-09
    • 2012-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多