在匯入前都需要將上傳的檔案儲存到伺服器,所以避免重複的寫這些**,先貼出上傳檔案並儲存到伺服器指定路徑的**
protected
void
btnimport_click
(object sender,
eventargs e)
}catch
(exception ex)
}
第一種:
public
dataset
importexcel
(string filepath)
catch
//獲取所有的 sheet 表
datatable dtsheetname = conn.
getoledbschematable
(oledbschemaguid.tables,
newobject
);ds =
newdataset()
;for
(int i =
0; i < dtsheetname.rows.count; i++
)//關閉連線,釋放資源
conn.
close()
; conn.
dispose()
;return ds;
}
除了讀取過程不太靈活之外,這種讀取方式還有個弊端就是,當excel資料量很大時,會非常占用記憶體,當記憶體不夠時會丟擲記憶體溢位的異常,不過一般的都適用了。
第二種:microsoft.office.interop.excel.dll
public
dataset
importexcel
(string filepath)
//開啟excel檔案
workbook=excel.workbooks.
open
(filepath, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing)
;//獲取所有的sheet表
sheets=workbook.worksheets;
ds=new
dataset()
;for
(int i=
1;i<=sheets.count;i++
)//讀取行資料
for(
int k=
1;k)dt.tables.
add(dt);}
}catch
(exception ex)
finally
return ds;
}
這種方法首先需要安裝有office excel,並且是乙個單元格乙個單元格的讀取,所以效能會比較差
第三種:npoi
public
dataset
importexcel
(string filepath)
//跳過第一行列名
rowindex++
;for
(int k=rowindex;k<=rowcount;k++
) dr[l]
=row.
getcell
(l).stringcellvalue;
} dt.rows.
add(dr);}
ds.tables.
add(dt);}
sheet=
null
; workbook=
null
; filestream.
close()
; filestream.
dispose()
;}catch
(exception ex)
return ds;
}
我這裡用的是.xlsx格式的,也就是excel2007及以上版本,2003版本的話方法類似,只是開啟檔案的操作類不一樣
//2007及以上版本
xssfworkbook xworkbook=new xssfworkbook(filestream);
//2003版本
hssfworkbook hworkbook=new hssfworkbook(filestream);
第四種:aspose.cells.dll
public
dataset
importexcel
(string filepath)
worksheets.
clear()
; worksheet=
null
; worksheets=
null
; workbokk=
null;}
catch
(exception ex)
return ds;
}
這種方法操作比較方便,跟oledb一樣直接獲取乙個sheet表的資料,不用乙個單元格乙個單元格的獲取。而且操作也比較靈活,你可以一行一行的獲取資料,甚至乙個單元格乙個單元格的獲取資料
第五種:epplus
public
dataset
importexcel
(string filepath)
rowindex++
;for
(int k=rowindex;k<=rowcount;k++
) dr[l-1]
=worksheet.
getvalue
(k,l)
.tostring()
;}ds.tables.
add(dt);}
package.
dispose()
; worksheet=
null
; worksheets=
null
; package=
null
; filestream.
close()
; filestream.
dispose()
;}catch
(exception ex)
return ds;
}
這種方法讀取excel資料效能還不錯,但是要注意的是,sheet、row、col的起始值都是從1開始的 C 匯入Excel檔案,並用repreater顯示
後台 匯入要通知的員工 protected void btnload click object sender,eventargs e else 讀取excel資料到dataset excel的絕對路徑 excel名稱 表名 excel.worksheet xsheet excel.worksheet...
ajax上傳excel檔案匯入資料
一直以來上傳檔案都是用form表單來上傳的,在專案中也有過ajax非同步無重新整理的上傳檔案,因為記錄下來ajax如何檔案。本次上傳檔案是用jsp作為前台介面,servlet為後台,沒有使用框架處理,上傳檔案用的ajaxfileupload.js封裝的工具類 上傳檔案需要commons fileup...
Excel資料匯入
excel資料匯入 你hold住麼 一 在本篇將帶領大家一同了解 匯入excel流程和問題解決方案 需要注意的是在server端的web config 中新增這幾行 ps 中value 是根據自己的專案中的資料夾的命名而定,可參考以下截圖 由於在server的配置檔案的檔名不一致。找不excel的x...