1.安装
nuget搜索选择对应版本安装
安装完成后查看项目引用是否存在这些DLL
开始使用前熟悉理解的方法
IWorkbook excel = new HSSFWorkbook();//创建.xls文件
ISheet sheet = excel.CreateSheet("sheet1"); //创建sheet工作表1
sheet.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(0, 0, 0, 9));//合并单元格功能 从开始行到结束行 开始列到结束列
在NPOI里面是从0开始 对应excel上面1开始
sheet.CreateRow(Row).CreateCell(0).SetCellValue("值");//创建0行0列并且写入值 相当于在excel A1单元格写入一个值
sheet.GetRow(0).Height = 30 * 20;//设置第0行高
举例说明要构建如下图excel格式
IWorkbook excel = new HSSFWorkbook();//创建.xls文件
ISheet sheet = excel.CreateSheet("sheet1"); //创建sheet工作表1
//设置列对象
for (int i = 0; i < 10; i++)
{
if (i == 0)
{
sheet.SetColumnWidth(i, 10 * 256);
}
else
{
sheet.SetColumnWidth(i, 20 * 256);
}
}
int Row = 0;
sheet.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(0, 0, 0, 9));//从开始行到结束行 开始列到结束列
sheet.CreateRow(Row).CreateCell(0).SetCellValue("产品报价清单");
sheet.GetRow(Row).Height = 30 * 20;
//设置样式
ICellStyle titleStyle = excel.CreateCellStyle();
IFont titleFont = excel.CreateFont();
titleFont.FontHeightInPoints = 20;//设置字体大小
titleFont.IsBold = true;//加粗
titleStyle.SetFont(titleFont);
titleStyle.VerticalAlignment = VerticalAlignment.Center;
titleStyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;//居中
sheet.GetRow(Row).GetCell(0).CellStyle = titleStyle;
//开始头部设计
ICellStyle cellStyle = CreateRowStyle(excel);
IFont font = SetFontStyle(excel, 11, false);
// cellStyle.VerticalAlignment = VerticalAlignment.Center;
cellStyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;//居中
cellStyle.SetFont(font);
//先创建表头单元格格子
for (int i_head = 1; i_head < 5; i_head++)
{
sheet.CreateRow(i_head);
for (int i = 0; i < 10; i++)
{
sheet.GetRow(i_head).CreateCell(i).SetCellValue("");
sheet.GetRow(i_head).GetCell(i).CellStyle = cellStyle;
}
}
Row++;
sheet.GetRow(Row).GetCell(0).SetCellValue("产品名称");
sheet.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(Row, Row, 0, 1));
sheet.GetRow(Row).GetCell(2).SetCellValue(dt.Rows[0]["cInvName"].ToString());
sheet.GetRow(Row).GetCell(3).SetCellValue("产品型号");
sheet.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(Row, Row, 3, 4));
sheet.GetRow(Row).GetCell(5).SetCellValue(dt.Rows[0]["cInvStd"].ToString());
sheet.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(Row, Row, 5, 7));
sheet.GetRow(Row).GetCell(8).SetCellValue("产品数量");
sheet.GetRow(Row).GetCell(9).SetCellValue(dt.Rows[0]["cInvQty"].ToString());
Row++;
sheet.GetRow(Row).GetCell(0).SetCellValue("代理商");
sheet.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(Row, Row, 0, 1));
sheet.GetRow(Row).GetCell(2).SetCellValue(dt.Rows[0]["cAgentName"].ToString());
sheet.GetRow(Row).GetCell(3).SetCellValue("图纸号");
sheet.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(Row, Row, 3, 4));
sheet.GetRow(Row).GetCell(5).SetCellValue(dt.Rows[0]["cDrawNo"].ToString());
sheet.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(Row, Row, 5, 7));
sheet.GetRow(Row).GetCell(8).SetCellValue("防护等级");
sheet.GetRow(Row).GetCell(9).SetCellValue(dt.Rows[0]["cDegreeLevel"].ToString());
Row++;
sheet.GetRow(Row).GetCell(0).SetCellValue("客户名称");
sheet.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(Row, Row, 0, 1));
sheet.GetRow(Row).GetCell(2).SetCellValue(dt.Rows[0]["cCusName"].ToString());
sheet.GetRow(Row).GetCell(3).SetCellValue("合同号");
sheet.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(Row, Row, 3, 4));
sheet.GetRow(Row).GetCell(5).SetCellValue(dt.Rows[0]["cContractNum"].ToString());
sheet.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(Row, Row, 5, 7));
sheet.GetRow(Row).GetCell(8).SetCellValue("办事处");
sheet.GetRow(Row).GetCell(9).SetCellValue(dt.Rows[0]["cOffice"].ToString());
Row++;
sheet.GetRow(Row).GetCell(0).SetCellValue("项目名称");
sheet.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(Row, Row, 0, 1));
sheet.GetRow(Row).GetCell(2).SetCellValue(dt.Rows[0]["cProjectName"].ToString());
sheet.GetRow(Row).GetCell(3).SetCellValue("位号");
sheet.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(Row, Row, 3, 4));
sheet.GetRow(Row).GetCell(5).SetCellValue(dt.Rows[0]["cTags"].ToString());
sheet.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(Row, Row, 5, 6));
sheet.GetRow(Row).GetCell(7).SetCellValue("防爆标志");
sheet.GetRow(Row).GetCell(8).SetCellValue(dt.Rows[0]["cSigns"].ToString());
sheet.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(Row, Row, 8, 9));