首页 > 代码库 > 【机房收费系统C#版】——导出Excel
【机房收费系统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 = http://www.mamicode.com/new object[500, 35];>调用这两个函数实现导出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属性就好了。
总结
通过这个一小样例,感觉自己成长了不少,尽管在学习的过程中我们会遇到非常多问题。这些问题看起来非常困难。可是仅仅要我们学会站在巨人的肩膀上学习,给自己多一点耐心和信心,相信这些困难一定会成为我们成长路上的基石。
【机房收费系统C#版】——导出Excel
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。