import org.apache.poi.poifs.filesystem.POIFSFileSystem; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.record.formula.*; import org.apache.poi.hssf.model.*; import java.io.FileInputStream; import java.io.IOException; public class TestClass { private POIFSFileSystem fs = null; private HSSFWorkbook wb = null; private HSSFSheet sheet = null; private int numSheets; //private HSSFSheet sheets[]; TestClass(String spreadsheet) throws IOException { fs = new POIFSFileSystem(new FileInputStream(spreadsheet)); wb = new HSSFWorkbook(fs); } private String getCellValue(HSSFCell c) { String val = null; if (c != null) { int cellType = c.getCellType(); switch (cellType) { case HSSFCell.CELL_TYPE_STRING: val = c.getStringCellValue(); break; case HSSFCell.CELL_TYPE_FORMULA: //System.out.println(c.getCellFormula()); val = doFormula(c.getCellFormula()); break; } } return val; } private String doFormula(String formula) { FormulaParser fp = new FormulaParser(formula, null); fp.parse(); Ptg[] ptgs = fp.getRPNPtg(); if (ptgs == null || ptgs.length == 0) { return ""; } return fp.toFormulaString(null, ptgs); } public void process() { sheet = wb.getSheetAt(2); HSSFRow row = sheet.getRow(0); System.out.println(getCellValue(row.getCell((short)0))); } public static void main(String[] args) throws IOException { TestClass tc = new TestClass("test.xls"); tc.process(); } }