一、实现效果
二、实现流程:
在c#widowform项目的引用那里添加第三方文件Aspose.Cells.dll(文章最后会附上下载地址),添加listview控件,添加两个button控件,最下面添加textBox控件。
1、Aspose.Cells.dll添加:
右键引用->添加应用Aspose.Cells.dll。
2、添加listview控件:
设置listview的属性,Columns选项添加自己的项目名称,如编号、时间、姓名、班级。
再修改listview的view属性为:Details。
三、代码实现:
1、导出文件函数实现:
public void ReportToExcel(ListView list, List<int> ColumnWidth, string ReportTitleName)
{
//获取用户选择的excel文件名称
string path;
SaveFileDialog savefile = new SaveFileDialog();
savefile.Filter = "Excel files(*.xls)|*.xls";
if (savefile.ShowDialog() == DialogResult.OK)
{
//获取保存路径
path = savefile.FileName;
Workbook wb = new Workbook();
Worksheet ws = wb.Worksheets[0];
Cells cell = ws.Cells;
//定义并获取导出的数据源
string[,] _ReportDt = new string[list.Items.Count, list.Columns.Count];
for (int i = 0; i < list.Items.Count; i++)
{
for (int j = 0; j < list.Columns.Count; j++)
{
_ReportDt[i, j] = list.Items[i].SubItems[j].Text.ToString();
}
}
//合并第一行单元格
Range range = cell.CreateRange(0, 0, 1, list.Columns.Count);
range.Merge();
cell["A1"].PutValue(ReportTitleName); //标题
//设置行高
cell.SetRowHeight(0, 20);
//设置字体样式
Style style1 = wb.Styles[wb.Styles.Add()];
style1.HorizontalAlignment = TextAlignmentType.Center;//文字居中
style1.Font.Name = "宋体";
style1.Font.IsBold = true;//设置粗体
style1.Font.Size = 12;//设置字体大小
Style style2 = wb.Styles[wb.Styles.Add()];
style2.HorizontalAlignment = TextAlignmentType.Center;
style2.Font.Size = 10;
//给单元格关联样式
cell["A1"].SetStyle(style1); //报表名字 样式
//设置Execl列名
for (int i = 0; i < list.Columns.Count; i++)
{
cell[1, i].PutValue(list.Columns[i].Text);
cell[1, i].SetStyle(style2);
}
//设置单元格内容
int posStart = 2;
for (int i = 0; i < list.Items.Count; i++)
{
for (int j = 0; j < list.Columns.Count; j++)
{
cell[i + posStart, j].PutValue(_ReportDt[i, j].ToString());
cell[i + posStart, j].SetStyle(style2);
}
}
//设置列宽
for (int i = 0; i < list.Columns.Count; i++)
{
cell.SetColumnWidth(i, Convert.ToDouble(ColumnWidth[i].ToString()));
}
//保存excel表格
wb.Save(path);
}
}
2、textBox1日志输出,显示文件是否输出成功
DataTime.Now.Tostring("HH:mm:ss")为当前时间函数
public void output(string log)
{
//如果日志信息长度超过100行,则自动清空
if (textBox1.GetLineFromCharIndex(textBox1.Text.Length) > 100)
textBox1.Text = "";
//添加日志
textBox4.AppendText(DateTime.Now.ToString("HH:mm:ss ") + log + "\r\n");
}
3、“清空数据”button控件代码实现
private void dataclean_Click(object sender, EventArgs e)
{
listView1.Items.Clear();//清空列表数据
}
4、导出数据button控件代码实现
private void dataout_Click(object sender, EventArgs e)
{
List<int> list = new List<int>() { 5, 18, 10, 10, 10 };
ReportToExcel(listView1, list, DateTime.Now.ToString("HH:mm:ss "));
output("表格数据导出完成");
}
http://download.youkuaiyun.com/detail/kevin_iot/9377861