winfrom 快速 导出excel

2024-01-23 07:32
文章标签 excel 快速 导出 winfrom

本文主要是介绍winfrom 快速 导出excel,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

此方法比较快,500条8列的数据不到1秒

只需要给一个有数据的datagridview就可以了


private void ToExcel_Click(object sender, EventArgs e){SaveFileDialog sfd = new SaveFileDialog();sfd.Filter = "Execl files (*.xls)|*.xlsx";sfd.FilterIndex = 0;sfd.RestoreDirectory = true;sfd.CreatePrompt = false;sfd.Title = "导出文件保存路径";if (sfd.ShowDialog() == DialogResult.OK){string path = sfd.FileName; //时间计算DateTime dt1 = DateTime.Now;saveAsExcel(path, dataGridView1);DateTime dt2 = DateTime.Now;MessageBox.Show("导出成功!共用了:" + (dt2 - dt1));}}//这个代码速度特别快,基本达到导出csv的速度public static void SaveAsExcel(string path, DataGridView gridView){if (gridView.RowCount > 65536){MessageBox.Show("当前表格中记录太多,不能导出excel(excel最多可以存储65536行记录)", "提示");//return;}try{saveAsExcel(path, gridView);System.GC.Collect();}catch (Exception ex){MessageBox.Show("导出excel时发生错误: " + ex.Message, "提示");System.GC.Collect();}}//上面的 SaveAsExcel 调用 saveAsExcel 的目,估计是为了解决 excel进程销毁的问题private static void saveAsExcel(string path, DataGridView gridView){object objMissing = System.Reflection.Missing.Value;Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application();app.Visible = false;Microsoft.Office.Interop.Excel.Workbook workBook = app.Workbooks.Add(objMissing);Microsoft.Office.Interop.Excel.Worksheet workSheet = (Microsoft.Office.Interop.Excel.Worksheet)workBook.Worksheets[1];//以下3个对象在前面定义,为了能在异常中可以释放Microsoft.Office.Interop.Excel.Range ranges = null;Microsoft.Office.Interop.Excel.Range range = null;Microsoft.Office.Interop.Excel.Range head = null;try{for (int i = 0; i < gridView.Columns.Count; i++){//Microsoft.Office.Interop.Excel.Range head = (Microsoft.Office.Interop.Excel.Range)workSheet.Cells[1, i + 1];head = (Microsoft.Office.Interop.Excel.Range)workSheet.Cells[1, i + 1];head.Value2 = gridView.Columns[i].HeaderText;head = null;}//A2用于指定起始行的位置//Microsoft.Office.Interop.Excel.Range range = workSheet.get_Range("A2", objMissing);range = workSheet.get_Range("A2", objMissing);int rows = gridView.Rows.Count, cols = gridView.Columns.Count;//Microsoft.Office.Interop.Excel.Range ranges = range.get_Resize(rows, cols);ranges = range.get_Resize(rows, cols);object[,] datas = new object[rows, cols];for (int i = 0; i < rows; i++){for (int j = 0; j < cols; j++){DataGridViewCell cell = gridView[j, i];if (typeof(string) == cell.ValueType){datas[i, j] = string.Format("'{0}", cell.FormattedValue);}else{datas[i, j] = cell.FormattedValue.ToString();}}}ranges.Value2 = datas;workBook.SaveAs(path, objMissing, objMissing, objMissing, objMissing, objMissing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, objMissing,objMissing, objMissing, objMissing, objMissing);}catch (Exception ex){throw (ex);}finally{workBook.Close(false, objMissing, objMissing);app.Quit();range = null;ranges = null;workBook = null;workSheet = null;app = null;}}

ps:此方法只是从网上找到的,地址已经不记得了。里面的注释什么的可能不一定对。但是整体方法肯定是可以的。

         这只是基于datagridview的导出,也没有sheet分页。如果想要其他的类型的,还要自己修改!



这篇关于winfrom 快速 导出excel的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/635652

相关文章

如何使用 Python 读取 Excel 数据

《如何使用Python读取Excel数据》:本文主要介绍使用Python读取Excel数据的详细教程,通过pandas和openpyxl,你可以轻松读取Excel文件,并进行各种数据处理操... 目录使用 python 读取 Excel 数据的详细教程1. 安装必要的依赖2. 读取 Excel 文件3. 读

Python利用ElementTree实现快速解析XML文件

《Python利用ElementTree实现快速解析XML文件》ElementTree是Python标准库的一部分,而且是Python标准库中用于解析和操作XML数据的模块,下面小编就来和大家详细讲讲... 目录一、XML文件解析到底有多重要二、ElementTree快速入门1. 加载XML的两种方式2.

C#实现将Excel表格转换为图片(JPG/ PNG)

《C#实现将Excel表格转换为图片(JPG/PNG)》Excel表格可能会因为不同设备或字体缺失等问题,导致格式错乱或数据显示异常,转换为图片后,能确保数据的排版等保持一致,下面我们看看如何使用C... 目录通过C# 转换Excel工作表到图片通过C# 转换指定单元格区域到图片知识扩展C# 将 Excel

使用Python将JSON,XML和YAML数据写入Excel文件

《使用Python将JSON,XML和YAML数据写入Excel文件》JSON、XML和YAML作为主流结构化数据格式,因其层次化表达能力和跨平台兼容性,已成为系统间数据交换的通用载体,本文将介绍如何... 目录如何使用python写入数据到Excel工作表用Python导入jsON数据到Excel工作表用

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

Python将博客内容html导出为Markdown格式

《Python将博客内容html导出为Markdown格式》Python将博客内容html导出为Markdown格式,通过博客url地址抓取文章,分析并提取出文章标题和内容,将内容构建成html,再转... 目录一、为什么要搞?二、准备如何搞?三、说搞咱就搞!抓取文章提取内容构建html转存markdown

vue使用docxtemplater导出word

《vue使用docxtemplater导出word》docxtemplater是一种邮件合并工具,以编程方式使用并处理条件、循环,并且可以扩展以插入任何内容,下面我们来看看如何使用docxtempl... 目录docxtemplatervue使用docxtemplater导出word安装常用语法 封装导出方

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

springboot security快速使用示例详解

《springbootsecurity快速使用示例详解》:本文主要介绍springbootsecurity快速使用示例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝... 目录创www.chinasem.cn建spring boot项目生成脚手架配置依赖接口示例代码项目结构启用s

java中使用POI生成Excel并导出过程

《java中使用POI生成Excel并导出过程》:本文主要介绍java中使用POI生成Excel并导出过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录需求说明及实现方式需求完成通用代码版本1版本2结果展示type参数为atype参数为b总结注:本文章中代码均为