EXCEL设置样式


  // 获取合并单元格的宽度
  public Map<String, Object> getCellInfo(HSSFCell cell) {
	    HSSFSheet sheet = cell.getSheet();
	    int rowIndex = cell.getRowIndex();
	    int columnIndex = cell.getColumnIndex();
	
	    boolean isPartOfRegion = false;
	    int firstColumn = 0;
	    int lastColumn = 0;
	    int firstRow = 0;
	    int lastRow = 0;
	    int sheetMergeCount = sheet.getNumMergedRegions();
	    for (int i = 0; i < sheetMergeCount; i++) {
	      CellRangeAddress ca1 = sheet.getMergedRegion(i);
	      lastColumn = ca1.getLastColumn();
	      firstColumn = ca1.getFirstColumn();
	      firstRow = ca1.getFirstRow();
	      lastRow = ca1.getLastRow();
	
	      if (rowIndex >= firstRow && rowIndex <= lastRow) {
	        if (columnIndex >= firstColumn && columnIndex <= lastColumn) {
	          isPartOfRegion = true;
	          break;
	        }
	      }
	    }
	    Map<String, Object> map = new HashMap<String, Object>();
	    Integer width = 0;
	    Integer height = 0;
	    boolean isPartOfRowsRegion = false;
	    if(isPartOfRegion){
	      for (int i = firstColumn; i <= lastColumn; i++) {
	        width += sheet.getColumnWidth(i);
	      }
	      for (int i = firstRow; i <= lastRow; i++) {
	        height += sheet.getRow(i).getHeight();
	      }
	      if(lastRow > firstRow){
	        isPartOfRowsRegion = true;
	      }
	    }else{
	      width = sheet.getColumnWidth(columnIndex);
	      height += cell.getRow().getHeight();
	    }
	    map.put("isPartOfRowsRegion", isPartOfRowsRegion);
	    map.put("firstRow", firstRow);
	    map.put("lastRow", lastRow);
	    map.put("width", width);
	    map.put("height", height);
	    return map;
  }
//修改EXCEL高度
public void modifyHeight(HSSFSheet sheet1, int i) {
        List<Integer> list = new ArrayList<>();
        //获取当前行的列数(最后一列不是空值的列数)
        int num = sheet1.getRow(i).getLastCellNum();
        for (int j = 0; j < num; j++) {
            HSSFCell currentCell = sheet1.getRow(i).getCell(j);
            //合并单元格后,上面获取的格数,可能不存在cell
            //例如3个单元格合并,获取的格数是3,但是只有一个单元格,第二和第三是null
            if (currentCell != null) {
            	//获取单元格内容
                String str = sheet1.getRow(i).getCell(j).getStringCellValue();
                //调取封装接口方法(上面第一个方法),获取列宽
                Map<String, Object> cellInfoMap = helper.getCellInfo(sheet1.getRow(i).getCell(j));
                Integer cellWidth = (Integer) cellInfoMap.get("width");
                //字符串长度
                Integer strWidth = str.length() * 256;
                //求取列的行高(几行)
                BigDecimal b = new BigDecimal((float) strWidth / cellWidth);
                Integer length = b.setScale(0, BigDecimal.ROUND_HALF_UP).intValue();
                list.add(length + 1);
            }
        }
        //排序  倒序 
        Collections.sort(list, Collections.reverseOrder());
        float f = 0.0f;
        if (list.get(0) == 0) {
            f = 25.5f;
        } else {
            f = list.get(0) * 25.5f;
        }
        //设置行高
        sheet1.getRow(i).setHeightInPoints(f);
    }
    /**
     * word表格公共设置样式
     *
     * @param row
     * @param value
     */
    public void setStyleHead(XWPFTableRow row, String value) {
        XWPFParagraph p1 = row.addNewTableCell().addParagraph();
        XWPFRun run1 = p1.createRun();
        p1.setVerticalAlignment(TextAlignment.CENTER);
        p1.setAlignment(ParagraphAlignment.CENTER);
        run1.setFontSize(8);
        run1.setFontFamily("微软雅黑");
        run1.setText(value);
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值