Example usage for org.apache.poi.hssf.usermodel HSSFFormulaEvaluator HSSFFormulaEvaluator

List of usage examples for org.apache.poi.hssf.usermodel HSSFFormulaEvaluator HSSFFormulaEvaluator

Introduction

In this page you can find the example usage for org.apache.poi.hssf.usermodel HSSFFormulaEvaluator HSSFFormulaEvaluator.

Prototype

public HSSFFormulaEvaluator(HSSFWorkbook workbook, IStabilityClassifier stabilityClassifier) 

Source Link

Usage

From source file:cdc.impl.datasource.office.ExcelDataSource.java

License:LGPL

private static DataColumnDefinition[] readDataModel(String sourceName, Map params)
        throws IOException, RJException {
    BufferedInputStream is = null;
    try {//from  w  ww  . j  av  a2  s .com
        is = new BufferedInputStream(new FileInputStream((String) params.get(PARAM_FILE)));
        HSSFWorkbook wb = new HSSFWorkbook(new POIFSFileSystem(is));
        String[] sheets;
        if (params.get(PARAM_SHEET) != null) {
            sheets = new String[] { (String) params.get(PARAM_SHEET) };
        } else {
            sheets = new String[wb.getNumberOfSheets()];
            for (int i = 0; i < sheets.length; i++) {
                sheets[i] = wb.getSheetName(i);
            }
        }
        if (sheets.length == 0) {
            throw new RJException("Excel file " + params.get(PARAM_FILE) + " does not provide any sheets.");
        }
        List cols = new ArrayList();
        HSSFSheet sheet = wb.getSheet(sheets[0]);
        if (sheet == null) {
            //System.out.println("Thorwing: " + "Sheet " + sheets[0] + " is not provided by file " + params.get(PARAM_FILE));
            throw new RJException(
                    "Sheet '" + sheets[0] + "' is not provided by file " + params.get(PARAM_FILE));
        }
        HSSFFormulaEvaluator evaluator = new HSSFFormulaEvaluator(sheet, wb);
        //first row should provide data model
        HSSFRow row = sheet.getRow(0);
        evaluator.setCurrentRow(row);
        for (int i = 0; i < row.getPhysicalNumberOfCells(); i++) {
            HSSFCell cell = row.getCell(i);
            cols.add(new ExcelDataColumnDefinition(decodeValue(cell, evaluator),
                    DataColumnDefinition.TYPE_STRING, sourceName, i));
        }
        for (int i = 1; i < sheets.length; i++) {
            sheet = wb.getSheet(sheets[i]);
            if (sheet == null) {
                throw new RJException("Sheet '" + params.get(PARAM_SHEET) + "' is not provided by file "
                        + params.get(PARAM_FILE));
            }
            evaluator = new HSSFFormulaEvaluator(sheet, wb);
            //first row should provide data model
            row = sheet.getRow(0);
            evaluator.setCurrentRow(row);
            List localCols = new ArrayList();
            for (i = 0; i < row.getPhysicalNumberOfCells(); i++) {
                HSSFCell cell = row.getCell(i);
                DataColumnDefinition col = new ExcelDataColumnDefinition(decodeValue(cell, evaluator),
                        DataColumnDefinition.TYPE_STRING, sourceName, i);
                localCols.add(col);
            }
            List toRemove = new ArrayList();
            for (Iterator iterator = cols.iterator(); iterator.hasNext();) {
                DataColumnDefinition object = (DataColumnDefinition) iterator.next();
                if (!localCols.contains(object)) {
                    toRemove.add(object);
                }
            }
            cols.removeAll(toRemove);
        }

        return (DataColumnDefinition[]) cols.toArray(new DataColumnDefinition[] {});
    } finally {
        if (is != null) {
            is.close();
        }
    }
}

From source file:cdc.impl.datasource.office.SheetsIterator.java

License:LGPL

public boolean hasNext() {
    while (sheet == null || !rowIterator.hasNext()) {
        if (sheetNumber == sheetNames.length) {
            return false;
        }//from   w ww .  j  av  a  2  s . c  o m
        //time to move to next sheet
        while ((sheet = workbook.getSheet(sheetNames[sheetNumber++])) == null) {
            if (sheetNumber == sheetNames.length) {
                return false;
            }
        }
        evaluator = new HSSFFormulaEvaluator(sheet, workbook);
        rowIterator = sheet.rowIterator();
        //skipping header
        rowIterator.next();
    }
    return rowIterator.hasNext();
}

From source file:com.bayareasoftware.chartengine.ds.ExcelDataStream.java

