You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Aspose.Cells加载URL文件遇FileNotFoundException及线上保存问题求助

解决Aspose.Cells无法通过URL加载文件并保存为XLSB的问题

问题原因

Aspose.Cells Python版的Workbook构造函数不支持直接解析HTTP URL作为文件源,必须通过字节流加载远程文件;同时save方法无法直接将文件写入HTTP地址,需要先将处理后的文件保存到内存流,再上传到目标URL。

解决方案步骤

  • 从远程URL下载文件内容到内存字节流
  • 使用内存字节流初始化Workbook对象
  • 将处理后的工作簿保存到内存字节流
  • 将内存流中的内容上传到目标URL

修改后的代码示例

import asposecells
import urllib.request
from io import BytesIO
jpype.startJVM("-Xmx10g")
from asposecells.api import Workbook, SaveFormat

# 1. 从URL下载文件到内存字节流
source_url = "http://localhost/cafe_ci/assets/TestFile.xlsx"
response = urllib.request.urlopen(source_url)
file_stream = BytesIO(response.read())

# 2. 通过内存流加载Workbook
workbook = Workbook(file_stream)

# 3. 将工作簿保存到内存流(XLSB格式)
output_stream = BytesIO()
workbook.save(output_stream, SaveFormat.XLSB)
output_stream.seek(0)  # 将流指针移到开头,准备上传

# 4. 上传内存流内容到目标URL
target_url = "http://localhost/cafe_ci/assets/TestFile2.xlsb"
req = urllib.request.Request(target_url, data=output_stream.read(), method='PUT')
# 如果目标服务器需要认证或其他请求头,在这里添加
# req.add_header('Authorization', 'Bearer your_token')
urllib.request.urlopen(req)

jpype.shutdownJVM()

关键说明

  • 使用BytesIO将远程文件内容转为内存流,完全避免依赖本地文件路径
  • 加载Workbook时传入内存流,替代直接传入URL的错误用法
  • 保存时显式指定SaveFormat.XLSB确保输出格式符合要求,再将内存流内容上传到目标URL
  • 如果目标URL需要特定请求方法(如POST)或请求头,需根据服务器实际要求调整上传逻辑

内容的提问来源于stack exchange,提问作者Lucifer MorningStar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 17:46:27