我创建了一个可以上传并从excel文件中获取一些数字的工具
public static void main( String[] args ) throws Exception {
JFileChooser fc = new JFileChooser();
int returnVal = fc.showOpenDialog(null);
if (returnVal == JFileChooser.APPROVE_OPTION) {
App.file = fc.getSelectedFile();
//This is where a real application would open the file.
System.out.println("Opening: " + App.file.getName() + ".");
} else {
System.out.println("Open command cancelled by user.");
}
workbook = Workbook.getWorkbook(App.file);
Sheet sheet = workbook.getSheet(1);
Cell cell1 = sheet.getCell(4, 27);
System.out.println(cell1.getContents());
Cell cell2 = sheet.getCell(4, 28);
System.out.println(cell11.getContents());
App.eStop = false;
int i = 0 ;
while (App.eStop == false) {
try {
cell3 = sheet.getCell(9, i);
System.out.println(cell3.getContents());
} catch (Exception e) {
App.eStop = true;
};
i++;
}
System.out.println("done");
我使用以下命令将此值粘贴到其他工具
psess.GetPS().SendKeys(cell1.getContents(), 8, 18);
excel文件中的所有值都是数字。
有时我会得到十进制数字(例如2.02)。
因为我无法更改Excel文件,因此可以告诉我的应用忽略.02并仅保留2例如?
最佳答案
如果Excel文件为要读取的单元格设置了正确的格式,则可以尝试应用该格式,从而获得与Excel显示它们相同格式的值。
参见例如来自http://poi.apache.org/spreadsheet/eval.html文档的以下示例
FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator();
// suppose your formula is in B3
CellReference cellReference = new CellReference("B3");
Row row = sheet.getRow(cellReference.getRow());
Cell cell = row.getCell(cellReference.getCol());
CellValue cellValue = evaluator.evaluate(cell);
switch (cellValue.getCellType()) {
case Cell.CELL_TYPE_BOOLEAN:
System.out.println(cellValue.getBooleanValue());
break;
case Cell.CELL_TYPE_NUMERIC:
System.out.println(cellValue.getNumberValue());
break;
case Cell.CELL_TYPE_STRING:
System.out.println(cellValue.getStringValue());
break;
case Cell.CELL_TYPE_BLANK:
break;
case Cell.CELL_TYPE_ERROR:
break;
// CELL_TYPE_FORMULA will never happen
case Cell.CELL_TYPE_FORMULA:
break;
}