导出EXCEL效率问题

问题描述

做了一个年度的工资查询汇总导出excel,但是我现在赋值是1个个单元格赋值,速度超级慢。30个人导出要5分钟。求指导怎么提高效率啊~~~if(dtSalaryPrintInfo.Rows.Count>0){System.Data.DataTableSdt=newSystem.Data.DataTable();Sdt=GetNewDataTable(dtSalaryPrintInfo,dtEmpInfo.Rows[j]["icno"].ToString());for(inti=0;i<Sdt.Rows.Count;i++){//if(dtEmpInfo.Rows[j]["icno"].ToString().Equals(dtSalaryPrintInfo.Rows[i]["icno"].ToString()))//{//#region#region一月if(Sdt.Rows[i]["Month"].ToString()=="1"){worksheet1.Cells[Convert.ToInt32(string.Format("{0}",4+LineCount)),Convert.ToInt32(string.Format("{0}",5+ColCount))]=dtSalaryPrintInfo.Rows[i]["GJTotal"].ToString();Rangerange37=worksheet1.get_Range(string.Format("E{0}",4+RangeCount));//选择操作块range37.Borders.Color=System.Drawing.ColorTranslator.ToOle(myColor);range37.HorizontalAlignment=XlHAlign.xlHAlignCenter;//设置水平对齐方式 }#endregion//#endregion//}}

解决方案

解决方案二:
用这个啊,NPOI,反正用起来还不错
解决方案三:
引用1楼yangmingxing980的回复:

用这个啊,NPOI,反正用起来还不错

想问下效果啊如果我是1万多行的EXCEL数据,他是1次性导出的吗,性能怎么样啊
解决方案四:
NPOI快到没朋友...
解决方案五:

解决方案六:
引用2楼herott632482577的回复:

Quote: 引用1楼yangmingxing980的回复:
用这个啊,NPOI,反正用起来还不错

想问下效果啊如果我是1万多行的EXCEL数据,他是1次性导出的吗,性能怎么样啊

才一万条,决定快得很,我自己几万条都很快
解决方案七:
把多个Excel文件导出自动进行汇总//把用户设置的信息写入到系统INI文件中privatevoidbtn_Set_Click(objectsender,EventArgse){WritePrivateProfileString("Set","MultiExcel",txt_MultiExcel.Text,M_str_Name);//设置多个Excel文件路径WritePrivateProfileString("Set","Excel",txt_Excel.Text,M_str_Name);//设置目标Excel文件路径WritePrivateProfileString("Set","Hour",nudown_Hour.Value.ToString(),M_str_Name);//设置小时WritePrivateProfileString("Set","Min",nudown_Min.Value.ToString(),M_str_Name);//设置分钟MessageBox.Show("配置文件设置成功!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);timer1.Start();//启动计时器}//选择多个Excel文件privatevoidbtn_SelectMultiExcel_Click(objectsender,EventArgse){OpenFileDialogopenMultiExcel=newOpenFileDialog();//实例化打开对话框对象openMultiExcel.Filter="Excel文件|*.xls";//设置打开文件筛选器openMultiExcel.Multiselect=true;//设置打开对话框中可以多选if(openMultiExcel.ShowDialog()==DialogResult.OK)//判断是否选择了文件{for(inti=0;i<openMultiExcel.FileNames.Length;i++)//遍历选择的多个文件txt_MultiExcel.Text+=openMultiExcel.FileNames[i]+",";//显示选择的多个Excel文件}}//汇总到一个Excel文件privatevoidtimer1_Tick(objectsender,EventArgse){objectmissing=System.Reflection.Missing.Value;//定义object缺省值string[]P_str_Names=txt_MultiExcel.Text.Split(',');//存储所有选择的Excel文件名stringP_str_Name="";//存储遍历到的Excel文件名List<string>P_list_SheetNames=newList<string>();//实例化泛型集合对象,用来存储工作表名称Microsoft.Office.Interop.Excel.Applicationexcel=newMicrosoft.Office.Interop.Excel.Application();//实例化Excel对象//打开指定的Excel文件Microsoft.Office.Interop.Excel.Workbookworkbook=excel.Application.Workbooks.Open(txt_Excel.Text,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing);Microsoft.Office.Interop.Excel.WorksheetnewWorksheet=(Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets.Add(missing,missing,missing,missing);//创建新工作表if(DateTime.Now.Hour==nudown_Hour.Value&&DateTime.Now.Minute==nudown_Min.Value){for(inti=0;i<P_str_Names.Length-1;i++)//遍历所有选择的Excel文件名{P_str_Name=P_str_Names[i];//记录遍历到的Excel文件名//指定要复制的工作簿Microsoft.Office.Interop.Excel.WorkbookTempworkbook=excel.Application.Workbooks.Open(P_str_Name,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing);P_list_SheetNames=GetSheetName(P_str_Name);//获取Excel文件中的所有工作表名for(intj=0;j<P_list_SheetNames.Count;j++)//遍历所有工作表{//指定要复制的工作表Microsoft.Office.Interop.Excel.WorksheetTempWorksheet=(Microsoft.Office.Interop.Excel.Worksheet)Tempworkbook.Sheets[P_list_SheetNames[j]];//创建新工作表TempWorksheet.Copy(missing,newWorksheet);//将工作表内容复制到目标工作表中}Tempworkbook.Close(false,missing,missing);//关闭临时工作簿}}//codego.net/tags/1/1/workbook.Save();//保存目标工作簿workbook.Close(false,missing,missing);//关闭目标工作簿MessageBox.Show("程序在"+DateTime.Now.ToShortTimeString()+"分时自动汇总了多个Excel文件!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);CloseProcess("EXCEL");//关闭所有Excel进程}
解决方案八:
引用3楼diaodiaop的回复:

NPOI快到没朋友...

+1现在不用NPOI还用什么?自己写的话如果没有深厚的功底的话写出来的也就仅供娱乐吧.NET下很多提高生产效率的好东东多多使用吧

时间: 2024-11-05 12:28:28

导出EXCEL效率问题的相关文章

求助: 关于C# 导出Excel 文件的效率问题

问题描述 做WindowsForms程序有个需求,就是要把一个表的数据导出为Excel文件我用如下的excel=newApplicationClass();Excel.Workbooksworkbooks=excel.Workbooks;workbook=workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet);Excel.Sheetssheets=workbook.Worksheets;worksheet=(Excel._Worksheet)shee

PHP导入和导出Excel文件

一.PHP导出Excel文件 1:第一推荐无比风骚的PHPExcel,官方网站: http://www.codeplex.com/PHPExcel导入导出都成,可以导出office2007格式,同时兼容2003 2.使用pear的Spreadsheet_Excel_Writer类下载地址: http://pear.php.net/package/Spreadsheet_Excel_Writer此类依赖于OLE,下载地址:http://pear.php.net/package/OLE需要注意的是导

GridView选择性导出Excel解决方案

 这篇文章主要介绍了GridView选择性导出Excel的解决方案,需要的朋友可以参考下 一.需求分析  首先根据用户需求,可以进行选择性导出,之前已经做了全部导出,这次新需求又来了,不过仔细想想也对,全部导出几万条数据,意义并不大,而可选择性的导出用户需要的数据才是用户需要的.有需求就有解决方法.  任何问题的解决方法都不止一个,GridView的选择性导出也一样,首先GridView绑定的是数据库的表数据,选择导出,我们也可以从数据中查询需要的数据,可以直接从前台GridView表中取得数据

jsp导出excel并支持分sheet导出的方法_JSP编程

本文实例讲述了jsp导出excel并支持分sheet导出的方法.分享给大家供大家参考,具体如下: public DownloadFile exportToExcel() throws Exception{ String config_value = systemConfigService.getConfigValueByKey("Export.Xls"); logger.info("获取的导出类型为execl表格"+",每页sheet导出的行数为:&quo

数据量在十万级时多线程导出Excel,怎么做呢?

问题描述 数据量在十万级时多线程导出Excel,怎么做呢?(1),在导出Excel的时候遇到数据量较大的时候,出现假死,(2),用一种思路就是多线程优化导出. 解决方案 解决方案二:引用楼主u012764390的回复: (2),用一种思路就是多线程优化导出. 不懂你这是什么思路.有根据么?解决方案三:多线程既可能缩短时间,也可能多花时间.没有深入一点的分析,就不能知道该做什么.建议你还是回到系统出发点去重新研究设计.解决方案四:(2),用一种思路就是多线程优化导出.这是什么意思?多开几个线程可以

GridView选择性导出Excel解决方案_实用技巧

一.需求分析 首先根据用户需求,可以进行选择性导出,之前已经做了全部导出,这次新需求又来了,不过仔细想想也对,全部导出几万条数据,意义并不大,而可选择性的导出用户需要的数据才是用户需要的.有需求就有解决方法. 任何问题的解决方法都不止一个,GridView的选择性导出也一样,首先GridView绑定的是数据库的表数据,选择导出,我们也可以从数据中查询需要的数据,可以直接从前台GridView表中取得数据,问题来了,怎么判断选中了,怎么后去选中的那条信息的主键(或者获得整条信息)两个方向,到底哪个

JavaScript导出Excel实例详解_javascript技巧

本文实例讲述了JavaScript导出Excel的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>WEB页面导出为EXCEL文

Oracle导出excel数据_oracle

推荐阅读:Oracle读取excel数据 oracle导出excel(非csv)的方法有两种,1.使用sqlplus spool,2.使用包体 现将网上相关代码整理后贴出以备不时之需: 使用sqlplus: 使用sqlplus需要两个文件:sql脚本文件和格式设置文件. 去除冗余信息,main.sql --main.sql 注意,需要在sqlplus下运行 非plsql命令行下 set linesize 200 set term off verify off feedback off pages

一起谈.NET技术,Silverlight 4中把DataGrid数据导出Excel—附源码下载

Silverlight中常常用到DataGrid来展示密集数据. 而常见应用系统中我们需要把这些数据导入导出到固定Office套件中例如常用的Excel表格. 那么在Silverlight 中如何加以实现? 在参考大量资料后 提供参考思路如下: A:纯客户端导出处理.利用Silverlight 与Javascript 进行交互实现导出Excel. B:服务器端导出.获得DataGrid数据源. 传递给WCF Service到服务器端. 然后把传回数据通过Asp.net中通用处理导出Excel方法