使用oledb讀寫(xiě)excel出現(xiàn)“操作必須使用一個(gè)可更新的查詢”的解決辦法 |
發(fā)布時(shí)間: 2012/5/18 16:31:35 |
前兩天使用oledb連接excel的辦法為單位某部門(mén)從一個(gè)excel的多個(gè)sheet中作連選抽出需要的數(shù)據(jù),程序非常簡(jiǎn)單,結(jié)果很快就出來(lái),原來(lái)手工需要很長(zhǎng)時(shí)間才能選出的結(jié)果現(xiàn)在幾乎一點(diǎn)擊就有了結(jié)果。使用人員非常滿意,由于是多人使用,開(kāi)始只是將結(jié)果顯示在一個(gè)頁(yè)面上。后來(lái)他們要求將結(jié)果寫(xiě)入該xls文件的另一個(gè)sheet中,我隨便寫(xiě)了個(gè)語(yǔ)句以為可以立馬搞掂,沒(méi)想到居然出現(xiàn)了“操作必須使用一個(gè)可更新的查詢”。因?yàn)樽x取結(jié)果正常,我開(kāi)始以為是excel文件所處的文件夾沒(méi)有寫(xiě)權(quán)限所致。增加了相應(yīng)權(quán)限后,結(jié)果依然如故。沒(méi)辦法還是檢查程序吧,仔細(xì)檢查了一下,問(wèn)題發(fā)現(xiàn)了,原來(lái)開(kāi)始只是為了讀取excel我將連接寫(xiě)成了如下格式:
特別注意 Extended Properties='Excel 8.0;HDR=yes;IMEX=1' A: HDR ( HeaDer Row )設(shè)置 若指定值為Yes,代表 Excel 檔中的工作表第一行是欄位名稱 若指定值為 No,代表 Excel 檔中的工作表第一行就是資料了,沒(méi)有欄位名稱 B:IMEX ( IMport EXport mode )設(shè)置 IMEX 有三種模式,各自引起的讀寫(xiě)行為也不同,容後再述: 0 is Export mode 1 is Import mode 2 is Linked mode (full update capabilities) 我這里特別要說(shuō)明的就是 IMEX 參數(shù)了,因?yàn)椴煌哪J酱碇煌淖x寫(xiě)行為: 當(dāng)IMEX=0 時(shí)為“匯出模式”,這個(gè)模式開(kāi)啟的 Excel 檔案只能用來(lái)做“寫(xiě)入”用途。 當(dāng) IMEX=1 時(shí)為“匯入模式”,這個(gè)模式開(kāi)啟的 Excel 檔案只能用來(lái)做“讀取”用途。 當(dāng) IMEX=2 時(shí)為“連結(jié)模式”,這個(gè)模式開(kāi)啟的 Excel 檔案可同時(shí)支援“讀取”與“寫(xiě)入”用途。 看完這些大家就不用再說(shuō)我的寫(xiě)如為什么有問(wèn)題了吧。我將連接改為如下:
運(yùn)行一切ok。 本文出自:億恩科技【www.riomediacenter.com】 服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |