jxl导出excel,设置单元格函数,引用另一个sheet的值,报错 Could not find named cell Sheet2

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jxl导出excel,设置单元格函数,引用另一个sheet的值,报错 Could not find named cell Sheet2相关的知识,希望对你有一定的参考价值。

jxl导出excel,设置单元格函数,引用另一个sheet的值,报错
Could not find named cell Sheet2 when parsing formula L5+(M5+N5)*VLOOKUP(H5,Sheet2!$A:$F,2,0) in cell Sheet1!K5
代码如下:
String minK5 = "L"+(4*i+5)+"+(M"+(4*i+5)+"+N"+(4*i+5)+")*VLOOKUP(H"+(4*i+5)+","+sheet2.getName()+"!$A:$F,2,0)";

Formula fK5= new Formula(10,(4*i+4),minK5,wcfN);

sheet1.addCell(fK5);
是哪里的问题

参考技术A 找不到指定的单元格!检查下工作表名称,还有sheet2里面是否有公式引用的单元格

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

  正如上篇文章(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,设置单元格函数,引用另一个sheet的值,报错 Could not find named cell Sheet2的主要内容,如果未能解决你的问题,请参考以下文章

EXCEL中如何引用另一个表格的数据? 如何操作?

EXCEL中如何引用另一个表格的数据? 如何操作?

C#winform怎么导出一维码到EXCEL单元格?

如何查找单元格中是不是包含部分文本并引用另一列数据

Excel中查找某个单元格中的内容在另一个表格中的位置

c#导出EXCEL设置单元格格式?