excel导出功能原型

2023-03-02

本篇博客是记录自己实现的excel导出功能原型,下面我将简单介绍本原型:

这是我自制的窗体,有一个ListView和一个Button(导出)控件。

这是我在网上找到了使用exel需要引用的库。

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里面。

       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表格,并可以选择存到指定目录下或默认路径下。

其核心代码如下:

        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();
}
//创建一个Microsoft.Office.Interop.Excel对象
     public void Create()
{
app = new Microsoft.Office.Interop.Excel.Application();
wbs = app.Workbooks;
wb = wbs.Add(true);
}
//ws:要设值的工作表的名称 X行Y列 value 值
     public void SetCellValue(string ws, int x, int y, object value)
{
  
GetSheet(ws).Cells[x, y] = value;
}  
//文档另存为
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; }
}

excel导出功能原型的相关教程结束。