如何使用 POI 获取 Excel in java 中的单元格名称?
How to get a cell's name in Excel in java using POI?
我正在尝试学习 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”。知道怎么做吗?
这会很有帮助。
我不确定我是否正确地回答了你的问题,但是这里...
如果您想在公式中使用要设置到单元格 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 开始。
这是你想要做的吗?
我正在尝试学习 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”。知道怎么做吗?
这会很有帮助。
我不确定我是否正确地回答了你的问题,但是这里...
如果您想在公式中使用要设置到单元格 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 开始。
这是你想要做的吗?