首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Apache POI保留Excel标题中的图像

使用Apache POI保留Excel标题中的图像
EN

Stack Overflow用户
提问于 2010-01-06 19:08:12
回答 2查看 4.1K关注 0票数 1

我正在尝试使用Apache POI 3.6 (最新版本)生成Excel报告。

由于POI对页眉和页脚生成(仅文本)的支持有限,因此我决定从一个已准备好页眉的空白excel文件开始,并使用POI填充Excel单元格(参见问题714172)。

不幸的是,当使用POI打开工作簿并将其立即写入磁盘时(没有任何单元格限制),标题似乎丢失了。

下面是我用来测试这个行为的代码:

代码语言:javascript
复制
public final class ExcelWorkbookCreator {

  public static void main(String[] args) {
    FileOutputStream outputStream = null;
    try {
      outputStream = new FileOutputStream(new File("dump.xls"));
      InputStream inputStream = ExcelWorkbookCreator.class.getResourceAsStream("report_template.xls");
      HSSFWorkbook workbook = new HSSFWorkbook(inputStream, true);
      workbook.write(outputStream);
    } catch (Exception exception) {
      throw new RuntimeException(exception);
    } finally {
      if (outputStream != null) {
        try {
          outputStream.close();
        } catch (IOException exception) {
          // Nothing much to do
        }
      }
    }
  }
}
EN

Stack Overflow用户

发布于 2013-06-18 19:36:24

只要Excel 97-2003支持这些标头,Excel文件的标头就会一直保留。例如,支持图像(我刚刚尝试过),但不支持彩色文本。

其中棘手的部分是,您的Excel模板文件"dump.xls“必须是Excel97-2003格式。请注意:这不是文件扩展名,而是文件的实际内容。最新的Excel将很乐意将最新的格式保存在.xls文件中,这是POI无法读取的。

要测试这一点,请将您的Excel文件另存为.xls文件。重要信息-如果收到兼容性警告,则必须单击对话框中的“更正”链接以更正Excel。只需单击“继续”即可使Excel文件对POI无效。

一旦你有了一个真正的.xls文件(具有兼容的内容),你的代码就可以工作了。我刚刚自己测试了一下:

代码语言:javascript
复制
public static void main(String[] args) throws Exception {
  try (FileInputStream fis = new FileInputStream("./report_template.xls"); 
      FileOutputStream fos = new FileOutputStream("./dump.xls")) {
    HSSFWorkbook wb = new HSSFWorkbook(fis);
    wb.write(fos); 
  }
}
票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2012433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档