1 /// <summary>
2 /// 导出Excel
3 /// </summary>
4 /// <param name="sheetName">表名</param>
5 /// <param name="dgv">要导出的文件名称</param>
6 public void DataGridViewToExcel(string sheetName, DataGridView dgv)
7 {
8 //创建一个保存对话框
9 SaveFileDialog save = new SaveFileDialog();
10 //创建一个流
11 Stream stream = null;
12 //设置文件类型
13 save.Filter = "Execl files (*.xls)|*.xls";
14 //文件类型默认第一个
15 save.FilterIndex = 0;
16 //上一次选择的目录
17 save.RestoreDirectory = true;
18 //获取或设置一个值,该值指示如果用户指定不存在的文件,对话框是否提示用户允许创建该文件。
19 save.CreatePrompt = true;
20 //设置保存窗口的标题
21 save.Title = "保存当前内容到Excel";
22 //创建工作簿
23 IWorkbook workbook = new HSSFWorkbook();
24 //表名称
25 ISheet sheet = workbook.CreateSheet(sheetName);
26 //创建行
27 IRow row = sheet.CreateRow(0);
28 //获取列数 设置表头
29 for (int i = 0; i < dgv.ColumnCount; i++)
30 {
31 //设置列标题
32 row.CreateCell(i).SetCellValue(dgv.Columns[i].HeaderText);
33 }
34 int rowindex = 1;//根据这个NPOI创建行
35 //设置行
36 for (int j = 0; j < dgv.Rows.Count; j++)
37 {
38 IRow dataRow = sheet.CreateRow(rowindex);
39 //数据列内容
40 for (int k = 0; k < dgv.Columns.Count; k++)
41 {
42 dataRow.CreateCell(k).SetCellValue(dgv.Rows[j].Cells[k].Value.ToString().Trim());
43 }
44 rowindex++;
45 }
46 //判断是否单击确定
47 if (save.ShowDialog() == DialogResult.OK)
48 {
49 stream = save.OpenFile();//将选择的路径和流赋值
50 if (stream != null)
51 {
52 //将表格内容写入到流中
53 workbook.Write(stream);
54 MessageBox.Show("信息导出成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
55 }
56 }
57 //释放资源,要不然导出来得把当前客户端关闭才能打开文件
58 workbook = null;
59 sheet = null;
60 row = null;
61 stream.Dispose();
62 }