中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

asp.net:常見數據導入excel
來源:易賢網 閱讀:1053 次 日期:2014-11-07 13:28:58
溫馨提示:易賢網小編為您整理了“asp.net:常見數據導入excel”,方便廣大網友查閱!

引言

項目中常用到將數據導入excel,將excel中的數據導入數據庫的功能,曾經也查找過相關的內容,將曾經用過的方案總結一下。

方案一

npoi

npoi 是 poi 項目的 .net 版本。poi是一個開源的java讀寫excel、word等微軟ole2組件文檔的項目。

使用 npoi 你就可以在沒有安裝 office 或者相應環境的機器上對 word/excel 文檔進行讀寫。npoi是構建在poi 3.x版本之上的,它可以在沒有安裝office的情況下對word/excel文檔進行讀寫操作。

優勢

(一)傳統操作excel遇到的問題:

1、如果是.net,需要在服務器端裝office,且及時更新它,以防漏洞,還需要設定權限允許.net訪問com+,如果在導出過程中出問題可能導致服務器宕機。

2、excel會把只包含數字的列進行類型轉換,本來是文本型的,excel會將其轉成數值型的,比如編號000123會變成123。

3、導出時,如果字段內容以“-”或“=”開頭,excel會把它當成公式進行,會報錯。

4、excel會根據excel文件前8行分析數據類型,如果正好你前8行某一列只是數字,那它會認為該列為數值型,自動將該列轉變成類似1.42702e+17格式,日期列變成包含日期和數字的。

(二)使用npoi的優勢

1、您可以完全免費使用該框架

2、包含了大部分excel的特性(單元格樣式、數據格式、公式等等)

3、專業的技術支持服務(24*7全天候) (非免費)

4、支持處理的文件格式包括xls, xlsx, docx.

5、采用面向接口的設計架構( 可以查看 npoi.ss 的命名空間)

6、同時支持文件的導入和導出

7、基于.net 2.0 也支持xlsx 和 docx格式(當然也支持.net 4.0)

8、來自全世界大量成功且真實的測試cases

9、大量的實例代碼

11、你不需要在服務器上安裝微軟的office,可以避免版權問題。

12、使用起來比office pia的api更加方便,更人性化。

13、你不用去花大力氣維護npoi,npoi team會不斷更新、改善npoi,絕對省成本。

npoi之所以強大,并不是因為它支持導出excel,而是因為它支持導入excel,并能“理解”ole2文檔結構,這也是其他一些excel讀寫庫比較弱的方面。通常,讀入并理解結構遠比導出來得復雜,因為導入你必須假設一切情況都是可能的,而生成你只要保證滿足你自己需求就可以了,如果把導入需求和生成需求比做兩個集合,那么生成需求通常都是導入需求的子集,這一規律不僅體現在excel讀寫庫中,也體現在pdf讀寫庫中,目前市面上大部分的pdf庫僅支持生成,不支持導入。

構成

npoi 1.2.x主要由poifs、ddf、hpsf、hssf、ss、util六部分組成。

npoi.poifs

ole2/activex文檔屬性讀寫庫

npoi.ddf

microsoft office drawing讀寫庫

npoi.hpsf

ole2/activex文檔讀寫庫

npoi.hssf

microsoft excel biff(excel 97-2003)格式讀寫庫

npoi.ss

excel公用接口及excel公式計算引擎

npoi.util

基礎類庫,提供了很多實用功能,可用于其他讀寫文件格式項目的開發

npoi組成部分

npoi 1.x的最新版為npoi 1.2.5,其中包括了以下功能:

1、讀寫ole2文檔

2、讀寫docummentsummaryinformation和summaryinformation

3、基于littleendian的字節讀寫

4、讀寫excel biff格式

5、識別并讀寫excel biff中的常見record,如rowrecord, stylerecord, extendedformatrecord

6、支持設置單元格的高、寬、樣式等

7、支持調用部分excel內建函數,比如說sum, countif以及計算符號

8、支持在生成的xls內嵌入打印設置,比如說橫向/縱向打印、縮放、使用的紙張等。

npoi 2.0主要由ss, hpsf, ddf, hssf, xwpf, xssf, openxml4net, openxmlformats組成,具體列表如下:

assembly名稱 模塊/命名空間 說明

npoi.dll

npoi.poifs

ole2/activex文檔屬性讀寫庫

npoi.dll

npoi.ddf

微軟office drawing讀寫庫

npoi.dll

npoi.hpsf

ole2/activex文檔讀寫庫

npoi.dll

npoi.hssf

微軟excel biff(excel 97-2003, doc)格式讀寫庫

