1.首先项目需要引入NPOI.dll
2..cs文件需要引入
using NPOI.HSSF.Util;
using NPOI.SS.UserModel;
using NPOI.SS.Util;
3.导出的代码,根据个人需求自己修改……
public void NpoiExcel(DataTable dt, string title)
{
NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook();
NPOI.SS.UserModel.ISheet sheet1 = book.CreateSheet(title);
int dtRows = dt.Rows.Count;
int dtColums = dt.Columns.Count;
//1.标题合并单元格
sheet1.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(0, 0, 0, dtColums - 1));
IRow row0 = sheet1.CreateRow(0);
row0.HeightInPoints = 30;
ICell cell0 = row0.CreateCell(0);
cell0.SetCellValue(title);
ICellStyle style0 = book.CreateCellStyle();
style0.Alignment = HorizontalAlignment.CENTER;//水平居中
style0.VerticalAlignment = VerticalAlignment.CENTER;//垂直居中
style0.WrapText = true;//自动换行
IFont font0 = book.CreateFont();
font0.Boldweight = 700;
font0.FontHeightInPoints = 20;
style0.SetFont(font0);
cell0.CellStyle = style0;
//2.导出条件合并单元格
sheet1.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(1, 1, 0, dtColums - 1));
IRow row1 = sheet1.CreateRow(1);
row1.HeightInPoints = 20;
ICell cell1 = row1.CreateCell(0);
cell1.SetCellValue("日期区间:" + startDate.Text.Trim() + " - " + endDate.Text.Trim());
//3.列名样式
ICellStyle style2 = book.CreateCellStyle();
style2.Alignment = HorizontalAlignment.CENTER;//水平居中
style2.VerticalAlignment = VerticalAlignment.CENTER;//垂直居中
style2.WrapText = true;//自动换行
IFont font2 = book.CreateFont();
font2.Boldweight = 700;
style2.SetFont(font2);
style2.BottomBorderColor = HSSFColor.BLACK.index;
style2.BorderBottom = NPOI.SS.UserModel.BorderStyle.THIN;
style2.BorderLeft = NPOI.SS.UserModel.BorderStyle.THIN;
style2.BorderRight = NPOI.SS.UserModel.BorderStyle.THIN;
style2.BorderTop = NPOI.SS.UserModel.BorderStyle.THIN;
style2.Alignment = NPOI.SS.UserModel.HorizontalAlignment.CENTER;
style2.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.CENTER;
style2.FillForegroundColor = NPOI.HSSF.Util.HSSFColor.GREY_25_PERCENT.index;
style2.FillPattern = NPOI.SS.UserModel.FillPatternType.SOLID_FOREGROUND;
//列名
NPOI.SS.UserModel.IRow row = sheet1.CreateRow(2);
row.HeightInPoints = 20;
ICell cellCo; //单元格
for (int i = 0; i < dtColums; i++)
{
cellCo = row.CreateCell(i);
cellCo.CellStyle = style2;
cellCo.SetCellValue(dt.Columns[i].ColumnName);
}
//4.行内容样式
ICellStyle style3 = book.CreateCellStyle();
style3.Alignment = HorizontalAlignment.CENTER;//水平居中
style3.VerticalAlignment = VerticalAlignment.CENTER;//垂直居中
style3.WrapText = true;//自动换行
IFont font3 = book.CreateFont();
font3.Boldweight = 600;
style3.SetFont(font3);
style3.BottomBorderColor = HSSFColor.BLACK.index;
style3.BorderBottom = NPOI.SS.UserModel.BorderStyle.THIN;
style3.BorderLeft = NPOI.SS.UserModel.BorderStyle.THIN;
style3.BorderRight = NPOI.SS.UserModel.BorderStyle.THIN;
style3.BorderTop = NPOI.SS.UserModel.BorderStyle.THIN;
style3.Alignment = NPOI.SS.UserModel.HorizontalAlignment.CENTER;
style3.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.CENTER;
style3.FillPattern = NPOI.SS.UserModel.FillPatternType.SOLID_FOREGROUND;
//行
for (int i = 0; i < dtRows; i++)
{
NPOI.SS.UserModel.IRow rowtemp = sheet1.CreateRow(i + 3);
rowtemp.HeightInPoints = 20;
for (int a = 0; a < dtColums; a++)
{
cellCo = rowtemp.CreateCell(a);
cellCo.CellStyle = style3;
cellCo.SetCellValue(dt.Rows[i][a].ToString());
}
}
//合计行
NPOI.SS.UserModel.IRow rowFooter = sheet1.CreateRow(dtRows + 3);
rowFooter.HeightInPoints = 20;
cellCo = rowFooter.CreateCell(0);
cellCo.CellStyle = style3;
cellCo.SetCellValue("合计");
for (int i = 1; i < dtColums; i++)
{
cellCo = rowFooter.CreateCell(i);
cellCo.CellStyle = style3;
cellCo.SetCellValue(Convert.ToInt32(dt.Compute("SUM(" + dt.Columns[i].ColumnName + ")", "true")).ToString());
}
//列宽自适应,只对英文和数字有效
for (int i = 0; i <= dtColums; i++)
{
sheet1.AutoSizeColumn(i);
}
// 写入到客户端
System.IO.MemoryStream ms = new System.IO.MemoryStream();
book.Write(ms);
Response.AddHeader("Content-Disposition", "attachment;filename=\"" + HttpUtility.UrlEncode(title + ".xls", System.Text.Encoding.UTF8) + "\"");
Response.BinaryWrite(ms.ToArray());
book = null;
ms.Close();
ms.Dispose();
}
NPOI导出Excel,简单实现代码
最新推荐文章于 2023-01-31 14:38:41 发布