首页 > 编程语言 >C#从大量数据的DataTable高效率快速导出到Excel

C#从大量数据的DataTable高效率快速导出到Excel

时间:2022-11-07 22:26:14浏览次数:41  
标签:Count MySht C# Excel Myxls dt DataTable Columns

using Microsoft.Office.Interop.Excel; using System.Runtime.InteropServices;     //dt:从数据库读取的数据;file_name:保存路径;sheet_name:表单名称 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;               //写入表体数据               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();        } }

标签:Count,MySht,C#,Excel,Myxls,dt,DataTable,Columns
From: https://www.cnblogs.com/skyay/p/16867680.html

相关文章

  • camera
    camera 调用流程 imgsensor_probe注册操作文件结构设备---》获取设备-》获取时钟-》获取上电--->gpio设置引脚-----》i2c通信imgsensor_open--->imgsensor_clk_en......
  • 二.adb 查看camera 详细信息 camera配置,先不做兼容
     cat/proc/drivers/imgsensor查看手机分辨率adbshellwmsize 2.1.adbshelldumpsysmedia.camera   availableJpegSizes 关机adbshellreboot-p ......
  • 【Leetcode】 剑指offer:栈与队列 --Day01
    写在前面2023届秋招形势严峻,作为2024届本科生倍感压力。时间紧迫,需要加快脚步。计划之一是在未来的36天时间里通关Leetcode的剑指offer系列算法题。这一系列的学习周期为......
  • camera 硬件知识
    camera 硬件知识 MIPI接口的硬件原理图!4.常见基本概念我们这的BB端-原本是是baseband基带的意思,这里理解成CPU即可a)三路电压camera包含的三路电压为模拟电压(VCAM......
  • 第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(昆明)
    比赛链接:https://ac.nowcoder.com/acm/contest/12548/H.HardCalculation思路:输出\(x\)+2020。代码:#include<bits/stdc++.h>usingnamespacestd;usingLL=l......
  • LeNet5实现CIFAR-10图片分类
    importtensorflowastffromtensorflow.kerasimportdatasets,layers,modelsimportmatplotlib.pyplotaspltfromkerasimportregularizers#loadandnormal......
  • C++对象模型和this指针
    4.3C++对象模型和this指针this指针的本质是一个指针常量,和引用一样,不能够修改指向,但是可以修改值4.3.1成员变量和成员函数分开存储在C++中,类内的成员变量和成员函数分......
  • Mac中npm run * 没有读取权限的解决办法
    答案:sudochmod-R777目录名称我的mac可能是更新系统了,当我从gitee里克隆下一个项目后,凑巧这个项目自带node_modules依赖包,于是我直接启动项目。命令行控制......
  • 2.Zookeeper 权限控制 ACL
    Zookeeper权限控制ACL(AccessControlList,访问控制表)ACL权限可以针对节点设置相关读写等权限,保障数据安全性。permissions可以指定不同的权限范围及角色。ACL命令......
  • ABC248F
    设\(f_{i,j,0/1}\)表示考虑前\(i\)列,删去了\(j\)条边,目前上方和下方连不连通的方案数。则有转移:\[f_{i,j,1}=f_{i-1,j,1}+3\timesf_{i-1,j-1,1}+f_{i-1,j,0}\]\[......