npoi.dll

npoi.ss

excel公用接口及excel公式計算引擎

npoi.dll

npoi.util

基礎類庫,提供了很多實用功能,可用于其他讀寫文件格式項目的開發

npoi.ooxml.dll npoi.xssf excel 2007(xlsx)格式讀寫庫

npoi.ooxml.dll npoi.xwpf word 2007(docx)格式讀寫庫

npoi.openxml4net.dll npoi.openxml4net openxml底層zip包讀寫庫

npoi.openxmlformats.dll npoi.openxmlformats 微軟office openxml對象關系庫

(以上內容來自百度百科)從上表可知npoi組件已支持excel2007,記得之前用的時候只支持excel2003。很久沒研究過這玩意兒了。

案例

官網地址:http://npoi.codeplex.com/,可以從官網下載npoi2.x版本的。

首先引入

icsharpcode.sharpziplib.dll

npoi.dll

npoi.ooxml.dll

npoi.openxml4net.dll

npoi.openxmlformats.dll

然后引入命名空間:

using npoi.xssf.usermodel;

using npoi.ss.usermodel;

using npoi.hssf.usermodel;

輔助類

using npoi.xssf.usermodel;

using npoi.ss.usermodel;

using npoi.hssf.usermodel;

using system;

using system.collections.generic;

using system.data;

using system.io;

using system.linq;

using system.text;

using system.threading.tasks;

using npoi.ss.formula.eval;

namespace wolfy.common

{

///

/// 使用npoi組件

/// 需引入icsharpcode.sharpziplib.dll/npoi.dll/npoi.ooxml.dll/npoi.openxml4net.dll/npoi.openxmlformats.dll

/// office2007

///

public class npoiexcelhelper

{

///

/// 將excel文件中的數據讀出到datatable中

///

///

///

public static datatable excel2datatable(string file, string sheetname, string tablename)

{

datatable dt = new datatable();

iworkbook workbook = null;

using (filestream fs = new filestream(file, filemode.open, fileaccess.read))

{

//office2003 hssfworkbook

workbook = new xssfworkbook(fs);

}

isheet sheet = workbook.getsheet(sheetname);

dt = export2datatable(sheet, 0, true);

return dt;

}

///

/// 將指定sheet中的數據導入到datatable中

///

/// 指定需要導出的sheet

/// 列頭所在的行號,-1沒有列頭

///

///

private static datatable export2datatable(isheet sheet, int headerrowindex, bool needheader)

{

datatable dt = new datatable();

xssfrow headerrow = null;

int cellcount;

try

{

if (headerrowindex < 0 || !needheader)

{

headerrow = sheet.getrow(0) as xssfrow;

cellcount = headerrow.lastcellnum;

for (int i = headerrow.firstcellnum; i <= cellcount; i++)

{

datacolumn column = new datacolumn(convert.tostring(i));

dt.columns.add(column);

}

}

else

{

headerrow = sheet.getrow(headerrowindex) as xssfrow;

cellcount = headerrow.lastcellnum;

for (int i = headerrow.firstcellnum; i <= cellcount; i++)

{

icell cell = headerrow.getcell(i);

if (cell == null)

{

break;//到最后 跳出循環

}

else

{

datacolumn column = new datacolumn(headerrow.getcell(i).tostring());

dt.columns.add(column);

}

}

}

int rowcount = sheet.lastrownum;

for (int i = headerrowindex + 1; i <= sheet.lastrownum; i++)

{

xssfrow row = null;

if (sheet.getrow(i) == null)

{

row = sheet.createrow(i) as xssfrow;

}

else

{

row = sheet.getrow(i) as xssfrow;

}

datarow dtrow = dt.newrow();

for (int j = row.firstcellnum; j <= cellcount; j++)

{

if (row.getcell(j) != null)

{

switch (row.getcell(j).celltype)

{

case celltype.boolean:

dtrow[j] = convert.tostring(row.getcell(j).booleancellvalue);

break;

case celltype.error:

dtrow[j] = erroreval.gettext(row.getcell(j).errorcellvalue);

break;

case celltype.formula:

switch (row.getcell(j).cachedformularesulttype)

{

case celltype.boolean:

dtrow[j] = convert.tostring(row.getcell(j).booleancellvalue);

break;

case celltype.error:

dtrow[j] = erroreval.gettext(row.getcell(j).errorcellvalue);

break;

case celltype.numeric:

dtrow[j] = convert.tostring(row.getcell(j).numericcellvalue);

break;

case celltype.string:

string strformula = row.getcell(j).stringcellvalue;

if (strformula != null && strformula.length > 0)

{

dtrow[j] = strformula.tostring();

}

else

{

dtrow[j] = null;

}

break;

default:

dtrow[j] = ;

break;

}

break;

case celltype.numeric:

if (dateutil.iscelldateformatted(row.getcell(j)))

{

dtrow[j] = datetime.fromoadate(row.getcell(j).numericcellvalue);

}

else

{

dtrow[j] = convert.todouble(row.getcell(j).numericcellvalue);

}

break;

case celltype.string:

string str = row.getcell(j).stringcellvalue;

if (!string.isnullorempty(str))

{

dtrow[j] = convert.tostring(str);

}

else

{

dtrow[j] = null;

}

break;

default:

dtrow[j] = ;

break;

}

}

}

dt.rows.add(dtrow);

}

}

catch (exception)

{

return null;

}

return dt;

}

///

/// 將datatable中的數據導入excel文件中

///

///

///

public static void datatable2excel(datatable dt, string file, string sheetname)

{

iworkbook workbook = new xssfworkbook();

isheet sheet = workbook.createsheet(sheetname);

irow header = sheet.createrow(0);

for (int i = 0; i < dt.columns.count; i++)

{

icell cell = header.createcell(i);

cell.setcellvalue(dt.columns[i].columnname);

}

//數據

for (int i = 0; i < dt.rows.count; i++)

{

irow row = sheet.createrow(i + 1);

for (int j = 0; j < dt.columns.count; j++)

{

icell cell = row.createcell(j);

cell.setcellvalue(dt.rows[i][j].tostring());

}

}

memorystream stream = new memorystream();

workbook.write(stream);

byte[] buffer = stream.toarray();

using (filestream fs = new filestream(file, filemode.create, fileaccess.write))

{

fs.write(buffer, 0, buffer.length);

fs.flush();

}

}

///

/// 獲取單元格類型

///

///

///

private static object getvaluetype(xssfcell cell)

{

if (cell == null)

{

return null;

}

switch (cell.celltype)

{

case celltype.blank:

return null;

case celltype.boolean:

return cell.booleancellvalue;

case celltype.error:

return cell.errorcellvalue;

case celltype.numeric:

return cell.numericcellvalue;

case celltype.string:

return cell.stringcellvalue;

case celltype.formula:

default:

return = + cell.stringcellvalue;

}

}

}

}

