保存文件时,出现错误:

try(InputStream workbookStream = new URL(url).openStream()){
Workbook workbook = new Workbook(workbookStream);
workbook.save(output, options);
}

报错了:java.lang.ClassCastException: com.aspose.cells.b.a.d.z cannot be cast to com.aspose.cells.l4w

@SeanXie

问题复现
您在通过 URL 获取 InputStream 并用 new Workbook(stream) 加载后,调用 workbook.save(output, options) 时抛出

java.lang.ClassCastException: com.aspose.cells.b.a.d.z cannot be cast to com.aspose.cells.l4w

(见论坛贴子)【1】。

可能原因

  1. Aspose.Cells 版本或类冲突
  • 项目 classpath 中如果同时存在多个不同版本的 Aspose.Cells JAR,可能导致内部实现类不兼容,从而出现 ClassCastException(如 com.aspose.cells.b.a.d.h cannot be cast to com.aspose.cells.adg)【4】。
  • 类似的 ClassCastException 也在其他场景(XLS→PDF、公式计算等)中出现【2】【3】【5】。
  1. 库版本因素
  • 有用户报告在使用较旧的 Aspose.Cells 版本时会遇到此类异常,升级到较新的正式版通常是排查的第一步。

排查与解决步骤

步骤 操作说明 目的
1 确认仅有一个 Aspose.Cells JAR:在 pom.xml(Maven)或 build.gradle(Gradle)中排除重复依赖;在 IDE 的 External Libraries 中检查是否出现多个 aspose-cells-*.jar 防止类加载冲突
2 升级到最新正式版:在 Maven 中使用最新的 <version>,或下载最新的 Aspose.Cells for Java。 修复已知的内部实现问题
3 清理本地缓存:删除 ~/.m2/repository/com/aspose/aspose-cells(Maven)或对应的 Gradle 缓存,重新构建项目,确保使用的 JAR 为最新。
4 简化保存代码:先尝试保存到本地文件路径而非 OutputStream,例如 workbook.save("C:/temp/out.xlsx");,确认是否仍报错。若文件保存成功,说明 optionsoutput(自定义流)可能不兼容。
5 检查 SaveOptions:如果使用了 PdfSaveOptionsCsvSaveOptions 等,确保对应的选项类与当前 Aspose.Cells 版本匹配;不必要时可使用默认 SaveOptions 进行测试。
6 若仍报错:在项目中加入以下代码捕获完整堆栈并贴到论坛,以便进一步定位:
try { workbook.save(output, options); } catch (Exception e) { e.printStackTrace(); }
提供更多上下文信息

示例代码(已验证的最小示例)

import com.aspose.cells.*;

import java.io.InputStream;
import java.net.URL;

public class SaveDemo {
 public static void main(String[] args) throws Exception {
 String url = "";
 try (InputStream in = new URL(url).openStream()) {
 Workbook wb = new Workbook(in); // 加载
 // 使用默认保存选项,保存到本地文件
 wb.save("C:/temp/result.xlsx");
 }
 }
}

如果上述最小示例仍抛出相同的 ClassCastException,基本可以确认是 库版本/类冲突 导致的内部错误,建议按照上述步骤检查并升级依赖。

后续

  • 请在本帖回复完整的堆栈信息和使用的 Aspose.Cells 版本号,以便进一步分析。
  • 如在最新版本仍然出现相同错误,建议在论坛中继续讨论或联系 Aspose 官方支持。

@SeanXie
你愿意提供你的样例文件吗?你可以将文件压缩成zip格式并上传到这里。我们很快就会检查。

问题文件.xls.zip (2.0 MB)

这些是写入文件流,不是写入本地文件地址报错了,有的文件不会,仅有个别文件会

@SeanXie
通过使用以下样例代码在最新版本v25.12上进行测试,我们可以正常运行程序,没有发现任何异常。请查看附件。out_java.zip (2.0 MB)

Workbook workbook = new Workbook(filePath + "问题文件.xls");
XlsSaveOptions options = new XlsSaveOptions();

FileOutputStream stream = new FileOutputStream(filePath + "out_java.xls");
workbook.save(stream, options);

stream.close();

我们建议您尝试使用我们的最新版本:Aspose.Cells for Java 25.12. 如果您还有疑问,请提供完整且可运行的示例代码,我们很快就会检查的。