從DataTable高效率匯出資料到Excel

2022-03-02 18:04:05 字數 1717 閱讀 6643

首先從資料庫讀取資料到datatable,這我就不提了,大家都明白。下面直接介紹如何從datatable高效率匯出資料到excel中的方法,**如下:

1

using

microsoft.office.interop.excel;

2using

system.runtime.interopservices;

34 [dllimport("

user32.dll

", charset =charset.auto)]

5public

static

extern

int getwindowthreadprocessid(intptr hwnd, out

intpid);6//

函式原型;dword getwindowthreadprocessld(hwnd hwnd,lpdword lpdwprocessld);7//

引數:hwnd:視窗控制代碼8//

引數:lpdwprocessld:接收程序標識的32位值的位址。如果這個引數不為null,getwindwthreadprocessld將程序標識拷貝到這個32位值中,否則不拷貝9//

返回值:返回值為建立視窗的執行緒標識。

1011

//dt:從資料庫讀取的資料;file_name:儲存路徑;sheet_name:表單名稱

12private

void datatabletoexcel(datatable dt, string file_name, string

sheet_name)

1328 mysht.range[mysht.cells[1,1], mysht.cells[1,dt.columns.count]].value2 =arrheader;

29//

寫入表體資料

30object[,] arrbody = new

object

[dt.rows.count, dt.columns.count];

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

3237

}38 mysht.range[mysht.cells[2,1], mysht.cells[dt.rows.count + 1, dt.columns.count]].value2 =arrbody;

39if(mywkb != null)40

45}46catch

(exception ex)

4750

finally

5165}66

catch

(exception ex)

6770 myxls = null;71

}72gc.collect();73}

74 }

說明:1)上述方法中,將datatable單元格內容寫入陣列後一次性賦值給excel的range,效率非常高,比之迴圈datatable單元格逐個賦值給excel的cell的方法,速度快多了;

2)excel的range.value(2)既可以給excel的區域賦值,也可以獲取excel區域的值,通過excel的range.value(2)來獲取區域的值,比之迴圈區域cell逐個獲取值儲存在陣列中的方法,效率高得多;

3)上述方法中用到的徹底關閉excel程序的方式,也值得注意。

從DataTable高效率匯出資料到Excel

首先從資料庫讀取資料到datatable,這我就不提了,大家都明白。下面直接介紹如何從datatable高效率匯出資料到excel中的方法,如下 using microsoft.office.interop.excel using system.runtime.interopservices dll...

高效率秘籍

高效率秘籍1 能量管理 假如今天透支身體數小時,下週你可能要為此償還更多的時間。良好的能量管理有兩步 1 增加你的能量儲備。2 將你的日程表由線性的改為迴圈式的。能量儲備 1 每週有3 5次運動嗎?如果你的回答為否,你正在削弱你的潛在能量水平,除非你的醫生不讓你參加運動,否則最少每天要抽出40分鐘來...

高效率生活

如何高效率生活 我們經常會想,為什麼我天天很努力的工作可是工作還是幹不完,如何才能高效率的工作和學習呢?我想這裡有過一些想法和經驗 經驗2 完成乙個事情再休息。因為人腦和電腦很像,乙個東西只有有了結果之後,再次回想時候才能有用,每個東西都要歸根到乙個節點上,乙個完結的點之後才能由這個點拓展開來,就和...