m0_71329287 2024-05-23 18:06 采纳率: 0%
浏览 11

ASPOSE转换非标准xls为xlsx后使用poi计算公式,没有error但导出xlsx后公式单元格显示ERROR

使用ASPOSE将非标准xls(hssfworkbook无法读取,所以是非标准)读取为com.aspose.cells.Workbook
并使用.save()保存为xlsx后缀
再使用poi xssfworkbook读取并对其中公式进行计算
结果显示所有公式均有数值结果
并且没有任何一个ERROR类型的单元格
但是导出xlsx并且打开后公式单元格都显示ERROR

而poi中计算后把所有公式removeFormula()则正常显示计算结果
但是会丢失公式

我想保留公式和结果
有谁遇到过类似的情况吗?即使不同操作导致的。

ASPOSE24.3
POI4.1.2

  • 写回答

3条回答 默认 最新

  • 阿里嘎多学长 2024-05-23 18:06
    关注

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


    【您想要解决的问题】:您想要解决的问题是在将非标准xls文件通过ASPOSE转换为xlsx格式后,使用Apache POI库计算公式时,虽然计算结果显示正常,但在导出的xlsx文件中公式单元格却显示为ERROR,您希望保留公式的同时显示正确的计算结果。

    【问题出现原因】:这个问题可能由以下几个原因引起:

    1. ASPOSE转换过程中可能没有正确处理公式,导致POI在读取时无法识别。
    2. POI在处理公式时可能存在兼容性问题,特别是当处理非标准格式的xls文件时。
    3. Excel在打开xlsx文件时,可能因为某些未被正确转换的公式或格式问题而显示错误。

    【问题解决方案】:基于上述问题概括和分析,可以尝试以下解决方案:

    1. 验证ASPOSE转换:确保ASPOSE在转换过程中正确处理了所有公式。可以尝试使用ASPOSE的公式验证功能,或者查看是否有更新的版本或补丁可以解决这个问题。
    2. 检查POI版本:升级或降级POI库到其他版本,看是否能解决兼容性问题。
    3. 手动调整公式:如果自动计算公式后出现错误,可以尝试手动调整公式,或者在POI中使用setFormulaR1C1方法重新设置公式。
    4. 使用Excel进行中间转换:作为临时解决方案,可以尝试先用ASPOSE将xls转换为xlsx,然后用Excel打开并保存,之后再用POI读取和处理。

    【提供代码】:由于没有具体的代码示例,无法提供修改后的代码。但是,可以提供一些可能需要修改的代码段:

    // 使用ASPOSE转换xls到xlsx
    Workbook asposeWorkbook = new Workbook("path/to/your/file.xls");
    asposeWorkbook.save("path/to/save/as/xlsx.xlsx");
    
    // 使用POI读取xlsx并计算公式
    XSSFWorkbook poiWorkbook = new XSSFWorkbook(new FileInputStream("path/to/save/as/xlsx.xlsx"));
    XSSFSheet sheet = poiWorkbook.getSheetAt(0);
    for (Row row : sheet) {
        for (Cell cell : row) {
            if (cell.getCellType() == CellType.FORMULA) {
                // 重新设置公式或调整公式
                cell.setCellFormula(cell.getCellFormula());
            }
        }
    }
    poiWorkbook.write(new FileOutputStream("path/to/save/fixed.xlsx"));
    

    【代码运行方式】:运行这段代码需要Java环境,并且需要将ASPOSE和POI库添加到项目的依赖中。代码可以在任何支持Java的IDE中运行,如Eclipse或IntelliJ IDEA。

    【代码预期运行结果】:预期结果是公式被正确计算,并且在导出的xlsx文件中显示正确的结果而不是ERROR。

    【推荐相关链接】:

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 5月23日

悬赏问题

  • ¥15 如何解除Uniaccess管控
  • ¥15 微信小程序跳转关联公众号
  • ¥15 Java AES 算法 加密采用24位向量报错如何处理?
  • ¥15 使用X11可以找到托盘句柄,监控到窗口点击事件但是如何在监听的同时获取托盘中应用的上下文菜单句柄
  • ¥45 字符串操作——数组越界问题
  • ¥15 Loss下降到0.08时不在下降调整学习率也没用
  • ¥15 QT+FFmpeg使用GPU加速解码
  • ¥15 为什么投影机用酷喵播放电影放一段时间就播放不下去了?提示发生未知故障,有什么解决办法吗?
  • ¥15 来个会搭建付费网站的有偿
  • ¥100 有能够实现人机模式的c/c++代码,有图片背景等,能够直接进行游戏