日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > ChatGpt >内容正文

ChatGpt

No error message available, result code: E_FAIL(0x80004005)

發布時間:2024/9/5 ChatGpt 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 No error message available, result code: E_FAIL(0x80004005) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

做上傳Excel文件這個功能的時候,遇到個奇怪的事情。

我的程序里上傳Excel文件的過程是這樣的:

1.將用戶選擇上傳的文件保存到服務器上

2.使用?Provider=Microsoft.Ace.OLEDB.12.0 打開這個文件,然后讀取文件內容,加載到DataTable里

關鍵在于上面第2步,本地開發環境怎么debug都是沒問題的;一旦發布到服務器上,文件size小一點的沒有問題,大于大約1M的話,就會報錯,

錯誤有2個(不是同時出現):

a)?external table is not in the expected format

b)?No error message available, result code: E_FAIL(0x80004005)

?

上面第2步里,關鍵代碼如下:

View Code string strConn = "Provider=Microsoft.Ace.OLEDB.12.0;Data Source=" + filename + ";Extended Properties=Excel 12.0 Xml;";OleDbDataAdapter oda = new OleDbDataAdapter("select * from [Sheet1$]", strConn);DataSet ds = new DataSet(); oda.Fill(ds); //error

?

后來,在Provider里加了HDR=Yes; IMEX=1,問題居然解決了,代碼如下:

View Code string strConn = "Provider=Microsoft.Ace.OLEDB.12.0;Data Source=" + filename + ";Extended Properties=\"Excel 12.0 Xml;HDR=Yes;IMEX=1\";";

?

查了一下微軟官方的資料,找出了HDR, IMEX的相關解釋:

HDR,即Header Row,HDR=Yes則表明Excel文件里第一行作為header,不作為數據考慮。比如,把Excel文件里數據讀入到DataTable,HDR=Yes,則Excel文件里第一行作為這個DataTable的字段名。HDR的Default值是Yes。

IMEX,即Import/Export Mode,IMEX的Default值是2(?待確定)有3種:

IMEX=0 is Export mode  //Write Only
IMEX=1 is Import mode  //Read Only
IMEX=2 is Linked mode (full update capabilities)  //Read/Write

?

當IMEX=1時,即Import Mode,在讀取Excel文件時,如果該文件的某列存在Mixed Data的情況(比如數字和字符串結合的情況:CN123),會把該單元格里的值的類型轉換成注冊表里ImportMixedTypes(win7路徑:HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Jet/4.0/Engines/Excel)的值。比如ImportMixedTypes=text,則把CN123的類型轉成text型,這樣,就不會出現異常情況了(當然還要考慮TypeGuessRows,這里不贅述)。

?

當IMEX=0或2時,在讀取Excel文件時,會忽略掉注冊表里的ImportMixedTypes,轉而以MajorityType類型返回單元格里的數據。

?

TypeGuessRows,ImportMixedTypes需要在注冊表里手動更改。ImportMixedTypes共有兩種類型:MajorityType和Text,它的Default值是Text。

?

我遇到的問題雖然解決了,但還是沒搞清楚問題的癥結:

在沒有加HDR=Yes; IMEX=1時,文件size大約小于1M的話,功能是沒問題的(列里有Mixed Data情形);

當大于1M的時候,只有加上HDR=Yes; IMEX=1,功能才正常。

?

?參考資料:

http://support.microsoft.com/kb/257819

http://office.microsoft.com/en-us/access-help/initializing-the-microsoft-excel-driver-HP001032159.aspx

http://www.instantpages.ltd.uk/ADODB_WP.htm

轉載于:https://www.cnblogs.com/bobliu/archive/2012/07/05/2573460.html

總結

以上是生活随笔為你收集整理的No error message available, result code: E_FAIL(0x80004005)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。