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