码迷,mamicode.com
首页 > 其他好文 > 详细

jxl导出Excel中需要跳过的的坑

时间:2017-09-28 13:03:38      阅读:236      评论:0      收藏:0      [点我收藏+]

标签:使用   settings   格式   puts   logs   ica   就会   超过   关键字   

  正如上篇文章(JXL封装不能使用static关键字问题)所说,在jxl导出Excel时候如果频繁使用到WritableCellFormat去设置单元格的样式,这个时候经常会出现两种情况:

    1、报警告:Warning:  Maximum number of format records exceeded.  Using default format.虽然说程序员一般不看警告,but这个警告讨厌了,他会把你超过限制的格式恢复成默认格式。所以必须解决。

    2、报异常:java.lang.ArrayIndexOutOfBoundsException: 164  

  两者出现的场景就不细说了,说说解决方案,直接上代码:

public class OperateExcelUtils {
    private static WritableCellFormat normalFormat = null;

        //样式做单例
    private static WritableCellFormat getNormalFormat() throws WriteException{
        if(normalFormat==null){
            normalFormat = new WritableCellFormat();//一般样式
            normalFormat.setAlignment(jxl.format.Alignment.CENTRE);// 内容居中(水平+垂直)
            normalFormat.setVerticalAlignment(VerticalAlignment.CENTRE);
            normalFormat.setBorder(jxl.format.Border.ALL,
                    jxl.format.BorderLineStyle.THIN);// 边框
            normalFormat.setLocked(true);
            return normalFormat;
        } else {
            return normalFormat;
        }
    } 
}

  如果只做上述处理,多次导出就会出现问题2了,如下处理:

   /**
     * 清除所有样式(workbook操作完成调用)
     */
    public static void clearStaticFormat(){
        normalFormat = null;
        
    }    

        //主方法
        public static void main(String[] args) {
        try {
            OutputStream os = new FileOutputStream("E:\\exp.xls");
            WritableWorkbook workbook = Workbook.createWorkbook(os);
            WritableSheet sheet = workbook.createSheet("sheet",0);
            
            sheet.addCell(new Label(0, 0, "111", normalFormat));
            sheet.getSettings().setProtected(true);
             workbook.write();
             clearStaticFormat(); //workbook操作完成调用
             workbook.close(); 
             os.close();
            
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

  

  

 

jxl导出Excel中需要跳过的的坑

标签:使用   settings   格式   puts   logs   ica   就会   超过   关键字   

原文地址:http://www.cnblogs.com/kemir1105/p/7605992.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!