文章出處

1、問題出現

      在開發應用程序的過程中,比較常用一功能就是通過oledb驅動讀取excel、csv、text等文件;而最近有客戶反映,在使用短信平臺(下載地址:http://www.sms1086.com/product/detail-150.html),發現出現以下問題:

image

    還有一種情況,excel只能導入部分,而其他的導入不進去。

    而其他excel或text文件,不會出現此類問題。但是將有問題的excel粘貼到新建的文件中,還會出現類似問題。

2、網上解答

    在博客園http://www.cnblogs.com/clare-zhang/archive/2012/05/30/2525884.html給出了解決方案:

    查詢注冊表,將TypeGuessRows=8 修改為 TypeGuessRows=0

    下圖是Win10 64位企業版的修改位置,操作系統不通,修改地方不通;建議查詢注冊表,修改所有TypeGuessRows為0

QQ圖片20170218184340

    按照此方法,可解決Excel數據丟失問題。棒棒的~~~~~~~~

3、讀取Text文件數據丟失

    Excel文件問題解決了,但是在讀取csv、text文件,仍然出現數據丟失的問題,是什么原因引起的呢?與excel對比,不難發現,還是注冊表配置的問題。

    通過查詢注冊表,找到Text的驅動:

image

    修改MaxScanRows=0即可解決問題。

4、TypeGuessRows詳解

    要使用 Jet OLE DB 提供程序訪問 Excel 工作簿,請使用具有下列語法的連接字符串:

    Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\sms.xls;Extended Properties="Excel 8.0;HDR=YES;"

    在連接字符串中,用 Data Source 參數指定工作簿的完整路徑和文件名。Extended Properties 參數可包含兩種屬性:一個屬性用于 ISAM 版本,一個屬性用于指示表是否包括標題。
    使用 Excel 工作簿時,默認情況下,區域中的第一行是標題行(或字段名稱)。如果第一個區域不包含標題,您可以在連接字符串的擴展屬性中指定 HDR=NO。如果您在連接字符串中指定 HDR=NO,Jet OLE DB 提供程序將自動為您命名字段(F1 表示第一個字段,F2 表示第二個字段,依此類推)。

    與傳統的數據庫不同,在 Excel 表中沒有指定列的數據類型的直接方式。而是,OLE DB 提供程序通過對一列中的八行進行掃描來猜測 該字段的數據類型。您可以通過為連接字符串的擴展屬性中的 MAXSCANROWS 設置指定一個一 (1) 至十六 (16) 之間的值,來更改要掃描的行數。

    而注冊表中TypeGuessRows=8,默認從前8行進行掃描來猜測該字段的數據類型,設置TypeGuessRows=0表示不猜測數據類型。

5、MaxScanRows詳解

    與Excel注冊表參數雷同,MaxScanRows=19(16進制)表示從前25行進行掃描猜測該字段的數據類型。

    在不修改注冊表的情況下,可通過以下連接字符串實現(VB代碼):

strConn = ""
strConn = strConn & "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strFolder & ";"
strConn = strConn & "Extended Properties="
strConn = strConn & Chr(34)
strConn = strConn & "text;CharacterSet=UNICODE;HDR=Yes;FMT=Delimited;IMEX=1;MaxScanRows=0;"
strConn = strConn & Chr(34)
 
Set cn = New ADODB.Connection
With cn
    .Provider = "Microsoft.Jet.OLEDB.4.0" ' this line is redundant, but it helps you read the code
    .ConnectionString = strConn
    .Properties("Jet OLEDB:Registry Path") = "SOFTWARE\TacticalApps\MyApp\1.0"
    .Mode = adModeRead
    .Open
End With

    騰信集團(www.sms1086.com)歡迎您的光臨~~~


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()