8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

如何在 Spring 中获取 Excel 单元格中命名范围的值?

priya_d 2月前

12 0

当用户尝试上传 (.xlsx) 文件时,我正在从 Excel 工作表中导入数据。对于一个特定字段 Field1 - 2233,它使用命名范围来获取实际值,而不是命名

当用户尝试上传 (.xlsx) 文件时,我正在从 Excel 工作表中导入数据。对于一个特定字段 Field1 - 2233,它使用命名范围来获取实际值,而不是命名范围。

命名范围:

"IF(AND('Sheet 1'!NbFCbag <>\"Weight  including baggage\",'Sheet 1'!NbCCbag <> \"Weight  including baggage\"),('Sheet 1'!NbFC*'Sheet 1'!WFC + 'Sheet 1'!NbFCbag*'Sheet 1'!WFCbag) + ('Sheet 1'!NbCC*'Sheet 1'!WCC + 'Sheet 1'!NbCCbag*'Sheet 1'!WCCbag),IF(AND('Sheet 1'!NbFCbag<>\"Weight  including baggage\",'Sheet 1'!NbCCbag = \"Weight  including baggage\"),('Sheet 1'!NbFC*'Sheet 1'!WFC + 'Sheet 1'!NbFCbag*'Sheet 1'!WFCbag) + 'Sheet 1'!NbCC*'Sheet 1'!WCC,IF(AND('Sheet 1'!NbFCbag=\"Weight  including baggage\",'Sheet 1'!NbCCbag <> \"Weight  including baggage\"),'Sheet 1'!NbFC*'Sheet 1'!WFC + ('Sheet 1'!NbCC*'Sheet 1'!WCC + 'Sheet 1'!NbCCbag*'Sheet 1'!WCCbag),'Sheet 1'!NbFC*'Sheet 1'!WFC+ 'Sheet 1'!NbCC*'Sheet 1'!WCC)))"

FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();

 for (Name namedRange : workbook.getAllNames()) {
                    String rangeName = namedRange.getNameName();
                    try {
                        if (NAMED_RANGE.contains(rangeName)) {
                            AreaReference areaReference = new AreaReference(namedRange.getRefersToFormula(), oweWorkbook.getSpreadsheetVersion());
                            CellReference[] cellReferences = areaReference.getAllReferencedCells();
                            for (CellReference cellReference : cellReferences) {
                                Sheet namedSheet = oweWorkbook.getSheet(cellReference.getSheetName());
                                Row row = namedSheet.getRow(cellReference.getRow());
                                Cell cell = row.getCell(cellReference.getCol());
                                if (cell != null) {
                                    namedRangeValues.put(rangeName, getFormulaCellValueAsString(cell,evaluator));
                                }
                            }
                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }


 private String getFormulaCellValueAsString(Cell cell, FormulaEvaluator evaluator) {
        CellValue cellValue = evaluator.evaluate(cell);
        logger.info("cellValue:");
        switch (cellValue.getCellType()) {
            case STRING:
                return cellValue.getStringValue();
            case NUMERIC:
                if (DateUtil.isCellDateFormatted(cell)) {
                    return cell.getDateCellValue().toString();
                } else {
                    return Double.toString(cellValue.getNumberValue());
                }
            case BOOLEAN:
                return Boolean.toString(cellValue.getBooleanValue());
            default:
                return "";
        }
    }

我该如何解码才能获得准确的值?

我尝试使用 Formula Evaluator 但失败并出现错误: Second part of cell reference expected after sheet name at index .

帖子版权声明 1、本帖标题:如何在 Spring 中获取 Excel 单元格中命名范围的值?
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由priya_d在本站《spring-boot》版块原创发布, 转载请注明出处!
最新回复 (0)
返回
作者最近主题: