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

本文总结了Java使用Jxl库进行Excel操作的经验,包括设置Excel标题行的格式和自动调整列宽的方法。在调整列宽时,需要注意计算顺序是从列到行,并通过正确方式获取单元格内容的宽度以确保准确调整。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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(),这样不准确,得不到效果

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值