当前位置: 首页 > 工具软件 > JxlExcel > 使用案例 >

Java Jxl Excel 操作总结3(常用格式+自动调整列宽)

步建茗
2023-12-01

1、Java编程中Excel常用格式汇总

      第一行标题的格式定义

       

       WritableWorkbook workbook = Workbook.createWorkbook(file);  
       WritableSheet sheet = workbook.createSheet("报表统计", 0);  //单元格      
       WritableFont wf2 =new WritableFont(WritableFont.ARIAL,14,WritableFont.BOLD,false,UnderlineStyle.NO_UNDERLINE,jxl.format.Colour.BLACK); 
       // 定义字体格式 、字体大小 、下划线、 斜体 、粗体、 颜色
       WritableCellFormat wcfTitle= new WritableCellFormat(wf2);  //把定义的字体格式赋到单元格格式上,单元格样式用于新建单元格时
       wcfTitle.setBackground(jxl.format.Colour.IVORY);  //定义单元格 的背景色象牙白
       wcfTitle.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THIN,jxl.format.Colour.BLACK); // 定义单元格的BorderLineStyle边框样式
       wcfTitle.setAlignment(Alignment.CENTRE); // 定义单元格的设置垂直对齐
       
       CellView navCellView = new CellView();  //定义一个列显示的样式,用于sheet全部的样式设置
       navCellView.setAutosize(true); //设置自动大小
       navCellView.setSize(18);
       
       lab = new Label(0,0,title,wcfTitle);  //定义一个单元格,某列,某行,内容值,单元格样式 
       sheet.mergeCells(0,0,navTitle.length-1,0);
       sheet.setColumnView(0, navCellView); // 针对一个sheet,设置col显示样式
       sheet.setRowView(0, 1600, false); //设置行高
       sheet.addCell(lab);  


2、自动调整列宽

    private static void setColumnAutoSize(WritableSheet ws, int extraWith) {
      // 获取本列的最宽单元格的宽度
    for (int i = 0; i < ws.getColumns(); i++) {
      int colWith = 0;
    for (int j = 0; j < ws.getRows(); j++) {
      String content = ws.getCell(i, j).getContents().toString();
      // int cellWith = content.length();
       byte[] bstrLength = content.getBytes();
       int cellWith = bstrLength.length;
     if (colWith < cellWith) {
         colWith = cellWith;
      }
     }
    // 设置单元格的宽度为最宽宽度+额外宽度
    ws.setColumnView(i, colWith + extraWith);
    }
    }

   注意问题:

   a、计算方式是由列至行

          即先从第1列第一行,第1列第二行,第1列第三行。。。。。。

                  到第2列第一行,第2列第二行,第2列第三行。。。。。。

   b、获取某个单元格内容的宽度

         第一次使用的是content.length(),这样不准确,得不到效果

         第二次使用的是先转为字节,再获取字节的长度,这样才对。

 类似资料: