91精品一区二区三区久久久久久_欧美一级特黄大片色_欧美一区二区人人喊爽_精品一区二区三区av

位置:51電子網 » 電子資訊 » 電子新品

Excel文件模版

發布時間:2010/12/7 11:03:35 訪問次數:1122

用原始的asp.net oledb驅動程序,這使得asp.net應用程序即使部署在未安裝excel的服務器上也同樣能支持導入和導出校準的excel格式文件。新建一個“microsoft excel 工作表”,在工作表的第一行設置好需要的字段,然后選中整個表,點右鍵選擇“設置單元格格式”,在“數字”標簽的“分類”列表選擇“文本”,點擊“確定” 并保存文件。將單元格格式設置為“文本”主要是為了防止日后導入數據時某些數據格式無法被識別。
51電子網公益庫存:
AX2258
STI5518BQC
IC18F2550-I/S
90-13026
6000FC9003A
5082-7300
40307/1R2A
309A2
2022Q
W24257AJ-12

有了這個模板,我們就可以開始寫代碼導出數據了,名為“demo.xls”,包含三個列:“id”、“姓名”和“生日”。

導出數據(標準的excel文件):

以下是代碼片段:

// 根據模板文件創建副本

string filepath = server.mappath("~/" + guid.newguid().tostring() + ".xls");

file.copy(server.mappath("~/demo.xls"), filepath);

// 使用oledb驅動程序連接到副本

oledbconnection conn = new oledbconnection("provider=microsoft.jet.oledb.4.0;data source=" + filepath + ";extended properties=excel 8.0;");

using (conn)

{

conn.open();

// 增加記錄

oledbcommand cmd = new oledbcommand("insert into [sheet1$]([id], [姓名], [生日]) values(@id, @name, @birthday)", conn);

cmd.parameters.addwithvalue("@id", "1");

cmd.parameters.addwithvalue("@name", "hsu yencheng");

cmd.parameters.addwithvalue("@birthday", "1981-10-13");

cmd.executenonquery();

}

// 輸出副本的二進制字節流

response.contenttype = "application/ms-excel";

response.appendheader("content-disposition", "attachment;filename=info.xls");

response.binarywrite(file.readallbytes(filepath));

// 刪除副本

file.delete(filepath);

導出數據:

以下是代碼片段:

string filepath = server.mappath("~/info.xls");

oledbdataadapter da = new oledbdataadapter("select * from [sheet1$]",

"provider=microsoft.jet.oledb.4.0;data source=" + filepath + ";extended properties=excel 8.0");

datatable dt = new datatable();

da.fill(dt);

如果您要導入或導出的是excel 2007文件(*.xlsx),那么您需要將連接字符串改為:

以下是代碼片段:

provider=microsoft.ace.oledb.12.0;data source=info.xlsx;extended properties="excel 12.0 xml;hdr=yes";

上面的方法是可行,但有個問題:執行效率很低,超過255行的數據導出時,特別的慢(在網上查得是ms的限制).解決方法是: 將insert部分不使用參數模式,而直接使用串拼接成insert的sql語句,執行起來速度很快,導出時也很快,超過255時也很快,我僅測試過用 sql串語句生成并導出2000條,文件大小有3m,速度是不慢的,完成可以接受.而使用原方法,在256條時就感覺到慢了.

另外:oledb模式下可以先用create table生成sheet1$這種excel工作表,然后再insert數據,證實是可行的.這樣模板文件就只要一個空白的excel文檔了.靈活性高很多.

用原始的asp.net oledb驅動程序,這使得asp.net應用程序即使部署在未安裝excel的服務器上也同樣能支持導入和導出校準的excel格式文件。新建一個“microsoft excel 工作表”,在工作表的第一行設置好需要的字段,然后選中整個表,點右鍵選擇“設置單元格格式”,在“數字”標簽的“分類”列表選擇“文本”,點擊“確定” 并保存文件。將單元格格式設置為“文本”主要是為了防止日后導入數據時某些數據格式無法被識別。
51電子網公益庫存:
AX2258
STI5518BQC
IC18F2550-I/S
90-13026
6000FC9003A
5082-7300
40307/1R2A
309A2
2022Q
W24257AJ-12

有了這個模板,我們就可以開始寫代碼導出數據了,名為“demo.xls”,包含三個列:“id”、“姓名”和“生日”。

導出數據(標準的excel文件):

以下是代碼片段:

// 根據模板文件創建副本

string filepath = server.mappath("~/" + guid.newguid().tostring() + ".xls");

file.copy(server.mappath("~/demo.xls"), filepath);

// 使用oledb驅動程序連接到副本

oledbconnection conn = new oledbconnection("provider=microsoft.jet.oledb.4.0;data source=" + filepath + ";extended properties=excel 8.0;");

using (conn)

{

conn.open();

// 增加記錄

oledbcommand cmd = new oledbcommand("insert into [sheet1$]([id], [姓名], [生日]) values(@id, @name, @birthday)", conn);

cmd.parameters.addwithvalue("@id", "1");

cmd.parameters.addwithvalue("@name", "hsu yencheng");

cmd.parameters.addwithvalue("@birthday", "1981-10-13");

cmd.executenonquery();

}

// 輸出副本的二進制字節流

response.contenttype = "application/ms-excel";

response.appendheader("content-disposition", "attachment;filename=info.xls");

response.binarywrite(file.readallbytes(filepath));

// 刪除副本

file.delete(filepath);

導出數據:

以下是代碼片段:

string filepath = server.mappath("~/info.xls");

oledbdataadapter da = new oledbdataadapter("select * from [sheet1$]",

"provider=microsoft.jet.oledb.4.0;data source=" + filepath + ";extended properties=excel 8.0");

datatable dt = new datatable();

da.fill(dt);

如果您要導入或導出的是excel 2007文件(*.xlsx),那么您需要將連接字符串改為:

以下是代碼片段:

provider=microsoft.ace.oledb.12.0;data source=info.xlsx;extended properties="excel 12.0 xml;hdr=yes";

上面的方法是可行,但有個問題:執行效率很低,超過255行的數據導出時,特別的慢(在網上查得是ms的限制).解決方法是: 將insert部分不使用參數模式,而直接使用串拼接成insert的sql語句,執行起來速度很快,導出時也很快,超過255時也很快,我僅測試過用 sql串語句生成并導出2000條,文件大小有3m,速度是不慢的,完成可以接受.而使用原方法,在256條時就感覺到慢了.

另外:oledb模式下可以先用create table生成sheet1$這種excel工作表,然后再insert數據,證實是可行的.這樣模板文件就只要一個空白的excel文檔了.靈活性高很多.

熱門點擊

推薦電子資訊

高通智能手表
Toq的獨特之處在于采用了高通獨有的低功耗屏幕技術Mi... [詳細]
版權所有:51dzw.COM
深圳服務熱線:13751165337  13692101218
粵ICP備09112631號-6(miitbeian.gov.cn)
公網安備44030402000607
深圳市碧威特網絡技術有限公司
付款方式


 復制成功!
朝阳县| 长寿区| 南丹县| 延寿县| 霍山县| 桦川县| 清徐县| 华池县| 治县。| 柘城县| 沙田区| 湘潭县| 阿克陶县| 水城县| 徐汇区| 陆川县| 通州区| 灵丘县| 邯郸市| 阳曲县| 宁河县| 格尔木市| 广河县| 临夏县| 宣恩县| 临沭县| 南投市| 四川省| 和龙市| 襄汾县| 临武县| 沙雅县| 郎溪县| 申扎县| 台安县| 紫金县| 吐鲁番市| 石狮市| 改则县| 股票| 南康市|