關於Excel匯入的問題記錄

2021-09-23 19:31:45 字數 1659 閱讀 1870

前提為oledb+excel。

根據需求,多數是對於表的資料的匯入。於是產生這麼乙個需求過程:

1。準備乙個空的標準excel。

2。根據表名查詢字段

3。動態生成字段表頭

4。copy空的標準excel,迴圈表頭生成新的標準excel以二進位製流匯出。

5。使用者再根據表頭的提示新增資料再上傳提交。

(1步和4步為大體上為網上搜出來的想法)

過程遇到這麼點問題:

問題1:

網上1步和4步的想法,是先做好標準excel,直接匯出。所以**上用的insert into table直接往表新增資料了。

於本人的需求有點差距了,異常折騰了半天才折騰到用了create table。於是引發了第二個問題:

問題2:

在為excel create table 時,報「不能修改表'***x' 的設計。它在唯讀資料庫中」,經自己這麼一想,再經網上那麼一忽悠。許可權問題!。for遍了網路,都直指這個許可權問題。

於是就是一堆的往資料夾新增iuser_使用者名稱或everyone許可權的解決方案,是挺折磨人的,檢查了n百遍還是報的錯。

如果把excel看作資料庫,那麼要注意連線字串:

private

readonly

string

readconn ="

provider=microsoft.jet.oledb.4.0;"+

"data source=;"+

"extended properties='excel 8.0;hdr=yes;imex=1;'";

hdr=

yes 表示將sheet的第一行作為列名,所以我們預設excel的首行是列名。

imex=1

表示大致的意思是使用匯入的模式,把數字也作為字串來操作。

有一點很重要。imex=1

,是一種匯入的模式,所以首先這個檔案要存在,如果不存在會報錯:「microsoft jet 資料庫引擎找不到物件

'…\customer.xls

'。請確定物件是否存在,並正確地寫出它的名稱和路徑」,而且這樣寫了以後就算檔案是存在的,還有乙個問題是不能對檔案更新的,會提示「不能修改表 

'sheet1

'的設計。它在唯讀資料庫中」等錯誤,甚至還有提示許可權的問題。

於是去掉imex=1,問題解決。

於是問題3也產生了:

新建的表預設都排在最後了,無法排在第乙個,這樣使用者開啟看到空的就不好,於是drop table ***---》無效

忽悠下自己是不是方法不對頭,上網搜。於是又發現這麼段說明:

雖然 jet ole db 提供程式允許您在 excel 工作簿中插入和更新記錄,但是不允許進行 delete(刪除)操作。如果您嘗試對乙個或多個記錄執行 delete 操作,您將收到以下錯誤資訊: 

deleting data 

ina linked table 

isnot supported by 

this

isam.

這是將 excel 工作簿作為資料庫進行處理時所固有的限制。

於是,想了乙個比較搜的主意

在空的excel裡刪除兩個sheet(預設有三個,系統限制必須存在乙個)

然後將剩下的乙個改名叫「***說明",在裡面寫操作說明。

至此,將就解決,還有很多任務作排成隊在後面......

關於Excel匯入的問題記錄

前提為oledb excel。根據需求,多數是對於表的資料的匯入。於是產生這麼乙個需求過程 1。準備乙個空的標準excel。2。根據表名查詢字段 3。動態生成字段表頭 4。copy空的標準excel,迴圈表頭生成新的標準excel以二進位製流匯出。5。使用者再根據表頭的提示新增資料再上傳提交。1步和...

C 匯入excel資料問題記錄,使用NOPI解決

系統使用win10 64位 vs2013 最後解除安裝了,用了之前一版的office2010 沒有提示註冊 microsoft.ace.oledb.12.0 提供程式,但是新的問題又來了,oledbconnection conn new oledbconnection connstring conn...

poi匯入問題記錄

需要注意的問題 匯入的資料存在很多不確定因素,所以要根據自己的業務需要做好相應的判斷,是不是null,格式對不對,資料量等等 首先,需要乙個type file和form 改變檔案選擇樣式 可以不要 file file input 提交之前注意一下,onchange不重新整理瀏覽器只能執行一次,想多次...