手机版

通过剪贴板将数据从DataGridView导出到Excel

时间:2021-11-08 来源:互联网 编辑:宝哥软件园 浏览:

将DataGridView中的数据导出到超过中有许多方法,常见的方法是使用Office COM组件将DataGridView中的数据循环复制到超过单元格对象中,然后再保存整个超过工作簿。但是如果数据量太大,例如上万行数据或者有多个超过工作表需要同时导出,效率会比较低。可以尝试使用异步操作或多线程的方式来解决用户界面死锁的问题。这里介绍一种直接通过Windows操作系统操作系统剪贴板将数据从DataGridView导出到超过的方法。代码如下:复制代码代码如下:使用系统;使用系统。集合。通用;使用系统组件模型.使用系统。数据;使用系统。绘图;使用系统Linq .使用系统。文字;使用系统窗户。窗体;使用Excel=微软办公室。互操作。超过使用系统。反思;使用微软办公室。互操作。超过命名空间windowsformsaapplication 1 { public分部类Form 1 : Form { public Form 1(){ InitializeComponent();这个。savefiledialog1。筛选器=' Excel '工作簿|*。xlsx|Excel启用宏的工作簿|*。xlsm|Excel 97-2003工作簿|*。xls ';这个。savefiledialog1。filename=' demo。xlsx ';load DATa();} private void LoadData(){ BindingListCar cars=new BindingListCar();汽车。添加(新车('福特','野马',1967年));汽车。添加(新车('谢尔比空调','眼镜蛇',1965年));汽车。添加(新车('雪佛兰','科尔维特斯汀雷',1965年));这个。DataGridView 1。数据来源=汽车;}私人空间toolStripButton1 _ Click(对象发送者,EventArgs e){ string filePath=string .空的;如果(这个。savefiledialog1。showdialog()==系统.窗户。表格。对话结果。ok){文件路径=this。savefiledialog1。文件名;}否则{返回}这个。datagridview 1。selectall();剪贴板SetDataObject(这。datagridview 1。getclipboardcontent());Excel .应用程序objExcel=nullExcel .工作簿objWorkbook=nullExcel .工作表objsheet=null尝试{ objExcel=新微软办公室。互操作。excel。application();objWorkbook=objExcel .工作簿。添加(缺少。价值);objsheet=(Excel .工作表)objWorkbook .活动纸;objExcel .可见=假;objExcel.get_Range('A1 ',系统。类型。缺失)。粘贴特殊(XlPasteType.xlPasteAll,xlpastespecialooperation。xlpastespecialooperationone,Type .缺少,类型。失踪);objsheet .名称='演示;//设置表属性objExcel .细胞。英语专栏。auto fit();//自动列宽objExcel .单元格。垂直对齐=微软办公室。互操作。excel。常数。XlCenterobjExcel .单元格。水平对齐=微软办公室。互操作。excel。常数。xlleftobjExcel .检查选项时出错。背景检查=假;//保存文件obj工作簿.另存为(文件路径,缺失。值,缺失。值,缺失。值,缺失。值,缺失。值,Excel .XlSaveAsAccessMode.xlShared,缺失。值,缺失。值,缺失。值,缺失。值,缺失。价值);}捕获(异常错误){消息框。显示(错误。消息,"错误",消息框按钮。好的,消息框图标。错误);返回;}最后{//处置超过相关对象if (objWorkbook!=null) { objWorkbook .关闭(缺失。值,缺失。值,缺失。价值);} if (objExcel .练习册!=null) { objExcel .工作簿。关闭();} if (objExcel!=null) { objExcel .退出();} obj sheet=NullObjworkbook=NullObJexcel=NullGC .collect();//strong制最终清理。} } }公共类汽车{私人字符串_ make私有字符串_模型;私人国际年;公共汽车(字符串品牌,字符串型号,整年){ _ make=make_ model=model_年=年;}公共字符串Make { get { return _ make}设置{ _ make=value} }公共字符串模型{ get { return _ model}设置{ _ model=value } } public int Year { get { return _ Year;}设置{ _year=值;} } } } 导出数据到超过的操作在事件工具按钮1 _单击中,代码的第49行和50行是将DataGridView当前选中的行复制到系统剪贴板中,62行将剪贴板中的内容粘贴到超过默认表的一流的单元格中Excel。会自动格式化将粘贴的内容,如下图

使用剪贴板导出数据的过程相对简单,省略了遍历和操作Excel对象。缺点是无法设置导出数据的格式和样式。如果需要设置导出数据的样式,可以尝试使用OpenXML修改Excel文件的样式。

版权声明:通过剪贴板将数据从DataGridView导出到Excel是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。