分(fēn)享最實用(yòng)的技(jì )術,創造更大的價值

可(kě)用(yòng)的C#從大量數據的DataTable高效率快速導出到Excel的方法及源代碼

C#從大量數據的DataTable高效率快速導出到Excel的方法及源代碼


軟件開發過程中(zhōng),經常會将大批量數據導出到excel,但常用(yòng)的datatable循環方式導出excel已經很(hěn)大的影響了性能(néng)。創軟軟件開發團隊經過多(duō)次調試分(fēn)析,總結了快速将大批量DataTable中(zhōng)的數據導出到excel表格,同時解決了徹底關閉Excel進程的問題。


話不多(duō)說,直接上代碼

using Microsoft.Office.Interop.Excel;
using System.Runtime.InteropServices;


//dt:從數據庫讀取的數據;file_name:保存路徑;sheet_name:表單名(míng)稱
private void DataTableToExcel(DataTable dt, string file_name, string sheet_name)
{
       Microsoft.Office.Interop.Excel.Application Myxls = new  Microsoft.Office.Interop.Excel.Application();
       Microsoft.Office.Interop.Excel.Workbook Mywkb = Myxls.Workbooks.Add();
       Microsoft.Office.Interop.Excel.Worksheet MySht = Mywkb.ActiveSheet;
       MySht.Name = sheet_name;
       Myxls.Visible = false;
       Myxls.DisplayAlerts = false;
       try
       {
              //寫入表頭
              object[] arrHeader = new object[dt.Columns.Count];
              for(int i = 0; i < dt.Columns.Count; i++)
              {
                     arrHeader[i] = dt.Columns[i].ColumnName;
              }
              MySht.Range[Mysht.Cells[1,1], MySht.Cells[1,dt.Columns.Count]].Value2 = arrHeader;
              //寫入表體(tǐ)數據
              object[,] arrBody = new object[dt.Rows.Count, dt.Columns.Count];
              for(int i = 0; i < dt.Rows.Count; i++)
              {
                      for(int j = 0; j < dt.Columns.Count; j++)
                      {
                              arrBody[i,j] = dt.Rows[i][j].ToString();
                      }
              }
              MySht.Range[MySht.Cells[2,1], MySht.Cells[dt.Rows.Count + 1, dt.Columns.Count]].Value2 = arrBody;
              if(Mywkb != null)
              {
                      Mywkb.SaveAs(file_name);
                      Mywkb.Close(Type.Missing, Type.Missing, Type.Missing);
                      Mywkb = null;
              }
       }
       catch(Exception ex)
       {
               MessageBox.Show(ex.Message, "系統提示");
       }
       finally
       {
                //徹底關閉Excel進程
                if(Myxls != null)
                {
                       Myxls.Quit();
                       try
                       {
                              if(Myxls != null)
                              {
                                    int pid;
                                    GetWindowThreadProcessId(new IntPtr(Myxls.Hwnd), out pid);
                                    System.Diagnostics.Process p = System.Diagnostics.Process.GetProcessById(pid);
                                     p.Kill();
                              }
                       }
                       catch(Exception ex)
                       {
                              MessageBox.Show("結束當前EXCEL進程失敗:" + ex.Message);
                       }
                       Myxls = null;
                }
                GC.Collect();
       }
}


需要C#從大量數據的DataTable高效率快速導出到Excel的方法及源代碼的同學(xué)可(kě)以試一下,上面代碼已經應用(yòng)到了創軟開發框架平台。

聯系
QQ
電(diàn)話
咨詢電(diàn)話:189-8199-7898
TOP
韩产日产国产欧产 公借种日日躁我和公乱 69久久精品无码一区二区 双乳被两个男人吸住 农田丰满艳肉妇HD 成人交性视频免费看 隔着校服揉H奶水H 少妇BBB搡BBB搡BBB 出轨熟女人妻HD中文 我们高清在线观看免费观看 初次爱你插曲闯进我的世界 小毛驴影视在线观看 小萍的性荡生活40章 无码人妻啪啪一区二区 巜疯狂的少妇4做爰BD 被警察C哭高H野外糙汉男男 妻子的秘密免费版电视剧大全 亚洲男人天堂 美丽的桃子2意大利语来源 最近最新MV字幕免费观看 成全影视大全在线观看国语 原来神马电影免费高清完整版动漫 初次爱你插曲闯进我的世界 久久久久97国产精华液好用吗 在厨房拨开内裤进入在线视频 真空下楼取快递被C嗯啊 亚洲精品一区二区久 我和岳乱妇三级高清电影 暖暖国语高清免费观看 成全影视大全在线看 69久久精品无码一区二区 法国《熟妇的荡欲》 十九岁在线观看免费完整版国语版 中国WINDOWS野外 三年片免费观看影视大全满天星 国产精品久久久久久妇女6080 丰满熟妇被猛烈进入高清片 丁香花完整视频在线观看 最好看的2019中文大全在线观看 四个校花洗澡被17个农民工 梁教授要稳住肉馅小水饺视频 善良的少妇伦理BD中字 日本插槽X8是正规还是仿 少妇2做爰HD韩国电影 成人交性视频免费看 成全看免费观看完整版 班花在教室轮流澡到高潮视频 性少妇VIDEOSEXFREEXXXX片 诚实好媳妇三中字 《年轻的护士1》在线观看视频 黑料网今日黑料首页 四川XXXXXLMEDJYF77777 女人和公豬交交30 成全影视大全在线观看国语 被黑人的巨茎日出白浆 三年片在线观看完整版免费高清 17岁完整版高清免费观看 瞒着老公加班的HR中字 人妻洗澡被强公日日澡电影 《被按摩的人妻中文字幕》 高清WINDOWS免费版美国 粉嫩虎白扒开小泬 少妇按摩做爰5 婷婷的性欢日记H 《肉体偿还》在线观看 我们高清在线观看免费观看 麻花传剧原创MV免费观看 薄冰电视剧全集40集免费观看 女儿的朋友63中汉字三义 艳妇荡乳欲伦1 成全在线播放视频在线播放 免费观看国语高清电视剧 免费无码又爽又刺激A片软件妖精 被男人狂揉吃奶胸高潮 高校长白老师第三章心得体会 一面亲一面膜下最新版 中国老熟女重囗味HDXX 性饥渴女邻居4伦理HD 大龟慢慢挺进张娟征的休 亚洲熟女少妇一区二区三区