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 }