2014-03-04 148 views
0

我必须使用SheetConditionalFormatting,只是为了测试,如果单元格中包含特定字符串(对我来说只是“测试”)一个问题,我运行下面的代码:条件格式使用Apache POI

SheetConditionalFormatting sheetConditionalFormatting = excelSheet.getSheetConditionalFormatting(); 

    ConditionalFormattingRule rule = sheetConditionalFormatting.createConditionalFormattingRule(ComparisonOperator.EQUAL, "test"); 
    PatternFormatting fill1 = rule.createPatternFormatting(); 
    fill1.setFillBackgroundColor(IndexedColors.BLUE.index); 
    fill1.setFillPattern(PatternFormatting.SOLID_FOREGROUND); 

    CellRangeAddress[] regions = { 
      CellRangeAddress.valueOf("A1") 
    }; 

    sheetConditionalFormatting.addConditionalFormatting(regions, rule); 

我收到了'测试'在工作区中不存在的消息。这是从控制台我的错误:

Exception in thread "main" org.apache.poi.ss.formula.FormulaParseException: Specified named range 'test' does not exist in the current workbook. 
    at org.apache.poi.ss.formula.FormulaParser.parseNonRange(FormulaParser.java:569) 
    at org.apache.poi.ss.formula.FormulaParser.parseRangeable(FormulaParser.java:429) 
    at org.apache.poi.ss.formula.FormulaParser.parseRangeExpression(FormulaParser.java:268) 
    at org.apache.poi.ss.formula.FormulaParser.parseSimpleFactor(FormulaParser.java:1119) 
    at org.apache.poi.ss.formula.FormulaParser.percentFactor(FormulaParser.java:1079) 
    at org.apache.poi.ss.formula.FormulaParser.powerFactor(FormulaParser.java:1066) 
    at org.apache.poi.ss.formula.FormulaParser.Term(FormulaParser.java:1426) 
    at org.apache.poi.ss.formula.FormulaParser.additiveExpression(FormulaParser.java:1526) 
    at org.apache.poi.ss.formula.FormulaParser.concatExpression(FormulaParser.java:1510) 
    at org.apache.poi.ss.formula.FormulaParser.comparisonExpression(FormulaParser.java:1467) 
    at org.apache.poi.ss.formula.FormulaParser.unionExpression(FormulaParser.java:1447) 
    at org.apache.poi.ss.formula.FormulaParser.parse(FormulaParser.java:1568) 
    at org.apache.poi.ss.formula.FormulaParser.parse(FormulaParser.java:176) 
    at org.apache.poi.hssf.model.HSSFFormulaParser.parse(HSSFFormulaParser.java:70) 
    at org.apache.poi.hssf.record.CFRuleRecord.parseFormula(CFRuleRecord.java:525) 
    at org.apache.poi.hssf.record.CFRuleRecord.create(CFRuleRecord.java:146) 
    at org.apache.poi.hssf.usermodel.HSSFSheetConditionalFormatting.createConditionalFormattingRule(HSSFSheetConditionalFormatting.java:80) 
    at org.apache.poi.hssf.usermodel.HSSFSheetConditionalFormatting.createConditionalFormattingRule(HSSFSheetConditionalFormatting.java:32) 
    at MainApp.main(MainApp.java:26) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120) 

回答

0

它发现引入createConditionalFormattingRule必须细胞是串坐标

ConditionalFormattingRule rule = sheetConditionalFormatting.createConditionalFormattingRule(ComparisonOperator.EQUAL, "B1");