DataGridView导出EXCEL
public class execl { /// <summary> /// 导出EXECLDataGridViewX /// </summary> /// <param name="dataGridView">DataGridViewX</param> /// <param name="IsVisible">是否导出隐藏列</param> public static void exp(DataGridView dataGridView,bool IsVisible=false) { try { if (dataGridView.RowCount<=0) { throw new Exception("未有导出数据!!!"); } SaveFileDialog saveFileDialog = new SaveFileDialog(); saveFileDialog.Filter = "2007电子表格|*.xlsx"; if (saveFileDialog.ShowDialog()== DialogResult.Cancel) { return; } string file = saveFileDialog.FileName; XSSFWorkbook workbook2007 = new XSSFWorkbook(); //新建xlsx工作簿 workbook2007.CreateSheet("Sheet1"); XSSFSheet SheetOne = (XSSFSheet)workbook2007.GetSheet("Sheet1"); //首行标题 // SheetOne.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(0, 0, 0, 18)); #region 样式1 ///样试 ICellStyle style = workbook2007.CreateCellStyle(); //设置单元格的样式:水平对齐居中 style.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center; //设置垂直剧中 style.VerticalAlignment = VerticalAlignment.Center; //边框颜色 style.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin; style.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin; style.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin; style.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin; //style.FillPattern = FillPattern.SolidForeground; //自动换行 // style.WrapText = true; #endregion #region 样式2 ///样试 ICellStyle style2 = workbook2007.CreateCellStyle(); //设置单元格的样式:水平对齐居中 style2.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center; //设置垂直剧中 style2.VerticalAlignment = VerticalAlignment.Center; //边框颜色 style2.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin; style2.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin; style2.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin; style2.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin; //style.FillPattern = FillPattern.SolidForeground; //自动换行 //style2.WrapText = true; style2.FillForegroundColor = HSSFColor.Red.Index; style2.FillPattern = FillPattern.SolidForeground; #endregion int i = 0; //行号 XSSFRow row = (XSSFRow)SheetOne.CreateRow(i); int c = 0; //列号 ICell cell; //写入列 foreach (DataGridViewColumn eo in dataGridView.Columns) { if (IsVisible) { if (!eo.Visible) { continue; } } cell = row.CreateCell(c); cell.SetCellValue(eo.HeaderText); cell.CellStyle = style; c++; } i++; foreach (DataGridViewRow ei in dataGridView.Rows) { row= (XSSFRow)SheetOne.CreateRow(i); c = 0; foreach (DataGridViewColumn eo in dataGridView.Columns) { if (IsVisible) { if (!eo.Visible) { continue; } } cell = row.CreateCell(c); cell.SetCellValue(ei.Cells[eo.Name].Value.ToString()); if (ei.DefaultCellStyle.BackColor.Name == "Red") { cell.CellStyle = style2; } else { cell.CellStyle = style; } c++; } i++; } FileStream file2007 = new FileStream(file, FileMode.Create); workbook2007.Write(file2007); file2007.Close(); workbook2007.Close(); MessageBox.Show ("导出成功"); } catch (Exception ex ) { throw ex ; } } } }