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

Alfresco Share 5.2创建Excel节点文件大小为0无法下载求助

问题排查与修复

你的代码核心问题是没有把生成的HSSFWorkbook内容写入到节点中,反而尝试读取刚创建的空节点内容流,写入后自然是0字节。

问题分析

你创建并填充了HSSFWorkbook对象,但后续代码完全没用到它。反而调用contentService.getReader(node, ContentModel.PROP_CONTENT)获取新节点的读取器——刚创建的节点本身没有任何内容,所以这个读取器的输入流是空的,写入后文件自然无内容。

修复后的代码

把读取空reader的逻辑替换成将HSSFWorkbook写入ContentWriter的逻辑,关键修改如下:

HSSFWorkbook document = new HSSFWorkbook();
HSSFSheet sheet = document.createSheet("search-results");
HSSFRow row = sheet.createRow(0);
HSSFRow rowSecond = sheet.createRow(1);
HSSFCell cell = row.createCell(0);
HSSFCell cellWithValue = rowSecond.createCell(0);
cell.setCellValue("Link");
cellWithValue.setCellValue(urlLink);

Map<QName, Serializable> props = new HashMap<QName, Serializable>();
props.put(ContentModel.PROP_NAME, nameOfFile);
ChildAssociationRef childAssoc = 
nodeService.createNode(folderSaveResults,
        ContentModel.ASSOC_CONTAINS,
        ContentModel.ASSOC_CONTAINS,
        ContentModel.TYPE_CONTENT,
        props);

NodeRef node = childAssoc.getChildRef();

ContentWriter contentWriter =
        contentService.getWriter(node, ContentModel.PROP_CONTENT, true);
contentWriter.setMimetype(mimetypeService
        .guessMimetype(nodeService.getProperty(node, ContentModel.PROP_NAME).toString()));

this.behaviourFilter.disableBehaviour(node);

// 核心修改:将生成的Excel内容写入节点
try (ByteArrayOutputStream bos = new ByteArrayOutputStream()) {
    document.write(bos);
    contentWriter.putContent(new ByteArrayInputStream(bos.toByteArray()));
} catch (IOException e) {
    // 这里添加异常处理,比如日志记录或抛出业务异常
    e.printStackTrace();
}

this.behaviourFilter.enableBehaviour(node);

System.out.println(node);

关键说明

  1. 用ByteArrayOutputStream捕获HSSFWorkbook的输出内容,再转换成ByteArrayInputStream传给contentWriter.putContent(),完成内容写入。
  2. 移除了无用的ContentReader相关代码,因为新节点初始无内容,读取操作没有意义。
  3. 使用try-with-resources自动关闭流,避免资源泄漏。

修改后,生成的Excel内容会被正确写入Alfresco节点,文件大小不再为0字节。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 23:27:30