rt

解决方案 »

  1.   

    多看看API啊,老大,這種問題就不要發了,沒意思!
      

  2.   

    WritableSheet.setColumnView(int   col,   int   width); 设定指定列的宽度我要的不是那样设定死的... 
    就是它能根据内容自动的变长或缩短 
    有没有这个属性啊??

    答:没有你见过Excel有这个功能吗? 你还不是得自己设置,最适合行高,最适合列宽吗?
      

  3.   

    Excel有这个功能的.格式->列->最适合的列宽.
    这样的效果相当于在两列的title栏交界处双击.
    不过api里我确实没查到这个功能
      

  4.   

    哈哈!  哥们 以前 我遇到 过这样的 问题~  你点子 很正 .   
      报表 样式 是 :   
        ----------------------
        |       aaaaaaa       |
        ----------------------
        |aaaa|  bbbbbb |cccc |
        ---------------------- 因为当时 项目 要搞  自动化 ,  实现 方式 是 :  
      1  . 读取 xml 配置文件 
      2  . 建立 Excel 模版  ( 只划剃头 和样式 ,这个文件是临时的) 
      3  .  读取 Excel 模版 ,使用 jxl 写数据,保存到 ServletOutputStream
      4  .  删除Excel 模版  所以 我当时   处理 上面 格式 代码是这样写的 
    for (int i = 0; i < columnNum; i++) {
    sheet.setColumnView(i, maxColumnLehgth * 3)
    }
    意思是 :  只要你在 下面 的 那三个  cell 设置 的 长度 都相同 , 那么 就 可以 实现.  否则有一个 长度不一样 ,那么 样式 就全乱了 .
      

  5.   

    在重新 解释在 实现 :  for   (int   i   =   0;   i   <   columnNum;   i++)   { 
    sheet.setColumnView(i,   maxColumnLehgth   *   3) 
    } 其中 :  
     
      columnNum  是 列的 个数,即 单元格的 个数
     maxColumnLehgth     是  遍历  所有单元格 里面的字的 宽度 ,找出宽度最大的 .  
      当时我们的 剃头 通常 有个 统一的 样式 ,所以能知道 单元格中 一个字 占用 多少 像素 宽度 ,所以可以这样做! 
      
      

  6.   

    轩远你的方法能讲详细一点吗??
    我现在想这么做.就是取到最大的长度,然后根据最大的长度进行setColumnView();
    但是我的循环好像出了问题
    总是以最后一行的长度进行设置...
      

  7.   

    可以通过jxl调用模板文件。先在模板文件中对某列进行设置'自动调整宽度',设置方式:Excel有这个功能的.格式->列->最适合的列宽;然后往模板中写数据即可,写入的数据会自动调整宽度的。
    例子如:
    Workbook rwb =null;
    WritableWorkbook wwb =null;
    String filePath = "d:/pc.xls";
    File f =new File(filePath);
    FileOutputStream os=null;
    try{
    rwb = Workbook.getWorkbook(f);//模板文件
    os=new FileOutputStream(new File("d:/tt.xls"));//将输出流中的数据写入文件中
    wwb = Workbook.createWorkbook(os,rwb);

    WritableSheet sheet0 =wwb.getSheet(0);//第一个sheet
    Label label = null;

    label = new Label(5,5,"fsdfdsfdsfsdfsd将输出流中的数据写入文件中fsdfsdf将输出流中的数据写入文件中sdfsdf将输出流中的数据写入文件中dsfsdfds",wcsB);sheet0.addCell(label);