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

相关文章

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

C#实现将Office文档(Word/Excel/PDF/PPT)转为Markdown格式

《C#实现将Office文档(Word/Excel/PDF/PPT)转为Markdown格式》Markdown凭借简洁的语法、优良的可读性,以及对版本控制系统的高度兼容性,逐渐成为最受欢迎的文档格式... 目录为什么要将文档转换为 Markdown 格式使用工具将 Word 文档转换为 Markdown(.

使用C#删除Excel表格中的重复行数据的代码详解

《使用C#删除Excel表格中的重复行数据的代码详解》重复行是指在Excel表格中完全相同的多行数据,删除这些重复行至关重要,因为它们不仅会干扰数据分析,还可能导致错误的决策和结论,所以本文给大家介绍... 目录简介使用工具C# 删除Excel工作表中的重复行语法工作原理实现代码C# 删除指定Excel单元

Python实现pdf电子发票信息提取到excel表格

《Python实现pdf电子发票信息提取到excel表格》这篇文章主要为大家详细介绍了如何使用Python实现pdf电子发票信息提取并保存到excel表格,文中的示例代码讲解详细,感兴趣的小伙伴可以跟... 目录应用场景详细代码步骤总结优化应用场景电子发票信息提取系统主要应用于以下场景:企业财务部门:需

Mac备忘录怎么导出/备份和云同步? Mac备忘录使用技巧

《Mac备忘录怎么导出/备份和云同步?Mac备忘录使用技巧》备忘录作为iOS里简单而又不可或缺的一个系统应用,上手容易,可以满足我们日常生活中各种记录的需求,今天我们就来看看Mac备忘录的导出、... 「备忘录」是 MAC 上的一款常用应用,它可以帮助我们捕捉灵感、记录待办事项或保存重要信息。为了便于在不同

Python处理大量Excel文件的十个技巧分享

《Python处理大量Excel文件的十个技巧分享》每天被大量Excel文件折磨的你看过来!这是一份Python程序员整理的实用技巧,不说废话,直接上干货,文章通过代码示例讲解的非常详细,需要的朋友可... 目录一、批量读取多个Excel文件二、选择性读取工作表和列三、自动调整格式和样式四、智能数据清洗五、

MybatisX快速生成增删改查的方法示例

《MybatisX快速生成增删改查的方法示例》MybatisX是基于IDEA的MyBatis/MyBatis-Plus开发插件,本文主要介绍了MybatisX快速生成增删改查的方法示例,文中通过示例代... 目录1 安装2 基本功能2.1 XML跳转2.2 代码生成2.2.1 生成.xml中的sql语句头2

8种快速易用的Python Matplotlib数据可视化方法汇总(附源码)

《8种快速易用的PythonMatplotlib数据可视化方法汇总(附源码)》你是否曾经面对一堆复杂的数据,却不知道如何让它们变得直观易懂?别慌,Python的Matplotlib库是你数据可视化的... 目录引言1. 折线图(Line Plot)——趋势分析2. 柱状图(Bar Chart)——对比分析3

一文教你Java如何快速构建项目骨架

《一文教你Java如何快速构建项目骨架》在Java项目开发过程中,构建项目骨架是一项繁琐但又基础重要的工作,Java领域有许多代码生成工具可以帮助我们快速完成这一任务,下面就跟随小编一起来了解下... 目录一、代码生成工具概述常用 Java 代码生成工具简介代码生成工具的优势二、使用 MyBATis Gen

Python Pandas高效处理Excel数据完整指南

《PythonPandas高效处理Excel数据完整指南》在数据驱动的时代,Excel仍是大量企业存储核心数据的工具,Python的Pandas库凭借其向量化计算、内存优化和丰富的数据处理接口,成为... 目录一、环境搭建与数据读取1.1 基础环境配置1.2 数据高效载入技巧二、数据清洗核心战术2.1 缺失