一、實現效果
二、實現流程:
在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.csdn.net/detail/kevin_iot/9377861