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);
          }      
        }

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

  • 相关阅读:
    Android入门第六篇之ListView (一)
    mysql触发器的作用及语法
    查询记录时rs.previous()的使用
    Microsoft Visual C++ Runtime Library Runtime Error的解决的方法
    Ubuntu中编译链接Opencv应用的简便方式
    24点经典算法
    CMS系统简介(从简介到使用)
    编程学习资源
    Django是什么
    Thinkphp中的自动验证
  • 原文地址:https://www.cnblogs.com/Jason-Xiang/p/5151820.html
Copyright © 2011-2022 走看看