excel导出功能原型
本篇博客是记录自己实现的excel导出功能原型,下面我将简单介绍本原型:
这是我自制的窗体,有一个ListView和一个Button(导出)控件。
这是我在网上找到了使用exel需要引用的库。
1 2 3 4 5 6 7 8 9 10 11 | using Microsoft.Office.Core; using Microsoft.Office.Interop.Excel; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; |
然后我便开始了对这个原型的假设与测试,我首先把ListView中的列标题,和一行666的假数据写到ListView里面。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | public void CreateHeadersAndFillListView() { //建立PSP表格的每个列标题 ColumnHeader date = new ColumnHeader(); date.Text = "日期" ; date.Width = 100; listView1.Columns.Add(date); ColumnHeader categories = new ColumnHeader(); categories.Text = "类别" ; categories.Width = 60; listView1.Columns.Add(categories); ColumnHeader tasks = new ColumnHeader(); tasks.Text = "任务" ; tasks.Width = 180; listView1.Columns.Add(tasks); ColumnHeader startTime = new ColumnHeader(); startTime.Text = "开始时间" ; startTime.Width = 60; listView1.Columns.Add(startTime); ColumnHeader endTime = new ColumnHeader(); endTime.Text = "结束时间" ; endTime.Width = 60; listView1.Columns.Add(endTime); ColumnHeader intTime = new ColumnHeader(); intTime.Text = "中断时间" ; intTime.Width = 60; listView1.Columns.Add(intTime); ColumnHeader deltaTime = new ColumnHeader(); deltaTime.Text = "净时间" ; deltaTime.Width = 60; listView1.Columns.Add(deltaTime); ColumnHeader comment = new ColumnHeader(); comment.Text = "备注" ; comment.Width = 250; listView1.Columns.Add(comment); //填入数据 lvi = new ListViewItem( "666" ); //第0列是日期 lvi.SubItems.Add( "666" ); //第一列是类别下拉框 lvi.SubItems.Add( "666" ); //输入好的任务描述信息 lvi.SubItems.Add( "666" ); //开始时间 lvi.SubItems.Add( "666" ); //结束时间 暂时为空 lvi.SubItems.Add( "666" ); //中断时间 lvi.SubItems.Add( "666" ); //净时间 lvi.SubItems.Add( "666" ); //备注信息填入 listView1.Items.Add(lvi); //添加一行 } |
然后开始运行程序,此时出现以下画面:
点击导出按钮,得到excel表格,并可以选择存到指定目录下或默认路径下。
其核心代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | private void button1_Click( object sender, EventArgs e) { Excelex ee = new Excelex(); ee.Create(); ee.ws = ee.AddSheet( "第一周" ); //循环保存写入数据 ee.SetCellValue( "第一周" , 1, 1, "日期" ); ee.SetCellValue( "第一周" , 1, 2, "类别" ); ee.SetCellValue( "第一周" , 1, 3, "任务" ); ee.SetCellValue( "第一周" , 1, 4, "开始时间" ); ee.SetCellValue( "第一周" , 1, 5, "结束时间" ); ee.SetCellValue( "第一周" , 1, 6, "中断时间" ); ee.SetCellValue( "第一周" , 1, 7, "净时间" ); ee.SetCellValue( "第一周" , 1, 8, "备注" ); for ( int i = 0; i < listView1.Items.Count; i++) { for ( int j = 0; j < 8; j++) { ee.SetCellValue( "第一周" , i + 2, j + 1, listView1.Items[i].SubItems[j].Text); } } ee.app.Visible = true ; //用excel打开,显示出来。 ee.SaveAs( "F:\\WPS\\newg.xls" ); MessageBox.Show( "保存成功!请在****查看!" ); ee.Close(); } |
1 2 3 4 5 6 | //创建一个Microsoft.Office.Interop.Excel对象<br> public void Create() { app = new Microsoft.Office.Interop.Excel.Application(); wbs = app.Workbooks; wb = wbs.Add( true ); }<br> |
1 2 3 4 5 | //ws:要设值的工作表的名称 X行Y列 value 值<br> public void SetCellValue(string ws, int x, int y, object value) { GetSheet(ws).Cells[x, y] = value; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | //文档另存为 public bool SaveAs( object FileName) { try { wb.SaveAs(FileName, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); return true ; } catch (Exception ex) { return false ; } } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步