如何使用Apache POI 3.9在Excel页眉中添加图片?
Apache POI 3.9实现Excel页眉添加图片的解决方案
Apache POI 3.9可以实现Excel页眉添加图片的功能,但你的代码存在逻辑错误,导致图片无法显示。
问题分析
你当前的代码是将图片添加到工作表的正文绘图区域(DrawingPatriarch),但页眉的&[Picture]指令需要图片被专门关联到页眉区域,而非普通的工作表图片,因此无法识别显示。
修正后的代码
针对HSSF(.xls格式),你需要将图片直接设置为页眉关联图片,而非创建工作表图片:
byte[] logo; int logoId; try { logo = Files.readAllBytes(Paths.get("C:/Users/xiia7/OneDrive/Documents/assets/images/logo.png")); logoId = workbook.addPicture(logo, Workbook.PICTURE_TYPE_PNG); // 将图片关联到页眉中间区域 ((HSSFSheet) sheet0).setHeaderPicture(logoId, HSSFHeader.CENTER); } catch (Exception e) { e.printStackTrace(); } Header header = sheet0.getHeader(); header.setCenter(HSSFHeader.font("Times New Roman", "Bold") + HSSFHeader.fontSize((short) 8) + "&[Picture]");
关键说明
- 移除了创建
Drawing和Picture的代码,这部分是用于给工作表正文添加图片,和页眉无关。 - 使用
HSSFSheet.setHeaderPicture方法,将图片ID绑定到页眉的指定区域(左/中/右,对应HSSFHeader.LEFT/CENTER/RIGHT)。 - POI 3.9仅对HSSF(
.xls)格式的页眉图片支持完善,若你处理的是XSSF(.xlsx)格式,页眉图片功能需要升级到POI 3.14及以上版本才能正常使用。
内容的提问来源于stack exchange,提问作者Shabrina Nurdiani S
相关产品推荐
相关产品推荐