更多信息請查看IT技術專欄

更多信息請查看網絡編程
易賢網手機網站地址:asp.net:常見數據導入excel
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!

2026上岸·考公考編培訓報班

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
云南網警備案專用圖標
聯系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網
云南網警報警專用圖標
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
亚洲一区二区三区四区中文 | 亚洲精品日产精品乱码不卡| 一区二区三区**美女毛片| 噜噜噜噜噜久久久久久91| 亚洲成人直播| 欧美日韩在线观看视频| 亚洲午夜久久久久久久久电影网| 国产精品久久影院| 久久精品在线观看| aⅴ色国产欧美| 国产一区欧美日韩| 欧美黄色aa电影| 亚洲专区免费| 亚洲第一视频| 国产精品午夜国产小视频| 麻豆精品视频在线| 亚洲一区二区三区乱码aⅴ蜜桃女| 国产精品一区二区三区久久久| 久久久国产精品一区| 一区二区三区我不卡| 欧美日韩不卡视频| 欧美一站二站| 一本色道久久综合亚洲精品高清 | 欧美日韩综合视频| 亚洲欧美日韩国产一区| 亚洲大胆美女视频| 欧美日韩一区二区视频在线| 亚洲欧美综合网| 亚洲国产精品成人久久综合一区 | 欧美人与性动交a欧美精品| 亚洲一区二区高清| 原创国产精品91| 国产精品视频午夜| 欧美激情小视频| 久久国产婷婷国产香蕉| 一本久久a久久精品亚洲| 国内精品美女在线观看| 欧美视频你懂的| 欧美国产激情二区三区| 久久久久久久一区二区三区| 亚洲午夜成aⅴ人片| 亚洲二区在线| 国产日韩在线视频| 国产精品久久久久久久久久ktv | 亚洲欧洲另类| 国产欧美一区二区白浆黑人| 欧美性大战xxxxx久久久| 欧美va天堂va视频va在线| 久久免费国产精品1| 久久久av毛片精品| 久久狠狠亚洲综合| 久久经典综合| 久久久噜噜噜久久| 久久久亚洲国产天美传媒修理工| 亚洲欧美日韩视频二区| 亚洲天堂男人| 亚洲欧美日韩视频一区| 亚洲欧美日韩国产中文| 午夜在线成人av| 久久精品91| 久久久久亚洲综合| 裸体歌舞表演一区二区| 美国成人毛片| 欧美成人在线网站| 欧美日韩国产色站一区二区三区| 欧美精品久久久久久久久老牛影院 | 亚洲欧美日韩直播| 亚洲一区二区久久| 亚洲欧美一级二级三级| 亚洲视频1区2区| 亚洲欧美一区二区激情| 午夜日韩在线| 久久精品中文字幕免费mv| 欧美在线资源| 久久综合给合久久狠狠狠97色69| 久久婷婷蜜乳一本欲蜜臀| 老司机午夜精品视频在线观看| 农村妇女精品| 欧美日韩亚洲高清| 国产毛片一区二区| 一区二区三区在线观看视频| 91久久精品日日躁夜夜躁欧美 | 性欧美暴力猛交69hd| 欧美一区二区免费| 蜜臀av性久久久久蜜臀aⅴ| 欧美www视频| 欧美午夜精品理论片a级大开眼界| 国产精品免费网站| 激情久久久久久| 日韩午夜电影在线观看| 欧美一二区视频| 欧美激情视频在线播放| 国产情侣久久| 99亚洲一区二区| 久久久久成人精品| 欧美日一区二区在线观看 | 久久久97精品| 欧美国产日韩视频| 国产精品久久久久永久免费观看 | 国产精品私拍pans大尺度在线| 国产欧美一区二区三区在线老狼| 亚洲激情图片小说视频| 亚洲女性裸体视频| 欧美激情视频一区二区三区免费 | 亚洲精品乱码久久久久久日本蜜臀| avtt综合网| 免费日韩视频| 国产精品丝袜久久久久久app| 亚洲国产日韩欧美在线动漫| 欧美亚洲三级| 欧美日韩综合在线免费观看| 亚洲高清三级视频| 久久精品在线| 国产日韩欧美不卡在线| 在线亚洲自拍| 欧美激情成人在线视频| 国产亚洲欧洲| 亚洲欧美成人一区二区在线电影| 欧美国产高潮xxxx1819| 精品动漫一区二区| 久久gogo国模裸体人体| 欧美偷拍另类| 一区二区福利| 欧美日韩专区在线| 亚洲美洲欧洲综合国产一区| 久久综合成人精品亚洲另类欧美| 国产日韩精品一区二区三区| 亚洲欧美国产视频| 国产精品黄色| 亚洲欧美日韩综合一区| 国产精品扒开腿做爽爽爽软件 | 激情综合久久| 久久久久久久久久看片| 国内精品久久久久影院色| 欧美在线观看你懂的| 国产精品无码专区在线观看| 午夜电影亚洲| 国产一区久久| 久久亚洲精品一区| 在线观看国产精品淫| 久久一区二区精品| 亚洲国产一区视频| 欧美不卡福利| 这里只有精品丝袜| 欧美性猛交99久久久久99按摩| 中文精品视频| 国产精品你懂得| 香蕉久久夜色精品国产使用方法| 国产精品中文字幕在线观看| 久久国产天堂福利天堂| 永久免费毛片在线播放不卡| 女人香蕉久久**毛片精品| 91久久精品www人人做人人爽| 欧美国产日韩一区二区三区| 99re视频这里只有精品| 国产精品久久中文| 久久精品国产清高在天天线| 亚洲第一福利在线观看| 欧美片第一页| 欧美淫片网站| 亚洲国产乱码最新视频| 国产精品porn| 久久久久国内| 亚洲最黄网站| 国产自产2019最新不卡| 欧美激情综合五月色丁香| 国内成人精品视频| 欧美国产视频在线| 亚洲欧美国产高清va在线播| 国语自产精品视频在线看一大j8| 欧美α欧美αv大片| 亚洲一区二区三区视频| 韩国女主播一区| 欧美日本网站| 午夜欧美精品久久久久久久| 91久久精品一区二区别| 国产精品日韩| 欧美99久久| 欧美一区二区| 99在线精品视频| 一区二区亚洲精品| 欧美日韩三级视频| 久久久久国产精品www| 亚洲理论电影网| 国产字幕视频一区二区| 欧美日韩一区二区三区免费看| 久久激情视频久久| 亚洲一线二线三线久久久| 亚洲人午夜精品免费| 很黄很黄激情成人| 国产区日韩欧美| 国产精品青草久久| 欧美日韩一区二区在线观看视频 | 在线视频亚洲| 亚洲国产精品传媒在线观看 | 欧美日韩在线不卡| 免费成人av资源网| 久久久久女教师免费一区| 午夜精品一区二区三区在线视| 日韩视频精品|