Java 类org.apache.poi.ss.usermodel.FormulaEvaluator 实例源码
项目:tecsinapse-data-io
文件:SpreadsheetParser.java
private List<T> parseCurrentSheet() throws IllegalAccessException, InstantiationException, InvocationTargetException, NoSuchMethodException {
List<T> list = new ArrayList<>();
workbook = getWorkbook();
Sheet sheet = workbook.getSheetAt(this.sheetNumber);
final FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();
Map<Method, TableCellMapping> cellMappingByMethod = ImporterUtils.getMappedMethods(clazz, group);
final Constructor<T> constructor = clazz.getDeclaredConstructor();
constructor.setAccessible(true);
int i = 0;
Iterator<Row> rowIterator = sheet.iterator();
while (rowIterator.hasNext()) {
Row row = rowIterator.next();
i++;
if (i <= headersRows) {
continue;
}
T instance = constructor.newInstance();
for (Entry<Method, TableCellMapping> methodTcm : cellMappingByMethod.entrySet()) {
TableCellMapping tcm = methodTcm.getValue();
ImporterUtils.parseSpreadsheetCell(tcm.converter(), evaluator, row.getCell(tcm.columnIndex()), methodTcm.getKey(), instance, exporterFormatter, useFormatterToParseValueAsString);
}
list.add(instance);
}
return list;
}
项目:tecsinapse-data-io
文件:SpreadsheetParser.java
private List<List<String>> parseCurrentSheetAsStringList() {
workbook = getWorkbook();
Sheet sheet = workbook.getSheetAt(getSheetNumber());
final FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();
Iterator<Row> rowIterator = sheet.iterator();
List<List<String>> list = new ArrayList<>();
int i = 0;
while (rowIterator.hasNext()) {
List<String> rowList = new ArrayList<>();
Row row = rowIterator.next();
i++;
if (i <= headersRows) {
continue;
}
Iterator<Cell> cells = row.cellIterator();
while (cells.hasNext()) {
Cell cell = cells.next();
rowList.add(ImporterUtils.getValueOrEmpty(evaluator, cell, exporterFormatter));
}
list.add(rowList);
}
return list;
}
项目:tecsinapse-data-io
文件:ImporterUtils.java
public static Object getValueOrEmptyAsObject(FormulaEvaluator evaluator, Cell cell) {
final CellValue cellValue = evaluator.evaluate(cell);
if (cellValue == null) {
return "";
}
switch (cellValue.getCellType()) {
case Cell.CELL_TYPE_BOOLEAN:
return Boolean.valueOf(cellValue.getBooleanValue());
case Cell.CELL_TYPE_NUMERIC:
if (DateUtil.isCellDateFormatted(cell)) {
return cell.getDateCellValue();
}
BigDecimal bd = BigDecimal.valueOf(cell.getNumericCellValue()).setScale(DECIMAL_PRECISION, BigDecimal.ROUND_HALF_UP);
return bd.stripTrailingZeros();
case Cell.CELL_TYPE_STRING:
return cellValue.getStringValue();
case Cell.CELL_TYPE_ERROR:
return "ERRO";
default:
return "";
}
}
项目:step
文件:WorkbookSet.java
private void openReferencedWorkbooks(Integer maxWorkbookSize, Workbook workbook, FormulaEvaluator evaluator) {
Map<String,FormulaEvaluator> workbooks = new HashMap<String, FormulaEvaluator>();
if(workbook instanceof XSSFWorkbook) {
if(((XSSFWorkbook)workbook).getExternalLinksTable()!=null) {
for (ExternalLinksTable sheet : ((XSSFWorkbook)workbook).getExternalLinksTable()) {
String file = sheet.getLinkedFileName();
File f = resolver.resolve(file);
if(f!=null) {
try {
WorkbookFile book = openWorkbook(f, maxWorkbookSize, false, false);
workbooks.put(file, book.getWorkbook().getCreationHelper().createFormulaEvaluator());
} catch(Exception e) {
logger.error("An error occured while opening referenced workbook '"+file+"'. Main workbook: '"+mainWorkbookFile+"'");
}
} else {
logger.warn("Unable to resolve external workbook '"+file+"'. Main workbook: '"+mainWorkbookFile+"'");
}
}
}
}
workbooks.put("this", evaluator);
evaluator.setupReferencedWorkbooks(workbooks);
}
项目:meja
文件:PoiCell.java
/**
* Format the cell content as a String, with number and date format applied.
* @return cell content with format applied
*/
private String getFormattedText(Locale locale) {
// is there a special date format?
if (getResultType()==CellType.DATE) {
DateTimeFormatter df = getCellStyle().getLocaleAwareDateFormat(locale);
if (df != null) {
return df.format(getDateTime());
}
}
// if not, let POI do the formatting
FormulaEvaluator evaluator = getWorkbook().evaluator;
DataFormatter dataFormatter = getWorkbook().getDataFormatter(locale);
try {
return dataFormatter.formatCellValue(poiCell, evaluator);
} catch (Exception ex) {
return Cell.ERROR_TEXT;
}
}
项目:NyBatisCore
文件:ExcelHandlerApachePoi.java
private Object getValue( Cell cell, FormulaEvaluator evaluator ) {
switch( cell.getCellType() ) {
case Cell.CELL_TYPE_FORMULA :
if( StringUtil.isNotEmpty( cell ) ) {
switch( evaluator.evaluateFormulaCell(cell) ) {
case Cell.CELL_TYPE_NUMERIC :
return getNumericCellValue( cell );
case Cell.CELL_TYPE_BOOLEAN :
return cell.getBooleanCellValue();
case Cell.CELL_TYPE_STRING :
return cell.getStringCellValue();
}
}
return cell.getStringCellValue();
case Cell.CELL_TYPE_NUMERIC :
return getNumericCellValue( cell );
case Cell.CELL_TYPE_BOOLEAN :
return cell.getBooleanCellValue();
default :
return cell.getStringCellValue();
}
}
项目:sqlapp
文件:ExcelReaderTest.java
@Test
public void testRead_FORMULA_NUMERIC() throws IOException {
try (Workbook workbook = new XSSFWorkbook()) {
// 準備
Sheet sheet = workbook.createSheet();
Row row0 = sheet.createRow(0);
row0.createCell(0).setCellFormula("1200+34");
row0.createCell(1).setCellFormula("1200+34.56");
FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();
evaluator.evaluateAll();
// 実行&検証
try (ExcelReader reader = new ExcelReader(workbook)) {
String[] r0 = reader.read();
assertNotNull(r0);
assertEquals(2, r0.length);
assertEquals("1234", r0[0]);
assertEquals("1234.56", r0[1]);
assertNull(reader.read());
}
}
}
项目:sqlapp
文件:ExcelReaderTest.java
@Test
public void testRead_FORMULA_STRING() throws IOException {
try (Workbook workbook = new XSSFWorkbook()) {
// 準備
Sheet sheet = workbook.createSheet();
Row row0 = sheet.createRow(0);
row0.createCell(0).setCellFormula("\"CELL\"&\"00\"");
row0.createCell(1).setCellFormula("\"CELL\"&\"01\"");
FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();
evaluator.evaluateAll();
// 実行&検証
try (ExcelReader reader = new ExcelReader(workbook)) {
String[] r0 = reader.read();
assertNotNull(r0);
assertEquals(2, r0.length);
assertEquals("CELL00", r0[0]);
assertEquals("CELL01", r0[1]);
assertNull(reader.read());
}
}
}
项目:sqlapp
文件:ExcelReaderTest.java
@Test
public void testRead_FORMULA_BOOLEAN() throws IOException {
try (Workbook workbook = new XSSFWorkbook()) {
// 準備
Sheet sheet = workbook.createSheet();
Row row0 = sheet.createRow(0);
row0.createCell(0).setCellFormula("1=1");
row0.createCell(1).setCellFormula("1=0");
FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();
evaluator.evaluateAll();
// 実行&検証
try (ExcelReader reader = new ExcelReader(workbook)) {
String[] r0 = reader.read();
assertNotNull(r0);
assertEquals(2, r0.length);
assertEquals("true", r0[0]);
assertEquals("false", r0[1]);
assertNull(reader.read());
}
}
}
项目:sqlapp
文件:ExcelReaderTest.java
@Test
public void testRead_FORMULA_ERROR() throws IOException {
try (Workbook workbook = new XSSFWorkbook()) {
// 準備
Sheet sheet = workbook.createSheet();
Row row0 = sheet.createRow(0);
row0.createCell(0).setCellErrorValue((byte) 0);
row0.createCell(1).setCellFormula("A1");
FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();
evaluator.evaluateAll();
// 実行&検証
try (ExcelReader reader = new ExcelReader(workbook)) {
String[] r0 = reader.read();
assertNotNull(r0);
assertEquals(2, r0.length);
assertNull(r0[0]);
assertNull(r0[1]);
assertNull(reader.read());
}
}
}
项目:springapp
文件:ExcelReaderTest.java
@Test
public void testRead_FORMULA_NUMERIC() throws IOException {
try (Workbook workbook = new XSSFWorkbook()) {
// 準備
Sheet sheet = workbook.createSheet();
Row row0 = sheet.createRow(0);
row0.createCell(0).setCellFormula("1200+34");
row0.createCell(1).setCellFormula("1200+34.56");
FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();
evaluator.evaluateAll();
// 実行&検証
try (ExcelReader reader = new ExcelReader(workbook)) {
String[] r0 = reader.read();
assertNotNull(r0);
assertEquals(2, r0.length);
assertEquals("1234", r0[0]);
assertEquals("1234.56", r0[1]);
assertNull(reader.read());
}
}
}
项目:springapp
文件:ExcelReaderTest.java
@Test
public void testRead_FORMULA_STRING() throws IOException {
try (Workbook workbook = new XSSFWorkbook()) {
// 準備
Sheet sheet = workbook.createSheet();
Row row0 = sheet.createRow(0);
row0.createCell(0).setCellFormula("\"CELL\"&\"00\"");
row0.createCell(1).setCellFormula("\"CELL\"&\"01\"");
FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();
evaluator.evaluateAll();
// 実行&検証
try (ExcelReader reader = new ExcelReader(workbook)) {
String[] r0 = reader.read();
assertNotNull(r0);
assertEquals(2, r0.length);
assertEquals("CELL00", r0[0]);
assertEquals("CELL01", r0[1]);
assertNull(reader.read());
}
}
}
项目:springapp
文件:ExcelReaderTest.java
@Test
public void testRead_FORMULA_BOOLEAN() throws IOException {
try (Workbook workbook = new XSSFWorkbook()) {
// 準備
Sheet sheet = workbook.createSheet();
Row row0 = sheet.createRow(0);
row0.createCell(0).setCellFormula("1=1");
row0.createCell(1).setCellFormula("1=0");
FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();
evaluator.evaluateAll();
// 実行&検証
try (ExcelReader reader = new ExcelReader(workbook)) {
String[] r0 = reader.read();
assertNotNull(r0);
assertEquals(2, r0.length);
assertEquals("true", r0[0]);
assertEquals("false", r0[1]);
assertNull(reader.read());
}
}
}
项目:springapp
文件:ExcelReaderTest.java
@Test
public void testRead_FORMULA_ERROR() throws IOException {
try (Workbook workbook = new XSSFWorkbook()) {
// 準備
Sheet sheet = workbook.createSheet();
Row row0 = sheet.createRow(0);
row0.createCell(0).setCellErrorValue((byte) 0);
row0.createCell(1).setCellFormula("A1");
FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();
evaluator.evaluateAll();
// 実行&検証
try (ExcelReader reader = new ExcelReader(workbook)) {
String[] r0 = reader.read();
assertNotNull(r0);
assertEquals(2, r0.length);
assertNull(r0[0]);
assertNull(r0[1]);
assertNull(reader.read());
}
}
}
项目:BfROpenLab
文件:TraceGenerator.java
private void doFormats(XSSFDataValidationHelper dvHelper, XSSFSheet sheetTracing, int rowIndex, FormulaEvaluator evaluator) {
insertCondition(dvHelper, sheetTracing, rowIndex, 3, "1", "31");
insertCondition(dvHelper, sheetTracing, rowIndex, 4, "1", "12");
insertCondition(dvHelper, sheetTracing, rowIndex, 5, "1900", "3000");
insertCondition(dvHelper, sheetTracing, rowIndex, 6, "1", "31");
insertCondition(dvHelper, sheetTracing, rowIndex, 7, "1", "12");
insertCondition(dvHelper, sheetTracing, rowIndex, 8, "1900", "3000");
insertDecCondition(dvHelper, sheetTracing, rowIndex, 9);
insertDropBox(dvHelper, sheetTracing, rowIndex, 10, "=Units");
insertDropBox(dvHelper, sheetTracing, rowIndex, 11, "=StationIDs");
//XSSFRow row = sheetTracing.getRow(rowIndex);
//XSSFCell cell = row.getCell(12);
//cell.setCellFormula("INDEX(Companies,MATCH(L" + (row.getRowNum() + 1) + ",StationIDs,0),1)");
//evaluator.evaluateFormulaCell(cell);
insertDropBox(dvHelper, sheetTracing, rowIndex, 0, "=LotNumbers");
}
项目:iif-resultsrepository
文件:Report.java
private void evaluateFormulas(Sheet sheet) {
FormulaEvaluator evaluator = sheet.getWorkbook().getCreationHelper()
.createFormulaEvaluator();
Row row = null;
Cell cell = null;
for (int i = 0; i < 100; i++) {
row = sheet.getRow(i);
if (row == null)
row = sheet.createRow(i);
for (int j = 0; j < 50; j++) {
cell = row.getCell(j);
if (cell == null)
cell = row.createCell(j);
evaluator.evaluateFormulaCell(cell);
}
}
}
项目:jexunit
文件:ExcelLoader.java
/**
* Evaluate the formula of the given cell.
*
* @param workbook
* workbook (excel) for evaluating the cell formula
* @param cell
* cell (excel)
*
* @return the value of the excel-call as string (the formula will be executed)
*/
static String evaluateCellFormula(XSSFWorkbook workbook, XSSFCell cell) {
FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();
CellValue cellValue = evaluator.evaluate(cell);
switch (cellValue.getCellType()) {
case Cell.CELL_TYPE_BOOLEAN:
return String.valueOf(cellValue.getBooleanValue());
case Cell.CELL_TYPE_NUMERIC:
return String.valueOf(cellValue.getNumberValue());
case Cell.CELL_TYPE_STRING:
return cellValue.getStringValue();
default:
return null;
}
}
项目:brigen-base
文件:PoiMethods.java
public static void evaluateAllCell(FormulaEvaluator evaluator, Sheet sheet) {
if ((evaluator == null) || (sheet == null)) {
return;
}
for (int r = 0; r <= sheet.getLastRowNum(); r++) {
Row row = sheet.getRow(r);
if (row == null) {
continue;
}
for (int c = 0; c <= row.getLastCellNum(); c++) {
Cell cell = row.getCell(c);
if (cell == null) {
continue;
}
switch (cell.getCellType()) {
case CELL_TYPE_FORMULA: {
evaluator.evaluateInCell(cell);
}
}
}
}
}
项目:excel2canvas
文件:DataFormatterEx.java
public FormattedValue formatCellValue(Cell cell, FormulaEvaluator evaluator) {
FormattedValue ret = doFormatCellValue(cell, evaluator);
if (cell != null && cell.getCellType() == Cell.CELL_TYPE_FORMULA) {
ret.setFormula(cell.getCellFormula());
}
if (DEBUG && cell != null && cell.getCellStyle() != null) {
int cellType = cell.getCellType();
if (cellType == Cell.CELL_TYPE_FORMULA) {
cellType = cell.getCachedFormulaResultType();
}
if (cellType == Cell.CELL_TYPE_NUMERIC) {
System.out.println("Format: " +
cell.getCellStyle().getDataFormat() + ": " +
cell.getCellStyle().getDataFormatString() + " --- " +
ExcelUtils.isCellDateFormatted(cell) + ":" +
DateUtil.isCellDateFormatted(cell) + ":" +
DateUtil.isInternalDateFormat(cell.getCellStyle().getDataFormat()) + " --- " +
ret);
}
}
return ret;
}
项目:jixture
文件:ExcelFileFixtureTransformer.java
@Override
protected List<Object> parse(From fixture) {
InputStream inputStream = fixture.getInputStream();
Workbook workbook = createWorkbook(inputStream);
DataFormatter dataFormatter = new DataFormatter();
FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();
List<Object> mappings = new LinkedList<Object>();
Helpers helpers = new Helpers();
helpers.dataFormatter = dataFormatter;
helpers.evaluator = evaluator;
Parameters parameters = new Parameters();
parameters.mode = fixture.getMode();
for (int sheetIndex = 0; sheetIndex < workbook.getNumberOfSheets(); sheetIndex++) {
Sheet sheet = workbook.getSheetAt(sheetIndex);
mappings.addAll(parseSheet(sheet, helpers, parameters));
}
return mappings;
}
项目:modern.core.java.repo
文件:ExcelXlsReaderParameter.java
private Object evaluateCellFormula(final HSSFWorkbook workbook, final Cell cell) {
FormulaEvaluator evaluator = workbook.getCreationHelper()
.createFormulaEvaluator();
CellValue cellValue = evaluator.evaluate(cell);
Object result = null;
if (cellValue.getCellType() == Cell.CELL_TYPE_BOOLEAN) {
result = cellValue.getBooleanValue();
} else if (cellValue.getCellType() == Cell.CELL_TYPE_NUMERIC) {
result = cellValue.getNumberValue();
} else if (cellValue.getCellType() == Cell.CELL_TYPE_STRING) {
result = cellValue.getStringValue();
}
return result;
}
项目:logistimo-web-service
文件:SpreadsheetUtil.java
public static void evaluateFormulas(String fileName) throws IOException {
xLogger.fine("Entering evaluateFormulas. fileName: {0}", fileName);
// Create a InoutStream from the bytes in the cloud storage.
// Create a template workbook
// Evaluate the formulas
// Save the workbook.
if (fileName == null || fileName.isEmpty()) {
xLogger.severe("Cannot evaluate formulas in a null or empty file");
return;
}
InputStream is = null;
OutputStream os = null;
// Create a workbook from the bytes
try {
// Get the template bytes from GCS ( Note: By now the data has been added to the appropriate sheet/s)
is = _storageUtil.getInputStream(CustomReportsExportMgr.CUSTOMREPORTS_BUCKETNAME, fileName);
if (is == null) {
xLogger.severe("Failed to create Input stream for {0}", fileName);
return;
}
Workbook
templateWb =
WorkbookFactory.create(
is); // From the bytes downloaded from the google cloud storage, form the Workbook
if (templateWb != null) {
CreationHelper createHelper = templateWb.getCreationHelper();
xLogger.fine("Created createHelper. {0}", createHelper);
if (createHelper != null) {
FormulaEvaluator evaluator = createHelper.createFormulaEvaluator();
xLogger.fine("Created evaluator. {0}", evaluator);
if (evaluator != null) {
evaluator.evaluateAll();
xLogger.fine("After evaluator.evaluateAll");
templateWb.setForceFormulaRecalculation(
true); // Added this line because some formula cells were not getting updated even after calling evaluateAll
xLogger.fine("After templateWb.setForceFormulaRecalculation");
// Write to file
xLogger.fine("Now creating baos");
os =
_storageUtil
.getOutputStream(CustomReportsExportMgr.CUSTOMREPORTS_BUCKETNAME, fileName,
false);
xLogger.fine("os: {0}", os);
templateWb.write(os); // Write the workbook to OutputStream
xLogger.fine("Wrote templateWb to baos");
} // end if evaluator != null
} // end if createHelper != null
} // end if templateWb != null
} catch (Exception e) {
xLogger.severe("{0} while evaluating formulas in the file {1}. Message: {2}",
e.getClass().getName(), fileName, e.getMessage(), e);
} finally {
if (is != null) {
is.close();
}
if (os != null) {
os.close();
}
}
xLogger.fine("Exiting evaluateFormulas");
}
项目:vaadin-gridexport
文件:ExcelExport.java
/**
* Final formatting of the sheet upon completion of writing the data. For
* example, we can only size the column widths once the data is in the
* report and the sheet knows how wide the data is.
*/
protected void finalSheetFormat() {
final FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();
if (isHierarchical()) {
/*
* evaluateInCell() is equivalent to paste special -> value. The formula refers to cells
* in the other sheet we are going to delete. We sum in the other sheet because if we
* summed in the main sheet, we would double count. Subtotal with hidden rows is not yet
* implemented in POI.
*/
for (final Row r : sheet) {
for (final Cell c : r) {
if (c.getCellTypeEnum() == CellType.FORMULA) {
evaluator.evaluateInCell(c);
}
}
}
workbook.setActiveSheet(workbook.getSheetIndex(sheet));
if (hierarchicalTotalsSheet != null) {
workbook.removeSheetAt(workbook.getSheetIndex(hierarchicalTotalsSheet));
}
} else {
evaluator.evaluateAll();
}
for (int col = 0; col < getPropIds().size(); col++) {
sheet.autoSizeColumn(col);
}
}
项目:judge
文件:ExcelUtil.java
public static <T> List<T> parse(InputStream inputStream, Class<T> type, @Nullable Locale locale) throws IOException {
Workbook workbook;
try {
workbook = WorkbookFactory.create(inputStream);
} catch (InvalidFormatException ex) {
throw new BusinessException(BusinessCode.INVALID_EXCEL);
}
FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();
return parse(workbook, evaluator, type, locale);
}
项目:judge
文件:ExcelUtil.java
private static <T> List<T> parse(Workbook workbook, FormulaEvaluator evaluator, Class<T> type, @Nullable Locale locale) {
Metainfo<T> metainfo = Metainfo.forType(type, locale);
Sheet sheet = workbook.getSheetAt(workbook.getActiveSheetIndex());
Iterator<Row> rows = sheet.rowIterator();
if (!rows.hasNext()) {
return Collections.emptyList();
}
Row firstRow = rows.next();
Map<Integer, String> columnIndexToFieldName = Maps.newHashMapWithExpectedSize(metainfo.size());
for (Iterator<Cell> it = firstRow.cellIterator(); it.hasNext();) {
Cell cell = it.next();
JsonElement jsonElement = parseAsJsonElement(cell, evaluator);
if (jsonElement != null) {
Field field = metainfo.getField(jsonElement.getAsString());
if (field != null) {
String name = field.getName();
int index = cell.getColumnIndex();
columnIndexToFieldName.put(index, name);
}
}
}
if (columnIndexToFieldName.isEmpty()) {
return Collections.emptyList();
}
List<T> result = new ArrayList<>(sheet.getLastRowNum() - sheet.getFirstRowNum());
while (rows.hasNext()) {
result.add(parseRow(evaluator, rows.next(), columnIndexToFieldName, type));
}
return result;
}
项目:judge
文件:ExcelUtil.java
private static JsonElement parseAsJsonElement(Cell cell, FormulaEvaluator evaluator) {
switch (cell.getCellTypeEnum()) {
case NUMERIC:
if (HSSFDateUtil.isCellDateFormatted(cell)) {
return new JsonPrimitive(DateFormatterHolder.formatter.format(cell.getDateCellValue().toInstant()));
} else {
return new JsonPrimitive(cell.getNumericCellValue());
}
case STRING:
return new JsonPrimitive(cell.getStringCellValue());
case FORMULA:
CellValue cellValue = evaluator.evaluate(cell);
switch (cellValue.getCellTypeEnum()) {
case NUMERIC:
return new JsonPrimitive(cellValue.getNumberValue());
case STRING:
return new JsonPrimitive(cellValue.getStringValue());
case BLANK:
return new JsonPrimitive("");
case BOOLEAN:
return new JsonPrimitive(cellValue.getBooleanValue());
case ERROR:
default:
return null;
}
case BLANK:
return new JsonPrimitive("");
case BOOLEAN:
return new JsonPrimitive(cell.getBooleanCellValue());
case ERROR:
default:
return null;
}
}
项目:judge
文件:ExcelUtil.java
private static <T> T parseRow(FormulaEvaluator evaluator, Row row, Map<Integer, String> fields, Class<T> type) {
JsonObject jsonObject = new JsonObject();
for (Iterator<Cell> it = row.cellIterator(); it.hasNext();) {
Cell cell = it.next();
String name = fields.get(cell.getColumnIndex());
if (name != null) {
JsonElement cellValue = parseAsJsonElement(cell, evaluator);
if (cellValue != null) {
jsonObject.add(name, cellValue);
}
}
}
return GsonHolder.GSON.fromJson(jsonObject, type);
}
项目:excelToApp
文件:ExcelBase.java
/**
*
* son las celdas que ya se han modificado
* se necesitan almacenar para poder notificar los
* cambios en modificaciones posteriores
*/
protected ExcelBase(ArrayList<WorkBookInfo> arrWorkBookInfo) throws IOException, EncryptedDocumentException, InvalidFormatException
{
// System.setProperty ("org.apache.poi.util.POILogger",
// "org.apache.poi.util.SystemOutLogger");
// System.setProperty ("poi.log.level", POILogger.INFO + "");
// evaluator.setDebugEvaluationOutputForNextEval(true);
//Collection<String> unsupportedFuncs = WorkbookEvaluator.getNotSupportedFunctionNames ();
//agrego funciones personalizadas
//WorkbookEvaluator.registerFunction("DAVERAGE", new DAVERAGE());
FileInputStream fis;
WorkBookObject workBookObject;
Map<String,FormulaEvaluator> workbooksEvaluator = new HashMap<String, FormulaEvaluator>();
for (WorkBookInfo workBookInfoItem : arrWorkBookInfo)
{
workBookObject = new WorkBookObject();
workBookObject.workBookInfo = workBookInfoItem;
fis = new FileInputStream(workBookInfoItem.path);
workBookObject.workBook = WorkbookFactory.create(fis);
//recorro las hojas del libro
for (String sheetNameItem : workBookInfoItem.sheetsNames)
{
workBookObject.sheets.put(sheetNameItem,workBookObject.workBook.getSheet(sheetNameItem));
}
workBookObject.evaluator = workBookObject.workBook.getCreationHelper().createFormulaEvaluator();
//mapa de referencias de evaluator
workbooksEvaluator.put(workBookInfoItem.fileName, workBookObject.evaluator);
arrWorkBookObject.add(workBookObject);
}
//asigno referencias todos a todos
for (WorkBookObject workBookObjectItem : arrWorkBookObject)
{
workBookObjectItem.evaluator.setupReferencedWorkbooks(workbooksEvaluator);
}
}
项目:tecsinapse-data-io
文件:ImporterUtils.java
public static String getValueOrEmpty(FormulaEvaluator evaluator, Cell cell, ExporterFormatter exporterFormatter) {
Object value = getValueOrEmptyAsObject(evaluator, cell);
if (value instanceof Date) {
exporterFormatter.formatByDateType((Date) value);
}
if (value instanceof BigDecimal) {
return formatNumericAsString((BigDecimal) value, exporterFormatter);
}
return value.toString();
}
项目:step
文件:ExcelFunctions.java
private static int evaluateFormulaCell(Cell cell, FormulaEvaluator evaluator) {
int typ = -1;
try {
typ = evaluator.evaluateFormulaCell(cell);
} catch (RuntimeException e) {
String cellRef = CellReference.convertNumToColString(cell.getColumnIndex())+(cell.getRowIndex()+1);
String errMsg = "Error while evaluating cell " + cellRef + " from sheet " + cell.getSheet().getSheetName() + ": " + e.getMessage();
throw new RuntimeException(errMsg, e);
}
return typ;
}
项目:bingexcel
文件:ExcelDataFormatter.java
/**
* <p>
* Returns the formatted value of a cell as a <tt>String</tt> regardless
* of the cell type. If the Excel format pattern cannot be parsed then the
* cell value will be formatted using a default format.
* </p>
* <p>When passed a null or blank cell, this method will return an empty
* String (""). Formula cells will be evaluated using the given
* {@link FormulaEvaluator} if the evaluator is non-null. If the
* evaluator is null, then the formula String will be returned. The caller
* is responsible for setting the currentRow on the evaluator
*</p>
*
* @param cell The cell (can be null)
* @param evaluator The FormulaEvaluator (can be null)
* @return a string value of the cell
*/
public String formatCellValue(Cell cell, FormulaEvaluator evaluator) {
localeChangedObervable.checkForLocaleChange();
if (cell == null) {
return "";
}
int cellType = cell.getCellType();
if (cellType == Cell.CELL_TYPE_FORMULA) {
if (evaluator == null) {
return cell.getCellFormula();
}
cellType = evaluator.evaluateFormulaCell(cell);
}
switch (cellType) {
case Cell.CELL_TYPE_NUMERIC :
if (ExcelDateUtil.isCellDateFormatted(cell)) {
return getFormattedDateString(cell);
}
return getFormattedNumberString(cell);
case Cell.CELL_TYPE_STRING :
return cell.getRichStringCellValue().getString();
case Cell.CELL_TYPE_BOOLEAN :
return String.valueOf(cell.getBooleanCellValue());
case Cell.CELL_TYPE_BLANK :
return "";
case Cell.CELL_TYPE_ERROR:
return FormulaError.forInt(cell.getErrorCellValue()).getString();
}
throw new RuntimeException("Unexpected celltype (" + cellType + ")");
}
项目:owsi-core-parent
文件:WorkbookUtils.java
private static Object getCellValue(FormulaEvaluator formulaEvaluator, Cell cell) {
Object cellPrimitiveValue = getCellPrimitiveValue(cell, cell.getCellType());
if (cellPrimitiveValue != null) {
return cellPrimitiveValue;
} else if (cell.getCellType() == Cell.CELL_TYPE_FORMULA) {
return getCellValueFromFormula(formulaEvaluator, cell);
}
return null;
}
项目:owsi-core-parent
文件:WorkbookUtils.java
private static Object getCellValueFromFormula(FormulaEvaluator formulaEvaluator, Cell cell) {
try {
CellValue cellValue = formulaEvaluator.evaluate(cell);
if (cellValue.getCellType() == Cell.CELL_TYPE_NUMERIC) {
if (DateUtil.isCellDateFormatted(cell)) {
Calendar calendar = GregorianCalendar.getInstance();
calendar.setTime(DateUtil.getJavaDate(cellValue.getNumberValue()));
return calendar.getTime();
} else {
return DECIMAL_FORMAT.format(cellValue.getNumberValue());
}
} else if (cellValue.getCellType() == Cell.CELL_TYPE_STRING) {
if (StringUtils.hasText(cellValue.getStringValue())) {
return cellValue.getStringValue();
}
}
} catch (NotImplementedException e) {
// If formula use Excel features not implemented in POI (like proper),
// we can retrieve the cached value (which may no longer be correct, depending of what you do on your file).
FormulaFeature feature = EnumUtils.getEnum(FormulaFeature.class, e.getCause().getMessage());
if (ALLOWED_NOT_IMPLEMENTED_FORMULA_FEATURES.contains(feature)) {
return getCellPrimitiveValue(cell, cell.getCachedFormulaResultType());
} else {
throw e;
}
}
return null;
}
项目:equalize-xpi-modules
文件:Excel2XMLTransformer.java
private String retrieveCellContent(Cell cell, Workbook wb, boolean evaluateFormulas, String formatting) {
FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator();
DataFormatter formatter = new DataFormatter(true);
String cellContent = null;
int cellType = cell.getCellType();
switch(cellType) {
case Cell.CELL_TYPE_BLANK:
break;
case Cell.CELL_TYPE_FORMULA:
if (evaluateFormulas) {
cellContent = formatter.formatCellValue(cell, evaluator);
} else {
// Display the formula instead
cellContent = cell.getCellFormula();
}
break;
default:
if(formatting.equalsIgnoreCase("excel")) {
cellContent = formatter.formatCellValue(cell);
} else if(formatting.equalsIgnoreCase("raw")) {
// Display the raw cell contents
switch (cellType) {
case Cell.CELL_TYPE_NUMERIC:
cellContent = Double.toString(cell.getNumericCellValue());
break;
case Cell.CELL_TYPE_STRING:
cellContent = cell.getStringCellValue();
break;
case Cell.CELL_TYPE_BOOLEAN:
cellContent = Boolean.toString(cell.getBooleanCellValue());
break;
}
}
break;
}
return cellContent;
}
项目:data-prep
文件:XlsUtils.java
/**
*
* @param cell
* @param formulaEvaluator
* @return return the cell value as String (if needed evaluate the existing formula)
*/
public static String getCellValueAsString(Cell cell, FormulaEvaluator formulaEvaluator) {
if (cell == null) {
return StringUtils.EMPTY;
}
switch (cell.getCellType()) {
case Cell.CELL_TYPE_BLANK:
return "";
case Cell.CELL_TYPE_BOOLEAN:
return cell.getBooleanCellValue() ? Boolean.TRUE.toString() : Boolean.FALSE.toString();
case Cell.CELL_TYPE_ERROR:
return "Cell Error type";
case Cell.CELL_TYPE_FORMULA:
try {
return getCellValueAsString(cell, formulaEvaluator.evaluate(cell));
} catch (Exception e) {
// log error message and the formula
LOGGER.warn("Unable to evaluate cell (line: {}, col: {}) with formula '{}': {}", cell.getRowIndex(),
cell.getColumnIndex(), cell.getCellFormula(), e.getMessage(), e);
return StringUtils.EMPTY;
}
case Cell.CELL_TYPE_NUMERIC:
return getNumericValue(cell, null, false);
case Cell.CELL_TYPE_STRING:
return StringUtils.trim(cell.getStringCellValue());
default:
return "Unknown Cell Type: " + cell.getCellType();
}
}
项目:aorra
文件:SpreadsheetDataSource.java
private boolean updatePrecalculatedValue(Cell destination,
Cell source, FormulaEvaluator sEvaluator) {
if(source != null) {
switch(source.getCellType()) {
case Cell.CELL_TYPE_BLANK:
return updatePrecalculatedBlank(destination);
case Cell.CELL_TYPE_BOOLEAN:
return updatePrecalculatedBoolean(destination, source.getBooleanCellValue());
case Cell.CELL_TYPE_ERROR:
return updatePrecalculatedError(destination,
FormulaError.forInt(source.getErrorCellValue()));
case Cell.CELL_TYPE_FORMULA:
try {
return updatePrecalculatedCellValue(destination, sEvaluator.evaluate(source));
} catch(Exception e) {
switch(source.getCachedFormulaResultType()) {
case Cell.CELL_TYPE_NUMERIC:
return updatePrecalculatedNumeric(destination, source.getNumericCellValue());
case Cell.CELL_TYPE_STRING:
return updatePrecalculatedString(destination, source.getStringCellValue());
case Cell.CELL_TYPE_BOOLEAN:
return updatePrecalculatedBoolean(destination, source.getBooleanCellValue());
case Cell.CELL_TYPE_ERROR:
return updatePrecalculatedError(destination,
FormulaError.forInt(source.getErrorCellValue()));
}
}
case Cell.CELL_TYPE_NUMERIC:
return updatePrecalculatedNumeric(destination, source.getNumericCellValue());
case Cell.CELL_TYPE_STRING:
return updatePrecalculatedString(destination, source.getStringCellValue());
default:
return false;
}
} else {
return updatePrecalculatedError(destination, FormulaError.REF);
}
}
项目:M2Doc
文件:ExcelServices.java
@Documentation(
value = "Insert a table from an Excel .xlsx file.",
params = {
@Param(name = "uri", value = "The Excel .xlsx file uri, it can be relative to the template"),
@Param(name = "sheetName", value = "The sheet name"),
@Param(name = "topLeftCellAdress", value = "The top left cell address"),
@Param(name = "bottomRightCellAdress", value = "The bottom right cell address"),
@Param(name = "languageTag", value = "The language tag for the locale"),
},
result = "insert the table",
examples = {
@Example(expression = "'excel.xlsx'.asTable('Feuil1', 'C3', 'F7', 'fr-FR')", result = "insert the table from 'excel.xlsx'"),
}
)
// @formatter:on
public MTable asTable(String uriStr, String sheetName, String topLeftCellAdress, String bottomRightCellAdress,
String languageTag) throws IOException {
final MTable res = new MTableImpl();
final URI xlsxURI = URI.createURI(uriStr, false);
final URI uri = xlsxURI.resolve(templateURI);
try (XSSFWorkbook workbook = new XSSFWorkbook(uriConverter.createInputStream(uri));) {
final FormulaEvaluator evaluator = new XSSFFormulaEvaluator(workbook);
final XSSFSheet sheet = workbook.getSheet(sheetName);
if (sheet == null) {
throw new IllegalArgumentException(String.format("The sheet %s doesn't exists in %s.", sheetName, uri));
} else {
final Locale locale;
if (languageTag != null) {
locale = Locale.forLanguageTag(languageTag);
} else {
locale = Locale.getDefault();
}
final DataFormatter dataFormatter = new DataFormatter(locale);
final CellAddress start = new CellAddress(topLeftCellAdress);
final CellAddress end = new CellAddress(bottomRightCellAdress);
int rowIndex = start.getRow();
while (rowIndex <= end.getRow()) {
final XSSFRow row = sheet.getRow(rowIndex++);
if (row != null) {
final MRow mRow = new MRowImpl();
int cellIndex = start.getColumn();
while (cellIndex <= end.getColumn()) {
final XSSFCell cell = row.getCell(cellIndex++);
if (cell != null) {
final MStyle style = getStyle(cell);
final MElement text = new MTextImpl(dataFormatter.formatCellValue(cell, evaluator),
style);
final Color background = getColor(cell.getCellStyle().getFillForegroundColorColor());
final MCell mCell = new MCellImpl(text, background);
mRow.getCells().add(mCell);
} else {
mRow.getCells().add(createEmptyCell());
}
}
res.getRows().add(mRow);
} else {
final int length = end.getColumn() - start.getColumn() + 1;
res.getRows().add(createEmptyRow(length));
}
}
}
}
return res;
}
项目:step
文件:WorkbookSet.java
public FormulaEvaluator getMainFormulaEvaluator() {
return mainFormulaEvaluator;
}
项目:openbd-core
文件:SpreadsheetGetCellValue.java
public cfData execute( cfSession _session, List<cfData> parameters ) throws cfmRunTimeException {
cfSpreadSheetData spreadsheet = null;
int rowNo, columnNo;
/*
* Collect up the parameters
*/
spreadsheet = (cfSpreadSheetData)parameters.get(2);
rowNo = parameters.get(1).getInt() - 1;
columnNo = parameters.get(0).getInt() - 1;
if ( rowNo < 0 )
throwException(_session, "row must be 1 or greater (" + rowNo + ")");
if ( columnNo < 0 )
throwException(_session, "column must be 1 or greater (" + columnNo + ")");
/*
* Find the cell in question
*/
Sheet sheet = spreadsheet.getActiveSheet();
Row row = sheet.getRow( rowNo );
if ( row == null )
row = sheet.createRow( rowNo );
Cell cell = row.getCell( columnNo );
if ( cell == null )
cell = row.createCell( columnNo );
FormulaEvaluator evaluator = spreadsheet.getWorkBook().getCreationHelper().createFormulaEvaluator();
if ( cell.getCellType() == Cell.CELL_TYPE_BOOLEAN )
return cfBooleanData.getcfBooleanData( cell.getBooleanCellValue() );
else if ( cell.getCellType() == Cell.CELL_TYPE_NUMERIC )
return new cfNumberData( cell.getNumericCellValue() );
else if ( cell.getCellType() == Cell.CELL_TYPE_BLANK )
return cfStringData.EMPTY_STRING;
else if ( cell.getCellType() == Cell.CELL_TYPE_STRING )
return new cfStringData( cell.getStringCellValue() );
else if ( cell.getCellType() == Cell.CELL_TYPE_FORMULA ){
CellValue cellValue = evaluator.evaluate(cell);
switch (cellValue.getCellType()) {
case Cell.CELL_TYPE_BOOLEAN:
return cfBooleanData.getcfBooleanData(cellValue.getBooleanValue());
case Cell.CELL_TYPE_NUMERIC:
return new cfNumberData(cellValue.getNumberValue());
case Cell.CELL_TYPE_STRING:
return new cfStringData(cellValue.getStringValue());
default:
return cfStringData.EMPTY_STRING;
}
}else
return cfStringData.EMPTY_STRING;
}
项目:Apache-POI_DataBroker_PlugIn
文件:XSSFSheetToCSVDataProcessor.java
private String generateCSVFromCell(Cell cell, FormulaEvaluator evaluator)
{
try
{
if ((cell != null) && (cell.getCellType() != Cell.CELL_TYPE_BLANK))
{
CellValue cellValue = evaluator.evaluate(cell);
if (cellValue.getCellType() == Cell.CELL_TYPE_STRING)
return cellValue.getStringValue();
else if (cellValue.getCellType() == Cell.CELL_TYPE_NUMERIC)
{
if (DateUtil.isCellDateFormatted(cell))
{
CellStyle cellStyle = cell.getCellStyle();
String excelDateFormat = cellStyle.getDataFormatString();
String javaDateFormat = excelToJavaDataFormat(excelDateFormat);
DateFormat dateFormat = new SimpleDateFormat(javaDateFormat);
return dateFormat.format(cell.getDateCellValue());
}
else
return Double.toString(cellValue.getNumberValue());
}
else if (cellValue.getCellType() == Cell.CELL_TYPE_BOOLEAN)
return Boolean.toString(cellValue.getBooleanValue());
else if (cellValue.getCellType() == Cell.CELL_TYPE_BLANK)
return "";
else
{
logger.log(Level.WARNING, "Problem process cell: Unknown CellValue Type = " + cellValue.getCellType());
return "";
}
}
else
return "";
}
catch (Throwable throwable)
{
logger.log(Level.WARNING, "Problem process cell: Unknown Cell Type", throwable);
return "";
}
}