前言

机房合作開始好长了一段时间。反重复复开了几次会,项目也是一拖再拖,作为组长。有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. 机房收费系统合作版(二):透过显示上机人数品味如何做到全心全意为人民服务

    [前言] 尘封半年之久的机房合作再次被鹅大组长提上日程,为了积极响应组长的号召最近两日在噼里啪啦的弄机房!逐渐追回了开始合作时信誓旦旦的宣言(详情点击<机房收费系统合作版:开始团队合作之旅> ...

  2. 机房收费系统合作版(一):开始团队合作之旅

    时光荏苒,犹记去年这时开始自己人生的第一个系统(机房收费系统个人版)的开发,又至刚刚弄完的机房收费个人重构版,至此自己对这个系统已开发了二次,趁热打铁于是乎轰轰烈烈的开始了自己对机房收费的第三遍合作之 ...

  3. 机房收费系统合作版(四):一路走来感谢有你相伴

    [前言] 伴随着1月25日米老师首次验收以及1月31日学术再次验收,鹅思晗小组的机房收费系统合作版终于画上一个圆满的句号. 回想这两个大牛和一只小菜的软件开发之旅还是蛮有趣的:特记于此,以此来纪念我这 ...

  4. 机房收费系统合作版(三):利用备忘录模式实现取消修改基本数据

    [前言] 鹅思晗小组三个菜鸟成就一个系统,在这个过程中我有幸负责BLL层和外观层的实现.做过机房的朋友都知道,BLL层一个亮点就是设计模式. 至今犹记去年六月份鹅思晗小组成立后,那几天轰轰烈烈的探讨, ...

  5. 机房收费系统重构版:照葫芦画瓢

        跟随着培养计划的步伐,自己弄完三层后就风风火火的开始了自己机房重构之路!现在回首这一路,有苦过有兴奋过,有想放弃不再做的时候也有挑灯夜战本本没电自动关机的时候,这一切的一切组成了自己这段时间最 ...

  6. 项目总结——机房收费系统合作版

    机房合作就结束了,这次合作开发是第一次与别人一块儿开发一个系统,收获还是蛮大的.以下我总结几点算是经验吧,供以后參考: 管理上     1.计划     在准备合作开发之前我们三个去找米老师,老师给我 ...

  7. 机房收费系统重构版:那个系统我们一起遇到的问题

    前言:  总是说在问题中茁壮成长,俗话说光说不练假把式!回想之前确实停留在嘴上说说就完事了的假把式上,这次敲了第二次机房重构后根据自己的切身经历仔细回味了一番.相比于之前有了更深的理解吧,感觉还是有记 ...

  8. 【机房合作】机房收费系统合作版总结

    经历了为期一个半月的机房合作开发过程,自己的沟通表达,写作开发以及业务能力方面都有了很大程度的提升,在此来总结一下这个开发的过程. 一.前期准备的重要性 在我以前的认知里,写代码,做项目就是直接开干, ...

  9. 机房收费系统合作版(五)——初识托付

    托付是什么?你对托付熟悉吗?答案是肯定的!你对托付一定非常熟悉! 对托付的熟悉,正如你对一个倒立着的人一样熟悉!为什么这么说?由于方法的调用对于每个学习过编程的人来说都非常熟悉,并且是熟悉的不能再熟悉 ...

  10. 机房收费系统个人重构版:暮然回首,灯火阑珊

    [背景]   在蹒跚中自己的机房收费系统个人重构版已完结:回望这一路征程,感慨颇多:快乐过,痛苦过:紧张过,放松过!真可谓:酸甜苦辣,五味杂陈. [比一比] VB.Net版个人重构版比VB版机房收费系 ...

最新文章

  1. 使用OpenVas漏扫
  2. IntelliJ IDEA 前端调试(Js Debug)
  3. uboot环境变量实现分析
  4. 【转】汇总:LDA理论、变形、优化、应用、工具库
  5. sklearn自学指南(part2)--使用手册的主目录
  6. vue项目使用eslint
  7. JS中关于构造函数、原型链、prototype、constructor、instanceof、__proto__属性
  8. LeetCode 474. 一和零(01背包动态规划)
  9. html中怎样播放本地视频教程,【Axure9基础教程】内联框架如何引入本地音频 视频 HTML PDF等本地文件...
  10. .net解决Xss攻击
  11. 自己设计的一个打字平台
  12. python 强制转换成字符_Python笔记(三)
  13. NHibernate之映射文件配置说明(转载1)
  14. 计算机一级pdf百度云,计算机一级(实操).pdf
  15. android手机怎么投屏到电视盒子,手机钉钉怎么投屏到电视上
  16. 教资篇(1)—高中信息技术科目
  17. 数据分析常用方法和工具
  18. CSS让同一行的图片和文字垂直居中对齐
  19. PS制作立体效果——圆环
  20. 微信公众号获取用户当前地址经纬度

热门文章

  1. DBeaver连接SqlServer报“The server selected protocol version TLS10 is not accepted by client prefere”的错误
  2. 正则表达式过滤多个词语并替换为相同长度的星号
  3. 微服务学习之Hystrix容错保护【Hoxton.SR1版】
  4. 怎么改掉科学计数法_宝宝口唇干裂怎么回事?该怎么办?
  5. Error: Invalid or corrupt
  6. arnold官方帮助文档_Python用不好英语水平不够?这里有官方中文文档你看不看
  7. (秒杀项目) 4.8 异步化扣减库存(核心)
  8. shell export path_学习Shell编程
  9. c#水晶报表连接mysql_C# 水晶报表打印 绑定数据库表
  10. 谷粒商城:14.全文检索ElasticSearch