jxl 导出EXCEL公式生效

关于JXL公式生效的处理方法在网上查了很久,

看到有许多是这样写的

Fornual formual = new Formual(0,11,"Sum(A1:A9)");

wrb.addCell(formual);

在我这里是报错的,根据在这篇博客上的答案https://blog.csdn.net/ittraining/article/details/38709733发现处理应该是这样

   Fornual  f = new Formula(1, 11, "Sum(A1:A9)":, getDataCellFormat(CellType.NUMBER_FORMULA));   

1和11是单元格的位置,Sum(A1:A9)是公式,getDataCellFormat(CellType.NUMBER_FORMULA)应该是数据处理格式

然后实现getDataCellFormat方法,代码如下:

public WritableCellFormat getDataCellFormat(CellType type){      
        WritableCellFormat wcf = null;      
        try {   
            //字体样式      
            if(type == CellType.NUMBER || type == CellType.NUMBER_FORMULA){//数字      
               NumberFormat nf = new NumberFormat("#.00");      
               wcf = new WritableCellFormat(nf);       
            }else if(type == CellType.DATE || type == CellType.DATE_FORMULA){//日期      
                jxl.write.DateFormat df = new jxl.write.DateFormat("yyyy-MM-dd hh:mm:ss");       
                wcf = new jxl.write.WritableCellFormat(df);       
            }else{      
                WritableFont wf =    
                    new WritableFont(WritableFont.TIMES,10, WritableFont.NO_BOLD,false);   
                wcf = new WritableCellFormat(wf);      
            }   
            //对齐方式      
            wcf.setAlignment(Alignment.CENTRE);      
            wcf.setVerticalAlignment(VerticalAlignment.CENTRE);      
            //边框      
            wcf.setBorder(Border.LEFT,BorderLineStyle.THIN);      
            wcf.setBorder(Border.BOTTOM,BorderLineStyle.THIN);      
            wcf.setBorder(Border.RIGHT,BorderLineStyle.THIN);      
            //背景色      
            wcf.setBackground(Colour.WHITE);      
                  
            wcf.setWrap(true);//自动换行      
                  
        } catch (WriteException e) {      
         e.printStackTrace();      
        }      
        return wcf;      
    }   

亲测可行

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值