针对上一篇复制DataGridView选中单元格复制到Excel中,将DataGridView中数据全部导出到Excel文件可能经要使用的更多。这是在练习一个项目里所写的,完全通过测试。
需要注意的是,在导出到Excel文件,一定要杀Excel的进程。杀进程的语法如下:
1,下面是主角DataGridView导出到Excel文件,如下:
2,方法的调用
需要注意的是,在导出到Excel文件,一定要杀Excel的进程。杀进程的语法如下:
//杀Excel后台进程 [DllImport("User32.dll", CharSet = CharSet.Auto)] public static extern int GetWindowThreadProcessId(IntPtr hwnd, out int Pid); IntPtr intp=new IntPtr(xlApp.Hwnd); //得到excel的句柄,前题是excel对象已经创建 int id=0; GetWindowThreadProcessId(intp, out id); System.Diagnostics.Process P = System.Diagnostics.Process.GetProcessById(id); P.Kill();
1,下面是主角DataGridView导出到Excel文件,如下:
/// <summary> /// DataGridView中的所有数据导出到Excel /// </summary> /// <param name="ExportDgv">需要导出的DataGridView</param> /// <param name="fullFileName">导出后的文件全路径</param> /// <param name="isOpenFile">文件是否打开</param> /// <returns></returns> public bool OutputFileToExcel(DataGridView ExportDgv, string fullFileName, bool isOpenFile) { int id=0; bool ExportSuccess = false; int RowIndex = 0; int ColIndex = 0; //数据验证 if (ExportDgv==null) { return false; } if (ExportDgv.ColumnCount==0|| ExportDgv.RowCount==0) { return false; } if (ExportDgv.RowCount > 65536 || ExportDgv.ColumnCount > 256) { return false; } //有效的行数、列数 int rowCount = ExportDgv.Rows.GetRowCount(DataGridViewElementStates.Visible); int colCount = ExportDgv.Columns.GetColumnCount(DataGridViewElementStates.Visible); Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application(); if (xlApp == null) { return false; } //创建Excel工作薄 Microsoft.Office.Interop.Excel.Workbook xlBook = xlApp.Workbooks.Add(true); //创建Excel工作表 Microsoft.Office.Interop.Excel.Worksheet xlSheet = (Microsoft.Office.Interop.Excel.Worksheet)xlBook.Worksheets[1];//第1个工作表 Microsoft.Office.Interop.Excel.Range range; IntPtr intp=new IntPtr(xlApp.Hwnd); //定义一个缓存,用来存放DataGridView的数据 object[,] objData = new object[rowCount + 1, colCount]; //1.存放DataGridView的列题行,隐藏列不要 for (int i = 0; i < ExportDgv.Columns.Count; i++) { if (ExportDgv.Columns[i].Visible) { objData[RowIndex, ColIndex++] = ExportDgv.Columns[i].HeaderText;//将列标题放入缓存中 //设置成文本型 if (ExportDgv.Columns[i].ValueType.ToString()=="System.String") { range = xlSheet.get_Range(xlApp.Cells[1, ColIndex], xlApp.Cells[rowCount + 1, ColIndex]); range.NumberFormat = "@"; } } } //2.存放DataGridView中的数据, for (int i = 1; i < rowCount; i++) { RowIndex++; ColIndex = 0; for (int j = 0; j < ExportDgv.Columns.Count; j++) { if (ExportDgv.Columns[j].Visible) { objData[RowIndex, ColIndex++] = ExportDgv[j, RowIndex - 1].Value; } } System.Windows.Forms.Application.DoEvents(); } //3.写入到Excel range = xlSheet.get_Range(xlApp.Cells[1, 1], xlApp.Cells[rowCount + 1, colCount]); range.Value2 = objData; //保存 try { //设置文本表格的属性 xlApp.Cells.EntireColumn.AutoFit();//自动列宽 xlApp.Cells.VerticalAlignment = Microsoft.Office.Interop.Excel.Constants.xlCenter; xlApp.Cells.HorizontalAlignment = Microsoft.Office.Interop.Excel.Constants.xlLeft; xlApp.ErrorCheckingOptions.BackgroundChecking = false; //设置列头 range = xlSheet.get_Range(xlApp.Cells[1, 1], xlApp.Cells[1, colCount]);//第一行数据,列标题 range.Font.Bold = true; range.HorizontalAlignment = Microsoft.Office.Interop.Excel.Constants.xlCenter; xlBook.Save(); xlBook.SaveCopyAs(fullFileName); ExportSuccess = true; } catch { ExportSuccess = false; } finally { //释放资源,关闭进程 xlApp.Quit(); GetWindowThreadProcessId(intp, out id); System.Diagnostics.Process P = System.Diagnostics.Process.GetProcessById(id); P.Kill(); } if (isOpenFile) //打开文件,此处调用了项目中的对文件操作的一个组件 { HR.Class.IO.FileOperat FP = new HR.Class.IO.FileOperat(); FP.OpenFile(fullFileName); } return ExportSuccess; }
2,方法的调用
void 另存为Excel文件_Click(object sender, EventArgs e) { if (this.RowCount==0||this.ColumnCount==0) { return; } SaveFileDialog SFD = new SaveFileDialog(); SFD.Filter = "Microsoft Excel电子文档(*.xls)|*.xls"; if (SFD.ShowDialog()==DialogResult.OK) { this.Cursor = Cursors.WaitCursor; HR.Control.DataGridViewOperation.Operate.OutputOperate OO = new HR.Control.DataGridViewOperation.Operate.OutputOperate(); OO.OutputFileToExcel(this, SFD.FileName, false); GC.Collect(); this.Cursor = Cursors.Default; } }
void 输出到Excel文件ToolStripMenuItem_Click(object sender, EventArgs e) { HR.Control.DataGridViewOperation.Operate.OutputOperate OO = new HR.Control.DataGridViewOperation.Operate.OutputOperate(); OO.OutputFileToExcel(this, System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\temp.xls", true); }
发表评论
-
C# 实现将文件夹分卷压缩
2015-04-17 17:01 1239http://bbs.csdn.net/topics/3907 ... -
C#发送邮件
2015-04-17 15:58 694public class SendEmailHelper ... -
C# xml文件读取
2015-02-11 16:08 640看附件................ -
什么时候该用委托,为什么要用委托,委托有什么好处....
2015-01-29 16:56 815http://www.cnblogs.com/superpce ... -
C#中动态加载和卸载DLL
2015-01-26 14:02 1420在C++中加载和卸载DLL是一件很容易的事,LoadLibra ... -
转:c#常用的18种设计模式
2015-01-21 08:16 767http://blog.jobbole.com/78130/ -
C#委托的介绍(delegate、Action、Func、predicate)
2015-01-09 17:26 1115http://www.cnblogs.com/akwwl/p/ ... -
接口和抽象类有什么区别 .
2014-12-22 16:35 614接口和抽象类有什么区别 你选择使用接口和抽象类的依据是什么 ... -
C#一个简单写日志文件的类
2014-12-11 09:57 1108/// <summary> /// L ... -
Linq初级班 Linq to DataSet体验(单表、多表联合查询JOIN语法)
2014-12-10 14:34 355http://www.cnblogs.com/huangcon ... -
C#泛型详解
2014-11-29 11:31 481我们在编写程序时,经常遇到两个模块的功能非常相似,只是一个是处 ... -
线程同步与异步的区别
2014-11-26 09:12 876异步处理就是按照不同步的程序处理问题。异步处理与同步处理是对立 ... -
应用C#和SQLCLR编写SQL Server用户定义函数 .
2013-10-09 17:07 482http://blog.csdn.net/zhzuo/arti ... -
log4Net简介
2013-06-30 11:32 574使用log4Net可以将系统听日志保存到DB、日志文件、邮箱中 ... -
DataGridView历史记录的前进与后退操作
2013-06-23 11:13 1107此功能介绍:DataGridView频繁查询数据时,可以将每次 ... -
c# 对INI配置文件的读取操作
2013-06-17 10:51 677此种方法只对如下格式的INI文件起作用 server=loca ... -
对DataGridView控件的扩展开发
2013-06-15 21:47 2376首先在项目中引用 ... -
对集合控件(ListBox,ComboBox,TreeView,RichTextBox,DataGridView)的查找、替换操作控件
2013-06-15 09:39 1544一、程序入口: using System; using ... -
C#对文件、文件夹操作公用组件
2013-06-11 09:46 967namespace HR.Class.IO { / ... -
TreeView控件操作开发篇之(五)
2013-06-09 00:09 824#region 加载文件夹及文件到树 ...
相关推荐
本教程将详细讲解如何高效地将`dataGridView`中的数据批量导出到Excel文件,特别是针对大量数据(如36列和万行)的快速处理,目标是在15秒内完成操作。 首先,我们有两种方法可以实现这一功能: 1. **使用NPOI库**...
以下是对标题“C#DataGridView导出到Excel”及描述“C#DataGridView导出到Excel源代码设计”的深入解析,涵盖其关键实现技术与细节。 #### 一、引入必要的命名空间 要实现此功能,首先需要导入一系列命名空间,...
其中,将 DataGridView 控件中的数据导出到 Excel 文件是一种常见的需求。下面将详细介绍如何通过 C# 实现这一功能。 #### DataGridView 控件简介 DataGridView 控件是 Windows Forms 中用于显示和编辑数据的强大...
在这个场景中,"C#下成功登录后datagridview数据导出excel"的标题描述了一个常见的需求:用户通过登录窗口验证身份后,能够将数据显示在datagridview控件中,并且支持将这些数据导出到Excel文件中。这一过程涵盖了多...
- 加载Excel文件到内存,使用`EPPlus.ExcelPackage.License.UseFreeLicense()`(如果需要许可证)。 - 读取工作表数据:`var worksheet = package.Workbook.Worksheets[0];`,然后转换为DataTable或List对象。 - ...
而将`DataGridView`中的数据导出到Excel是常见的需求,这通常涉及到数据处理和文件格式转换。下面将详细阐述如何实现这个功能。 首先,我们需要了解`DataGridView`的基本用法。`DataGridView`控件可以动态加载数据...
在C# Winform开发中,经常需要将DataGridView中的数据导出到Excel文件中,以便于用户进行进一步的数据处理或存档。根据提供的代码示例,我们可以将其分为两个主要部分:当前页数据的导出与全部数据的导出。 #### 二...
6. **保存Excel文件**:最后一步是保存Excel文件到指定路径。 ```csharp if (saveFileName != "") { try { workbook.SaveCopyAs(saveFileName); } catch (Exception ex) { MessageBox.Show("保存文件时...
在C# WinForm应用开发中,常常需要将DataGridView中的数据导出到Excel文件,以便于数据分析、存储或共享。本文将详细介绍两种实现这一功能的方法,这两种方法都经过了实际测试,确保可行。 **方法一:使用EPPlus库*...
有时,我们可能需要将这些数据导出到Excel文件中,以便于数据分析、共享或打印。在C#中,实现这个功能可以通过使用第三方库或者.NET Framework自带的组件来完成。本教程将详细讲解如何使用C#将包含图片和文本的...
本文将深入探讨如何使用C#将DataGridView中的数据导出到Excel文件,以及提供一个详细的实例源码分析。 首先,导出数据到Excel主要涉及两个步骤:创建Excel工作簿并填充数据。在C#中,我们可以使用Microsoft.Office....
3. 保存Excel文件:使用SaveAs方法保存Excel文件到指定的文件路径中。 知识点 1. 使用VB6将DataGridView中的数据导出到Excel文件中。 2. 使用CreateObject函数创建一个Excel应用程序对象。 3. 使用Workbooks.Open...
在.NET开发环境中,经常需要将数据从用户界面控件如DataGridView导出到Excel文件,以方便数据处理和分享。在本教程中,我们将探讨如何利用C#编程语言和Aspose.Cells库来实现这个功能,无需依赖Microsoft Office组件...
本篇将详细介绍如何在`DataGridView`中添加图片,并将其导出到`Excel`文件中,同时会涉及到C#编程语言中的图像处理和文件操作。 首先,要实现在`DataGridView`中添加图片,你需要创建一个自定义的`...
总结,`WinForm`的`DataGridView`导出Excel功能涉及对`Microsoft.Office.Interop.Excel`库的使用,包括创建Excel应用程序、创建工作簿和工作表、写入数据以及保存文件等步骤。在实际开发中,还需要关注异常处理、...
空间名为“whh” ,类中函数名tool_Excel.UpLoadExcel()中有3个参数,参数1:dataGridView对象,参数2:Excel文件存储路径(string),参数3:要创建的表名(string),超级好用,给大家分享。
将dataGridView中的数据导出到Excel可以帮助用户方便地保存和进一步处理数据。在Visual Studio 2005这样的开发环境中,我们可以使用多种方法实现这个功能。 首先,我们需要了解如何在C#或VB.NET中操作Excel。...
**使用NPOI导出`DataGridView`到Excel的步骤** 1. **安装NPOI NuGet包** 首先,你需要在Visual Studio中打开你的项目,然后通过NuGet包管理器安装NPOI库。这将自动添加所需的引用,使你能够使用NPOI的功能。 2. *...
要实现“datagridview导出到excel”的功能,你需要遵循以下步骤: 1. 引用必要的库:首先,你需要在项目中引用Microsoft.Office.Interop.Excel库,这个库提供了与Excel交互的接口。这可以通过右键点击项目 -> 添加...
本教程将详细介绍如何使用C#导出DataGridView中的数据到Excel文件。首先,我们需要理解几个关键概念和使用的技术。 1. **Microsoft Office Interop**: 这是微软提供的一套接口,允许.NET应用程序与Office应用程序...