我正在尝试学习POI,我有一个示例代码。
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.CellReference;
import org.apache.poi.ss.usermodel.CellValue;
import org.apache.poi.ss.usermodel.FormulaEvaluator;
import org.apache.poi.ss.usermodel.Row;
public class ExpressionExample {
public static void main(String[] args) throws Exception {
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet("Sample sheet");
Row row = sheet.createRow(0);
FormulaEvaluator evaluator = workbook.getCreationHelper()
.createFormulaEvaluator();
HSSFCell formulaCell = (HSSFCell) row.createCell(6);
HSSFCell c1 = (HSSFCell) row.createCell(1);
HSSFCell c2 = (HSSFCell) row.createCell(2);
c1.setCellValue(5);
c2.setCellValue(10);
CellReference cr1 = new CellReference(0 , 1);
String line = "if(A1>A2, \"LAR\" , if(5>10, \"AB\" , \"CD\"))";
formulaCell.setCellFormula(line);
CellValue cellValue = evaluator.evaluate(formulaCell);
System.out.println(cellValue.getStringValue());
}
}
现在在我的公式中我已经应用了单元格A1和A2的值,但是我想根据我的代码给出这个值,单元格应该是' C1和c2。任何想法怎么做?
这将是很好的帮助。
答案 0 :(得分:1)
我不确定我是否正确地提出了你的问题但是这里......
如果您想在公式中使用您要设置的值c1
和c2
(在本例中为'5'和'10'),您可以创建2个int
个对象来保存这些值:
int c1Value = 5;
int c2Value = 10;
然后,您可以使用这些对象来设置单元格值,并将它们包含在公式中:
c1.setCellValue(c1Value);
c2.setCellValue(c2Value);
String line = "if(" + c1Value + ">" + c2Value + ", \"LAR\" , if(5>10, \"AB\" , \"CD\"))";
另请注意,代码中c1
引用Excel中的单元格A2
,c2
引用单元格A3
。在Apache中,行和列都从0开始。
这是你想要做的吗?