项目中需要将DataTable中的内容汇出到Excel文件中,采用循环的方式逐个Cell写数据到Excel文件中, 测试时发现很不好,汇出一个19列203行的Table时,用时竟然高达24秒多。【vs2017】

后来采用整体赋值的方法修改,代码如下:【已测试,正常运行】

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;using System.Data;
using System.Collections;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;
using System.Reflection;namespace MSExcel
{public class TestZYClass2{//把数据表的内容导出到Excel文件中public static void OutDataToExcel(System.Data.DataTable srcDataTable, string sheetName, string excelFilePath){Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();object objMissing = System.Reflection.Missing.Value;//导出到execl try{if (xlApp == null){//MessageBox.Show("无法创建Excel对象,可能您的电脑未安装Excel!");return;}Microsoft.Office.Interop.Excel.Workbooks xlBooks = xlApp.Workbooks;Microsoft.Office.Interop.Excel.Workbook xlBook = xlBooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);if (sheetName == ""){// sheetName = "steet1";return;}else{((Microsoft.Office.Interop.Excel.Worksheet)xlBook.Worksheets[1]).Name = sheetName;//将sheet1的名称改为sheetName值   }Microsoft.Office.Interop.Excel.Worksheet xlSheet = (Microsoft.Office.Interop.Excel.Worksheet)xlBook.Worksheets[1];object[,] objData = new object[srcDataTable.Rows.Count + 1, srcDataTable.Columns.Count];//首先将数据写入到一个二维数组中for (int i = 0; i < srcDataTable.Columns.Count; i++){objData[0, i] = srcDataTable.Columns[i].ColumnName;}if (srcDataTable.Rows.Count > 0){for (int i = 0; i < srcDataTable.Rows.Count; i++){for (int j = 0; j < srcDataTable.Columns.Count; j++){objData[i + 1, j] = srcDataTable.Rows[i][j];}}}string startCol = "A";int iCnt = (srcDataTable.Columns.Count / 26);string endColSignal = (iCnt == 0 ? "" : ((char)('A' + (iCnt - 1))).ToString());string endCol = endColSignal + ((char)('A' + srcDataTable.Columns.Count - iCnt * 26 - 1)).ToString();Excel.Range range = xlSheet.get_Range(startCol + "1", endCol + (srcDataTable.Rows.Count - iCnt * 26 + 1).ToString());range.Value = objData; //给Exccel中的Range整体赋值// range.EntireColumn.AutoFit(); //设定Excel列宽度自适应//xlSheet.get_Range(startCol + "1", endCol + "1").Font.Bold = 1;//Excel文件列名 字体设定为Bold//让后台执行设置为不可见,为true的话会看到打开一个Excel,然后数据在往里写xlApp.Visible = false;//设置禁止弹出保存和覆盖的询问提示框xlApp.DisplayAlerts = false;xlApp.AlertBeforeOverwriting = false;xlBook.SaveAs(excelFilePath, objMissing, objMissing, objMissing, objMissing, objMissing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlShared, objMissing, objMissing, objMissing, objMissing, objMissing);xlBook.Close(false, Missing.Value, Missing.Value);//退出并清理objects,回收内存xlApp.Quit();xlSheet = null;xlBook = null;xlApp = null;GC.Collect();}catch (Exception ex){throw ex;}}//把数据表的内容导出到Excel文件中public static  void OutDataToExcel(System.Data.DataTable srcDataTable, string excelFilePath){Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();object objMissing = System.Reflection.Missing.Value;//导出到execl try{if (xlApp == null){//MessageBox.Show("无法创建Excel对象,可能您的电脑未安装Excel!");return;}Microsoft.Office.Interop.Excel.Workbooks xlBooks = xlApp.Workbooks;Microsoft.Office.Interop.Excel.Workbook xlBook = xlBooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);Microsoft.Office.Interop.Excel.Worksheet xlSheet = (Microsoft.Office.Interop.Excel.Worksheet)xlBook.Worksheets[1];object[,] objData = new object[srcDataTable.Rows.Count + 1, srcDataTable.Columns.Count];//首先将数据写入到一个二维数组中for (int i = 0; i < srcDataTable.Columns.Count; i++){objData[0, i] = srcDataTable.Columns[i].ColumnName;}if (srcDataTable.Rows.Count > 0){for (int i = 0; i < srcDataTable.Rows.Count; i++){for (int j = 0; j < srcDataTable.Columns.Count; j++){objData[i + 1, j] = srcDataTable.Rows[i][j];}}}string startCol = "A";int iCnt = (srcDataTable.Columns.Count / 26);string endColSignal = (iCnt == 0 ? "" : ((char)('A' + (iCnt - 1))).ToString());string endCol = endColSignal + ((char)('A' + srcDataTable.Columns.Count - iCnt * 26 - 1)).ToString();Excel.Range range = xlSheet.get_Range(startCol + "1", endCol + (srcDataTable.Rows.Count - iCnt * 26 + 1).ToString());range.Value = objData; //给Exccel中的Range整体赋值// range.EntireColumn.AutoFit(); //设定Excel列宽度自适应//xlSheet.get_Range(startCol + "1", endCol + "1").Font.Bold = 1;//Excel文件列名 字体设定为Bold//让后台执行设置为不可见,为true的话会看到打开一个Excel,然后数据在往里写xlApp.Visible = false;//设置禁止弹出保存和覆盖的询问提示框xlApp.DisplayAlerts = false;xlApp.AlertBeforeOverwriting = false;xlBook.SaveAs(excelFilePath, objMissing, objMissing, objMissing, objMissing, objMissing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlShared, objMissing, objMissing, objMissing, objMissing, objMissing);xlBook.Close(false, Missing.Value, Missing.Value);//退出并清理objects,回收内存xlApp.Quit();xlSheet = null;xlBook = null;xlApp = null;GC.Collect();}catch (Exception ex){throw ex;}}}
}

【淘宝交易订单百万数据导出】C#快速汇出DataTable到Excel文件【已测试,正常运行】vs2017相关推荐

  1. taobao.trades.sold.increment.get( 淘宝店铺订单交易数据接口,淘宝店铺订单解密提额接口,淘宝店铺订单解密接口)代码对接教程

    taobao.trades.sold.increment.get( 淘宝店铺订单交易数据接口,淘宝店铺订单解密提额接口,淘宝店铺订单解密接口)代码对接教程如下: 1.公共参数 名称 类型 必须 描述( ...

  2. taobao.trade.fullinfo.get( 获取单笔交易的详细信息 )、淘宝店铺卖出订单详情接口,淘宝店铺订单明文接口,淘宝店铺订单解密接口

    taobao.trade.fullinfo.get( 获取单笔交易的详细信息 ),淘宝店铺卖出订单详情接口,对接该接口可用于获取淘宝店铺订单详情信息,包括卖出订单详情,买家姓名,买家电话,买家收货地址 ...

  3. 淘宝店铺订单解密接口/淘宝店铺订单插旗接口/淘宝店铺订单交易接口/淘宝店铺商品上传接口/淘宝店铺订单明文接口/代码对接分享

    淘宝店铺订单解密接口/淘宝店铺订单插旗接口/淘宝店铺订单交易接口/淘宝店铺商品上传接口/淘宝店铺订单明文接口/代码对接分享: 1.公共参数 名称 类型 必须 描述 (接口代码分享交流wx1997010 ...

  4. 淘宝店铺订单交易接口/淘宝店铺商品上传接口/淘宝店铺订单解密接口/淘宝店铺订单明文接口/淘宝店铺订单插旗接口代码对接分享

    淘宝店铺订单交易接口/淘宝店铺商品上传接口/淘宝店铺订单解密接口/淘宝店铺订单明文接口/淘宝店铺订单插旗接口代码对接分享如下: 1.公共参数 名称 类型 必须 描述 (接口代码交流wx:1997010 ...

  5. taobao.trade.memo.update淘宝店铺订单交易备注修改接口(订单插旗接口,订单交易接口,订单明文接口,订单解密接口)代码对接教程

    taobao.trade.memo.update淘宝店铺订单交易备注修改接口(订单插旗接口,订单交易接口,订单明文接口,订单解密接口)代码对接教程如下: 1.公共参数 名称 类型 必须 描述(接口代码 ...

  6. taobao.trade.memo.update淘宝店铺订单交易备注修改接口(店铺订单插旗接口,店铺订单交易接口,店铺订单明文接口,店铺订单解密接口)代码对接教程

    taobao.trade.memo.update淘宝店铺订单交易备注修改接口(店铺订单插旗接口,店铺订单交易接口,店铺订单明文接口,店铺订单解密接口)代码对接教程如下: 1.公共参数 名称 类型 必须 ...

  7. 淘宝店铺订单插旗接口(taobao.trade.memo.update淘宝店铺订单交易备注修改接口)代码对接教程

    淘宝店铺订单插旗接口(taobao.trade.memo.update淘宝店铺订单交易备注修改接口)代码对接教程如下 1.公共参数 名称 类型 必须 描述(接口代码教程wx19970108018) k ...

  8. 您的请求参数与订单信息不一致_[淘客订单检测]淘宝客订单检测接口,淘客订单查询API...

    功能 1.输入交易的订单编号,即可查询该订单是否为淘宝客订单.有意向请联系卫星weixiaot168. 2.查询结果 0:不是淘宝客订单:1:是. 3.根据淘宝官方的后台数据,进行检测,数据真实且有效 ...

  9. 淘宝客订单API获取订单代码

    Trade 数据结构 名称 类型 是否隐私 描述 seller_nick String Y 卖家昵称 buyer_nick String Y 买家昵称 title String Y 商品标题 type ...

最新文章

  1. jquery text方法html,jquery text(),html()方法的区别
  2. 从零开始在ubuntu上安装和使用k8s集群及报错解决
  3. c语言函数求方程ax2 bx c,关于求方程ax2+bx+c=0根的问题
  4. 计算机研究生怎样提高英语水平,英语对计算机专业的重要性及如何提高英语水平...
  5. android 支付宝和微信支付封装,Android支付宝和微信支付集成
  6. crontab没有正确重定向导致磁盘inode节点空间满
  7. java 8 lambda 排序_Java8 用Lambda表达式给List集合排序的实现
  8. php在线语音,PHP在线语音合成
  9. 一个数组分成两部分,让两部分的差最小
  10. file_get_contents('php://input') 和POST的区别
  11. MySQL: InnoDB 还是 MyISAM?
  12. python桌面程序打开慢_转 : 终于搞清楚了为什么Java桌面程序总是感觉慢的原因...
  13. PDE6 Transport with decay
  14. [Intellij] Project Structure 配置说明
  15. 机顶盒直播点播源码方案开发
  16. MAC 电脑安装jdk
  17. python打包deb_python开发将项目打包成deb
  18. 别错过这张AI商用清单:你的生产难题可能被一个应用解决!
  19. C/C++程序员是什么让你有如此优势?音视频开发该怎么学?
  20. 文件服务器 u口共享,轻松搭建专业级FTP文件共享服务器

热门文章

  1. 清洁、对话、带娃,扫地机摆脱“人工智障”标签
  2. 初学python–汽车管理系统
  3. yield java_yield在java中的使用
  4. python yield函数_python之yield函数
  5. Worthington 胰蛋白酶详细分解
  6. Flutter入门系列(二)---Flutter的原理及美团的实践
  7. 国内远程控制市场竞争激烈 TeamViewer一马当先
  8. C中十六进制字符串转十六进制数组
  9. 【备份专题】备份软件方案可靠性解析
  10. 我的专业用是计算机用英语怎么说,要表达“我的专业是”用英语怎么说?