【机房收费系统C#版】——导出Excel
前言
机房合作開始好长了一段时间。反重复复开了几次会,项目也是一拖再拖,作为组长。有80%的责任都在于我。为了不让这个项目陪着我过春节。要求自己一定要在这几天敲完。
还是一样的问题,用C#敲,从一開始到如今,不论什么一个功能的实现都是现学现查。对于导出Excel表格这个功能来说更不是意外。在网上找了非常多资料,反重复复地做小demo,最终有了我想要的效果。
实现
首先是加入引用
然后在程序代码上加入using
<span style="font-size:18px;">using System;
using System.Data;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;</span>
在窗口上加入datagriview控件,加入列
然后能够依据自己的须要加入列数,也能够编辑列标题。
效果
代码实现
<span style="font-size:18px;"> private void Form2_Load(object sender, EventArgs e){dgvAccectCash.AutoGenerateColumns = true;dgvAccectCash.Columns[0].HeaderText = "学号";dgvAccectCash.Columns[1].HeaderText = "充值金额";dgvAccectCash.Columns[2].HeaderText = "充值时间";dgvAccectCash.Columns[3].HeaderText = "充值日期";dgvAccectCash.Columns[4].HeaderText = "操作用户";dgvAccectCash.Columns[5].HeaderText = "是否结账";}</span>
定义两个函数,一个是将datagridview中的数据导入表中。一个是将datagridview中的数据导出到一张表中。
1、一个是将datagridview中的数据导入表中
<span style="font-size:18px;"> private DataTable exporeDataToTable(DataGridView dataGridView){//将datagridview中的数据导入到表中DataTable tempTable = new DataTable("tempTable");//定义一个模板表,专门用来获取列名DataTable modelTable = new DataTable("ModelTable");//创建列for (int column = 0; column < dgvAccectCash.Columns.Count; column++){//可见的列才显示出来if (dgvAccectCash.Columns[column].Visible == true){DataColumn tempColumn = new DataColumn(dgvAccectCash.Columns[column].HeaderText, typeof(string));tempTable.Columns.Add(tempColumn);DataColumn modelColumn = new DataColumn(dgvAccectCash.Columns[column].Name, typeof(string));modelTable.Columns.Add(modelColumn);}}//加入datagridview中行的数据到表for (int row = 0; row < dgvAccectCash.Rows.Count; row++){if (dgvAccectCash.Rows[row].Visible == false){continue;}DataRow tempRow = tempTable.NewRow();for (int i = 0; i < tempTable.Columns.Count; i++){tempRow[i] = dgvAccectCash.Rows[row].Cells[modelTable.Columns[i].ColumnName].Value;}tempTable.Rows.Add(tempRow);}return tempTable;}</span>
2、将datagridView中的数据导出到一张表中
<span style="font-size:18px;"> private void OutputAsExcelFile(DataGridView dataGridView){//将datagridView中的数据导出到一张表中DataTable tempTable = this.exporeDataToTable(dataGridView);//导出信息到Excel表// Microsoft.Office.Interop.Excel.ApplicationClass myExcel;Microsoft.Office.Interop.Excel.ApplicationClass myExcel;Microsoft.Office.Interop.Excel.Workbooks myWorkBooks;Microsoft.Office.Interop.Excel.Workbook myWorkBook;Microsoft.Office.Interop.Excel.Worksheet myWorkSheet;char myColumns;Microsoft.Office.Interop.Excel.Range myRange;object[,] myData = new object[500, 35];int i, j;//j代表行,i代表列myExcel = new Microsoft.Office.Interop.Excel.ApplicationClass();//显示EXCELmyExcel.Visible = true;if (myExcel == null){MessageBox.Show("本地Excel程序无法启动!请检查您的Microsoft Office正确安装并能正常使用", "提示");return;}myWorkBooks = myExcel.Workbooks;myWorkBook = myWorkBooks.Add(System.Reflection.Missing.Value);myWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)myWorkBook.Worksheets[1];myColumns = (char)(tempTable.Columns.Count + 64);//设置列myRange = myWorkSheet.get_Range("A1", myColumns.ToString() + "5");//设置列宽int count = 0;//设置列名foreach (DataColumn myNewColumn in tempTable.Columns){myData[0, count] = myNewColumn.ColumnName;count = count + 1;}//输出datagridview中的数据记录并放在一个二维数组中j = 1;foreach (DataRow myRow in tempTable.Rows)//循环行{for (i = 0; i < tempTable.Columns.Count; i++)//循环列{myData[j, i] = myRow[i].ToString();}j++;}//将二维数组中的数据写到Excel中myRange = myRange.get_Resize(tempTable.Rows.Count + 1, tempTable.Columns.Count);//创建列和行myRange.Value2 = myData;myRange.EntireColumn.AutoFit();}</span>
调用这两个函数实现导出Excel表格。
<span style="font-size:18px;"> private void button1_Click(object sender, EventArgs e){exporeDataToTable(dgvAccectCash);//将datagridview中的数据导入到表中OutputAsExcelFile(dgvAccectCash);//将datagridView中的数据导出到一张表中}</span>
效果
问题
这里面还是有一些问题:"无法嵌入互操作类型“Microsoft.Office.Interop.Excel.ApplicationClass”。
请改用适用的接口".百度了一下是由于引用里“Microsoft.Office.Interop.Excel”这个属性的问题,改动“嵌入互操作类型”true或false属性就好了。
总结
通过这个一小样例,感觉自己成长了不少,尽管在学习的过程中我们会遇到非常多问题。这些问题看起来非常困难。可是仅仅要我们学会站在巨人的肩膀上学习,给自己多一点耐心和信心,相信这些困难一定会成为我们成长路上的基石。
转载于:https://www.cnblogs.com/cxchanpin/p/7100089.html
【机房收费系统C#版】——导出Excel相关推荐
- 机房收费系统合作版(二):透过显示上机人数品味如何做到全心全意为人民服务
[前言] 尘封半年之久的机房合作再次被鹅大组长提上日程,为了积极响应组长的号召最近两日在噼里啪啦的弄机房!逐渐追回了开始合作时信誓旦旦的宣言(详情点击<机房收费系统合作版:开始团队合作之旅> ...
- 机房收费系统合作版(一):开始团队合作之旅
时光荏苒,犹记去年这时开始自己人生的第一个系统(机房收费系统个人版)的开发,又至刚刚弄完的机房收费个人重构版,至此自己对这个系统已开发了二次,趁热打铁于是乎轰轰烈烈的开始了自己对机房收费的第三遍合作之 ...
- 机房收费系统合作版(四):一路走来感谢有你相伴
[前言] 伴随着1月25日米老师首次验收以及1月31日学术再次验收,鹅思晗小组的机房收费系统合作版终于画上一个圆满的句号. 回想这两个大牛和一只小菜的软件开发之旅还是蛮有趣的:特记于此,以此来纪念我这 ...
- 机房收费系统合作版(三):利用备忘录模式实现取消修改基本数据
[前言] 鹅思晗小组三个菜鸟成就一个系统,在这个过程中我有幸负责BLL层和外观层的实现.做过机房的朋友都知道,BLL层一个亮点就是设计模式. 至今犹记去年六月份鹅思晗小组成立后,那几天轰轰烈烈的探讨, ...
- 机房收费系统重构版:照葫芦画瓢
跟随着培养计划的步伐,自己弄完三层后就风风火火的开始了自己机房重构之路!现在回首这一路,有苦过有兴奋过,有想放弃不再做的时候也有挑灯夜战本本没电自动关机的时候,这一切的一切组成了自己这段时间最 ...
- 项目总结——机房收费系统合作版
机房合作就结束了,这次合作开发是第一次与别人一块儿开发一个系统,收获还是蛮大的.以下我总结几点算是经验吧,供以后參考: 管理上 1.计划 在准备合作开发之前我们三个去找米老师,老师给我 ...
- 机房收费系统重构版:那个系统我们一起遇到的问题
前言: 总是说在问题中茁壮成长,俗话说光说不练假把式!回想之前确实停留在嘴上说说就完事了的假把式上,这次敲了第二次机房重构后根据自己的切身经历仔细回味了一番.相比于之前有了更深的理解吧,感觉还是有记 ...
- 【机房合作】机房收费系统合作版总结
经历了为期一个半月的机房合作开发过程,自己的沟通表达,写作开发以及业务能力方面都有了很大程度的提升,在此来总结一下这个开发的过程. 一.前期准备的重要性 在我以前的认知里,写代码,做项目就是直接开干, ...
- 机房收费系统合作版(五)——初识托付
托付是什么?你对托付熟悉吗?答案是肯定的!你对托付一定非常熟悉! 对托付的熟悉,正如你对一个倒立着的人一样熟悉!为什么这么说?由于方法的调用对于每个学习过编程的人来说都非常熟悉,并且是熟悉的不能再熟悉 ...
- 机房收费系统个人重构版:暮然回首,灯火阑珊
[背景] 在蹒跚中自己的机房收费系统个人重构版已完结:回望这一路征程,感慨颇多:快乐过,痛苦过:紧张过,放松过!真可谓:酸甜苦辣,五味杂陈. [比一比] VB.Net版个人重构版比VB版机房收费系 ...
最新文章
- 使用OpenVas漏扫
- IntelliJ IDEA 前端调试(Js Debug)
- uboot环境变量实现分析
- 【转】汇总:LDA理论、变形、优化、应用、工具库
- sklearn自学指南(part2)--使用手册的主目录
- vue项目使用eslint
- JS中关于构造函数、原型链、prototype、constructor、instanceof、__proto__属性
- LeetCode 474. 一和零(01背包动态规划)
- html中怎样播放本地视频教程,【Axure9基础教程】内联框架如何引入本地音频 视频 HTML PDF等本地文件...
- .net解决Xss攻击
- 自己设计的一个打字平台
- python 强制转换成字符_Python笔记(三)
- NHibernate之映射文件配置说明(转载1)
- 计算机一级pdf百度云,计算机一级(实操).pdf
- android手机怎么投屏到电视盒子,手机钉钉怎么投屏到电视上
- 教资篇(1)—高中信息技术科目
- 数据分析常用方法和工具
- CSS让同一行的图片和文字垂直居中对齐
- PS制作立体效果——圆环
- 微信公众号获取用户当前地址经纬度
热门文章
- DBeaver连接SqlServer报“The server selected protocol version TLS10 is not accepted by client prefere”的错误
- 正则表达式过滤多个词语并替换为相同长度的星号
- 微服务学习之Hystrix容错保护【Hoxton.SR1版】
- 怎么改掉科学计数法_宝宝口唇干裂怎么回事?该怎么办?
- Error: Invalid or corrupt
- arnold官方帮助文档_Python用不好英语水平不够?这里有官方中文文档你看不看
- (秒杀项目) 4.8 异步化扣减库存(核心)
- shell export path_学习Shell编程
- c#水晶报表连接mysql_C# 水晶报表打印 绑定数据库表
- 谷粒商城:14.全文检索ElasticSearch