赞
踩
NPOI插件,C#版本,整理常见的样式设置
样式设置温馨提示,workbook.CreateCellStyle();只需要定义一次即可,可认为是全局样式设置
具体行和列单元格样式设置,到具体属性值设置即可
curretnCell.CellStyle.Alignment
rowTitle.RowStyle.VerticalAlignment
- XSSFWorkbook workbook = new XSSFWorkbook(); //创建一个工作簿
- ICellStyle cellStyle = workbook.CreateCellStyle();
- cellStyle.WrapText = true;//开启换行
-
- //创建第一行
- IRow row = sheet.CreateRow(0);
-
- //给第一行第一列赋值
- row.CreateCell(0, CellType.String).SetCellValue("收纳\n化妆品\n美妆\n声控\n沉浸式"); //标签
-
-
- //给第一列设置样式
- row.GetCell(0).CellStyle = cellStyle;
只能说是相对自适应,根据项目业务进行相应增减
Height:值的单位是:1/20个点,所以要想得到一个点的话,需要乘以20。 HeightInPoints:单位是点,可以不用乘。
SetColumnWidth:第二个参数要乘以256,因为这个参数的单位是1/256个字符宽度,所以要乘以256才是一整个字符宽度
代码
- //设置自适应 - 宽度 - 循环列
- for (int columnNum = 0; columnNum <= 6; columnNum++)
- {
- int columnWidth = sheet.GetColumnWidth(columnNum) / 256;
- for (int rowNum = 1; rowNum <= sheet.LastRowNum; rowNum++)
- {
- IRow currentRow = sheet.GetRow(rowNum);
- if (currentRow.GetCell(columnNum) != null)
- {
- ICell currentCell = currentRow.GetCell(columnNum);
- int length = Encoding.Default.GetBytes(currentCell.ToString()).Length;
- if (columnWidth < length)
- {
- columnWidth = length;
- }
- }
- }
-
- if (columnWidth > 100) columnWidth = 100;
- if (columnNum == 4) columnWidth = 30;
-
- sheet.SetColumnWidth(columnNum, columnWidth * 256);
- }
-
- //设置自适应 - 高度 - 循环行指定列
- for (int rowNum = 1; rowNum <= videoList.Count; rowNum++)
- {
- IRow currentRow = sheet.GetRow(rowNum);
- ICell currentCell = currentRow.GetCell(4); //标签
- int length = Encoding.UTF8.GetBytes(currentCell.ToString()).Length;
- currentRow.HeightInPoints = 20 * (length / 30 + 1);
- }

3、列居中显示
1)合并行,比如:第一行的第一列和第六列合并
第一行就是:从下标0开始,到下标1结束
第一列到第六列:从下标0开始,到下标5结束
- IRow baseInfo = sheet.CreateRow(0);
- baseInfo.Sheet.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(0, 1, 0, 5));
2)合并格,比如:第六列的第一行到第六行合并
- IRow baseInfo = sheet.CreateRow(0);
- baseInfo.Sheet.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(0, 5, 5, 5));
-
- // 初始化对象
- HSSFWorkbook book = new HSSFWorkbook();
-
- //先创建好样式
- ICellStyle cellStyleBgColor = workbook.CreateCellStyle(); // 创建单元格样式
- cellStyleBgColor.FillForegroundColor = IndexedColors.Grey25Percent.Index; // 选择填充颜色
- cellStyleBgColor.FillPattern = FillPattern.SolidForeground; // 填充方式
-
- //再给单元格赋值样式
- IRow rowTitle = sheet.CreateRow(5);//创建表头行
- ICell cell = rowTitle.GetCell(indexCell);
- cell.CellStyle = cellStyleBgColor;
- // 创建单元格样式
- ICellStyle cellStyle = book.CreateCellStyle();
-
- // 水平和垂直居中
- cellStyle.Alignment = HorizontalAlignment.Center; // 水平居中
- cellStyle.VerticalAlignment = VerticalAlignment.Center; // 垂直居中
特别要注意全局字体样式和指定单元格样式
- // 初始化对象
- HSSFWorkbook workbook = new HSSFWorkbook();
-
- // 标签名
- ISheet iSheet = workbook.CreateSheet("我的用户");
-
- // 字体设置
- IFont timeFont = workbook.CreateFont();
- timeFont.FontHeightInPoints = 16;
- timeFont.IsBold = true;
- timeFont.FontName = "微软雅黑";
-
- // 创建单元格样式
- ICellStyle timeCsellStyle = workbook.CreateCellStyle();
- timeCsellStyle.Alignment = HorizontalAlignment.Center; // 水平居中
- timeCsellStyle.VerticalAlignment = VerticalAlignment.Center; // 垂直居中
- timeCsellStyle.SetFont(timeFont);
-
- // 时间行【第一行】
- IRow r1 = iSheet.CreateRow(0);
- r1.Sheet.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(0, 0, 0, 4)); // 第1行到第1行合并,第1列到第5列合并
- r1.HeightInPoints = 30;
- r1.CreateCell(0).SetCellValue(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
- ICell timeCell = r1.GetCell(0);
- timeCell.CellStyle = timeCsellStyle;

。。。未完待续
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。