版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、将DataGridView或DataTable导出为Excel支持进度条使用说明:编程语言:C#主要用于Winforms应用程序的报表导出操作。/使用时,请添加引用微软的Microsoft.Office.Interop.Excel组件/在以前的上传文档基础上增加两个重载方法,共四种参数的重载:/重载方法1:ExportToExcel(System.Data.DataTabledt)/重载方法2:ExportToExcel(DataGridViewdgv)/重载方法3:ExportToExcel(System.Data.DataTabledt,ProgressBarpb)/重载方法4:Expor
2、tToExcel(DataGridViewdgv,ProgressBarpb)/最后两个重载方法支持进度条控件源代码如下:usingSystem;usingSystem.Collections.Generic;usingSystem.Text;usingMicrosoft.Office.Interop.Excel;usingSystem.Windows.Forms;namespaceDoorControl/静态方法ExportToExcel提供四种参数的重载/DataGridView或DataTable导出到Excel,可以选择是否添加进度条来查看导出excel进度/需要使用进度条时,请在窗体
3、中加入一个ProgressBar控件progressBar1,并设置progressBar1.Visible=false/publicclassDataTableToExcel/将DataGridView转化为DataTable/publicstaticSystem.Data.DataTabledvtodt(DataGridViewdv)System.Data.DataTabledt=newSystem.Data.DataTable();System.Data.DataColumndc;for(inti=0;idv.Columns.Count;i+)dc=newSystem.Data.Data
4、Column();dc.ColumnName=dv.Columnsi.HeaderText.ToString();dt.Columns.Add(dc);for(intj=0;jdv.Rows.Count;j+)System.Data.DataRowdr=dt.NewRow();for(intx=0;xdv.Columns.Count;x+)drx=dv.Rowsj.Cellsx.Value;dt.Rows.Add(dr);returndt;/Ill将DataGridView导出为Excel文件(.xls)/Illvparamname=dgv要导出的DatGridViewpublicstatic
5、voidExportToExcel(DataGridViewdgv)获得DataTableSystem.Data.DataTabledt=dvtodt(dgv);ExportToExcel(dt);lllvsummaryIll将DataGridView导出为excel文件,导出过程中显示进度条lllvlsummarylllvparamname=dgv要导出的DatGridViewvlparamlllvparamname=pb与dgv在同一窗体的ProgressBar控件,pb初始化时Visible=falsevlparampublicstaticvoidExportToExcel(DataGr
6、idViewdgv,ProgressBarpb)获得DataTableSystem.Data.DataTabledt=dvtodt(dgv);ExportToExcel(dt,pb);lllvsummarylll将DataTable导出为Excel文件(.xls)lllvlsummarylllvparamname=dt要导出的DataTablevlparampublicstaticvoidExportToExcel(System.Data.DataTabledt)if(dt=null)return;Microsoft.Office.Interop.Excel.ApplicationxlApp=
7、newMicrosoft.Office.Interop.Excel.Application();if(xlApp=null)MessageBox.Show(”无法创建Excel对象,可能您的电脑未安装Excel);return;System.Windows.Forms.SaveFileDialogsaveDia=newSaveFileDialog();saveDia.Filter=Excel|*.xls;saveDia.Title=导出为Excel文件;saveDia.FileName=string.Format(0.xls,DateTime.Now.ToString(yyyyMMddHHmm
8、ss);if(saveDia.ShowDialog()=System.Windows.Forms.DialogResult.OK&!string.Empty.Equals(saveDia.FileName)Microsoft.Office.Interop.Excel.Workbooksworkbooks=xlApp.Workbooks;Microsoft.Office.Interop.Excel.Workbookworkbook=workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);Microso
9、ft.Office.Interop.Excel.Worksheetworksheet=(Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheetsl;取得sheetlMicrosoft.Office.Interop.Excel.Rangerange=null;longtotalCount=dt.Rows.Count;longrowRead=0;floatpercent=0;stringfileName=saveDia.FileName;/写入标题for(inti=0;idt.Columns.Count;i+)worksheet.Ce
10、llsl,i+l=dt.Columnsi.ColumnName;range=(Microsoft.Office.Interop.Excel.Range)worksheet.Cellsl,i+l;/range.Interior.ColorIndex=15;/背景颜色range.Font.Bold=true;/粗体range.HorizontalAlignment=Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;/居中/加边框range.BorderAround(Microsoft.Office.Interop.Excel.XlLine
11、Style.xlContinuous,Microsoft.Office.Interop.Excel.XlBorderWeight.xlThin,Microsoft.Office.Interop.Excel.XlColorIndex.xlColorIndexAutomatic,null);/range.ColumnWidth=4.63;/设置列宽/range.EntireColumn.AutoFit();/自动调整列宽return;rl.EntireRow.AutoFit();自动调整行高/写入内容for(intr=0;rdt.DefaultView.Count;r+)for(inti=0;il
12、)range.BordersMicrosoft.Office.Interop.Excel.XlBordersIndex.xlInsideVertical.Weight=Microsoft.Office.Interop.Excel.XlBorderWeight.xlThin;tryworkbook.Saved=true;workbook.SaveCopyAs(fileName);catch(Exceptionex)MessageBox.Show(”导出文件时出错,文件可能正被打开!n+ex.Message);if(dt=null)return;workbooks.Close();if(xlApp
13、!=null)xlApp.Workbooks.Close();xlApp.Quit();intgeneration=System.GC.GetGeneration(xlApp);System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp);xlApp=null;System.GC.Collect(generation);GC.Collect();强行销毁#region强行杀死最近打开的Excel进程System.Diagnostics.ProcessexcelProc=System.Diagnostics.Process.GetP
14、rocessesByName(EXCEL);System.DateTimestartTime=newDateTime();intm,killId=0;for(m=0;mexcelProc.Length;m+)if(startTimeexcelProcm.StartTime)startTime=excelProcm.StartTime;killId=m;if(excelProckillId.HasExited=false)excelProckillId.Kill();#endregionMessageBox.Show(”导出成功!);/将DataTable导出为excel文件,导出过程中显示进度
15、条/vparamname=dt要导出的DataTable对象/vparamname=pb窗体中的ProgressBar控件,pb初始化时Visible=falsev/parampublicstaticvoidExportToExcel(System.Data.DataTabledt,ProgressBarpb)return;Microsoft.Office.Interop.Excel.ApplicationxlApp=newMicrosoft.Office.Interop.Excel.Application();if(xlApp=null)MessageBox.Show(”无法创建Excel对
16、象,可能您的电脑未安装Excel);return;System.Windows.Forms.SaveFileDialogsaveDia=newSaveFileDialog();saveDia.Filter=Excel|*.xls;saveDia.Title=导出为Excel文件;saveDia.FileName=string.Format(0.xls,DateTime.Now.ToString(yyyyMMddHHmmss);if(saveDia.ShowDialog()=System.Windows.Forms.DialogResult.OK&!string.Empty.Equals(sav
17、eDia.FileName)Microsoft.Office.Interop.Excel.Workbooksworkbooks=xlApp.Workbooks;Microsoft.Office.Interop.Excel.Workbookworkbook=workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);Microsoft.Office.Interop.Excel.Worksheetworksheet=(Microsoft.Office.Interop.Excel.Worksheet)work
18、book.Worksheetsl;取得sheetlMicrosoft.Office.Interop.Excel.Rangerange=null;longtotalCount=dt.Rows.Count;pb.Visible=true;/将进度条控件显示pb.Maximum=(int)totalCount;/设置进度条控件的最大值longrowRead=0;floatpercent=0;stringfileName=saveDia.FileName;/写入标题for(inti=0;idt.Columns.Count;i+)worksheet.Cellsl,i+l=dt.Columnsi.Colu
19、mnName;range=(Microsoft.Office.Interop.Excel.Range)worksheet.Cellsl,i+l;/range.Interior.ColorIndex=15;/背景颜色range.Font.Bold=true;/粗体range.HorizontalAlignment=Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;/居中/加边框range.BorderAround(Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous,Micros
20、oft.Office.Interop.Excel.XlBorderWeight.xlThin,Microsoft.Office.Interop.Excel.XlColorIndex.xlColorIndexAutomatic,null);/range.ColumnWidth=4.63;/设置列宽/range.EntireColumn.AutoFit();/自动调整列宽r1.EntireRow.AutoFit();自动调整行高/写入内容for(intr=0;rdt.DefaultView.Count;r+)for(inti=0;i1)range.BordersMicrosoft.Office.Interop.Excel.XlBordersIndex.xlInsideVertical.Weight=Microsoft.Office.Interop.Excel.XlBorderWeight.xlThin;tryworkbook.Saved=true;workbook.SaveCopyAs(fileName);ca
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年安徽省中考英语试题含解析
- 心理健康教育习题
- 协方差相关系数
- 高中语文专题三杂记第3课越州赵公救灾记课件苏教版选修唐宋八大家散文蚜
- 2014-2020年钢轨行业咨询报告
- 2013-2015年中国公路治安卡口系统行业市场调查分析及生产技术工艺研究报告
- 2024至2030年中国微型直流风扇行业投资前景及策略咨询研究报告
- 缓和医疗科普
- 2024至2030年中国尼龙缝纫线数据监测研究报告
- 2024至2030年中国多股漆包绞线数据监测研究报告
- 外国新闻传播史 课件 第十三章 加拿大的新闻传播事业
- 宿舍文艺直播策划方案
- 北京市中小学生天文观测竞赛附有答案
- 世界慢阻肺日-肺系生命刻不容缓
- 《电子合同基础信息描述规范》
- (高清版)TDT 1072-2022 国土调查坡度分级图制作技术规定
- 陕西金拴塑业有限公司年产1万吨农用薄膜及年产2万吨橡胶粉建设项目环境影响报告
- 航空物流教育培训课件模板
- 机场能源管理与优化
- 签约仪式活动议程
- 国家突发公共卫生事件相关信息报告管理工作规范课件
评论
0/150
提交评论