zoukankan      html  css  js  c++  java
  • saiku导出excel单元格格式与中文列宽自动适应

    在saiku导出excel后打开发现单元格的整数也显示为小数,并且含有中文的列宽没有自动适应,解决办法如下:

    打开ExcelWorksheetBuilder.java文件,找到applyCellFormatting方法,看名字应该能猜到这个方法是设置单元格格式的,修改如下:

    if ((formatString != null) && (formatString.trim().length() > 0)) {
        省略部分代码...
    }else {
        //没有formatString的时候设置为常规单元格格式
          cell.setCellStyle(basicCS);
    }

    这样当没有设置formatString时单元格的格式为常规格式。

    同样在ExcelWorksheetBuilder.java文件,找到finalizeExcelSheet方法,其中workbookSheet.autoSizeColumn(i)为自适应宽度,但这个方法无法识别中文,作如下修改:

    if (autoSize) {
          // Autosize columns
          for (int i=0; i < maxColumns && i < rowsetBody[0].length; i++) {
            workbookSheet.autoSizeColumn(i);        
            //设置中文列宽自适应
            int curColWidth = workbookSheet.getColumnWidth(i)/256;
            for (int rowNum = 0; rowNum < workbookSheet.getLastRowNum(); rowNum++) {
                Row currentRow;  
                //当前行未被使用过  
                if (workbookSheet.getRow(rowNum) == null) {  
                    currentRow = workbookSheet.createRow(rowNum);  
                } else {  
                    currentRow = workbookSheet.getRow(rowNum);  
                }
                if (currentRow.getCell(i) != null) {
                    Cell currentCell = currentRow.getCell(i);
                    if (currentCell.getCellType() == HSSFCell.CELL_TYPE_STRING) {
                        int length = currentCell.getStringCellValue().getBytes().length;
                        if (curColWidth < length) {  
                            curColWidth = length;  
                        }
                    }
                }
            }        
            workbookSheet.setColumnWidth(i,curColWidth*256);
          }      
        }

    这样即使有中文也能自适应列宽。

  • 相关阅读:
    spark sql 性能调优
    google c++ 规范
    idea
    Ubuntu16.04-hadoop3 安装与配置
    NewRelic 性能监测工具
    关于 g++ link
    vue 实现 多个 数字滚动增加动效
    mac 电脑安装express、npm…… 报 ‘Missing write access to /usr/local/lib/node_modules’错误解决办法
    vue + mock.js 简单使用
    vue去掉地址栏# 方法
  • 原文地址:https://www.cnblogs.com/Jason-Xiang/p/5151820.html
Copyright © 2011-2022 走看看