License:Apache License

public ExcelDataStream(DataSourceInfo dsi, HSSFWorkbook wb, HSSFSheet sheet, Metadata md) {
    super(true);/* w ww .j a va 2  s  .c o  m*/
    setMetadata(md);
    this.dsi = dsi;
    this.wb = wb;
    this.sheet = sheet;
    evaluator = new HSSFFormulaEvaluator(sheet, wb);
    dfmts = new DateFormat[metadata.getColumnCount()];
    // FIXME: are we sure we want to do this?  Might be heavy-handed...
    HSSFFormulaEvaluator.evaluateAllFormulaCells(wb);
    /*
    p("before first infer startrow=" + dsi.getDataStartRow() + " metadata=" + this.metadata);
    this.inferMetadata(-1);
    p("before 2nd infer startrow=" + dsi.getDataStartRow() + " metadata=" + this.metadata);
    this.inferMetadata(-1);
    if (true) throw new RuntimeException("BLAH");
    */
    //p("constructing stream with dsi=" + dsi);
    reset();
}

From source file:com.bayareasoftware.chartengine.ds.util.ExcelInference.java

License:Apache License

public List<String[]> getRawStrings(String sheetName) {
    //        if (rawStrings == null) { 
    rawStrings = new ArrayList<String[]>();
    //        }// w  w  w.j  a  va  2  s .  c  o  m

    sheet = ExcelDataSource.getSheet(wbk, sheetName);
    eval = new HSSFFormulaEvaluator(sheet, wbk);
    // FIXME: decide if we want this...
    HSSFFormulaEvaluator.evaluateAllFormulaCells(wbk);
    loadStrings();
    inferMetadata();

    return rawStrings;
}

From source file:com.helger.poi.excel.ExcelFormulaEvaluator.java

License:Apache License

public ExcelFormulaEvaluator(@Nonnull final Workbook aWB, @Nullable final IStabilityClassifier aStability) {
    m_aEvaluator = aWB instanceof HSSFWorkbook ? new HSSFFormulaEvaluator((HSSFWorkbook) aWB, aStability)
            : XSSFFormulaEvaluator.create((XSSFWorkbook) aWB, aStability, null);
}

From source file:de.enerko.reports2.engine.Report.java

License:Apache License

public List<CellDefinition> evaluateWorkbook() {
    final List<CellDefinition> rv = new ArrayList<CellDefinition>();

    boolean reevaluate = false;
    if (workbook instanceof HSSFWorkbook) {
        try {/* www  .j  a va2  s.  c o  m*/
            workbook.getCreationHelper().createFormulaEvaluator().evaluateAll();
        } catch (Exception e) {
            reevaluate = true;
        }
    }

    final FormulaEvaluator formulaEvaluator = new HSSFFormulaEvaluator((HSSFWorkbook) workbook,
            IStabilityClassifier.TOTALLY_IMMUTABLE);
    formulaEvaluator.clearAllCachedResultValues();

    for (int i = 0; i < workbook.getNumberOfSheets(); ++i) {
        final Sheet sheet = workbook.getSheetAt(i);
        for (Row row : sheet) {
            for (Cell cell : row) {
                if (reevaluate && cell.getCellType() == Cell.CELL_TYPE_FORMULA) {
                    try {
                        formulaEvaluator.evaluateFormulaCell(cell);
                    } catch (Exception e) {
                        ReportEngine.logger.log(Level.WARNING,
                                String.format("Could not evaluate formula '%s' in cell %s on sheet '%s': %s",
                                        cell.getCellFormula(), CellReferenceHelper
                                                .getCellReference(cell.getColumnIndex(), row.getRowNum()),
                                        sheet.getSheetName(), e.getMessage()));
                    }
                }

                final CellDefinition cellDefinition = IMPORTABLE_CELL_TYPES.containsKey(
                        new Integer(cell.getCellType())) ? new CellDefinition(sheet.getSheetName(), cell)
                                : null;
                if (cellDefinition != null)
                    rv.add(cellDefinition);
            }
        }
    }

    return rv;
}

From source file:test.ExcelUtil.java

License:Apache License

/**
 * excel/*from www .  j av  a2  s .c o m*/
 * @param sheet
 * @param workbook
 * @param row
 * @return
 */
public static HSSFFormulaEvaluator getFormulaEvaluator(HSSFSheet sheet, HSSFWorkbook workbook, HSSFRow row) {
    HSSFFormulaEvaluator evaluator = new HSSFFormulaEvaluator(sheet, workbook);
    evaluator.setCurrentRow(row);
    return evaluator;
}