![](/img/trans.png)
[英]Resize/compress picture using Apache POI hslf - PowerPoint
[英]Apache POI disable auto resize of picture
我正在使用 Apache POI 將圖像放入 Excel 表中。 當我使用 Excel 打開文件並手動調整包含圖像的單元格時,圖像也會調整大小。
如何將圖片插入不根據單元格大小調整大小的單元格?
我的代碼:
private void addImageToExcelReport(InputStream is, OutputStream os, File image) {
try (BufferedReader br = new BufferedReader(new FileReader(image))) {
if (br.readLine() != null) {
XSSFWorkbook wb = new XSSFWorkbook(is);
XSSFSheet sheet = wb.getSheetAt(0);
InputStream inputStream = new FileInputStream(image);
byte[] bytes = IOUtils.toByteArray(inputStream);
int pictureIdx = wb.addPicture(bytes, Workbook.PICTURE_TYPE_PNG);
inputStream.close();
CreationHelper helper = wb.getCreationHelper();
Drawing drawing = sheet.createDrawingPatriarch();
ClientAnchor anchor = helper.createClientAnchor();
sheet.createRow(1).createCell(0);
anchor.setRow1(0);
anchor.setRow2(1);
anchor.setCol1(0);
anchor.setCol2(1);
drawing.createPicture(anchor, pictureIdx);
wb.write(os);
wb.close();
}
} catch (IOException e) {
loggerService.traceError(e.getMessage(), e);
}
}
正如 Alex Richter 所建議的,答案是設置錨類型。 以下代碼適用於我:
private void addImageToExcelReport(InputStream is, OutputStream os, File image) {
if (image != null) {
try {
Workbook wb = new XSSFWorkbook(is);
Sheet sheet = wb.getSheetAt(0);
InputStream inputStream = new FileInputStream(image);
byte[] bytes = IOUtils.toByteArray(inputStream);
int pictureIdx = wb.addPicture(bytes, Workbook.PICTURE_TYPE_PNG);
inputStream.close();
CreationHelper helper = wb.getCreationHelper();
Drawing<?> drawing = sheet.createDrawingPatriarch();
ClientAnchor anchor = helper.createClientAnchor();
anchor.setAnchorType(AnchorType.DONT_MOVE_AND_RESIZE);
sheet.createRow(1).createCell(0);
anchor.setRow1(0);
anchor.setRow2(1);
anchor.setCol1(0);
anchor.setCol2(1);
drawing.createPicture(anchor, pictureIdx);
wb.write(os);
wb.close();
} catch (IOException e) {
loggerService.traceError(e.getMessage(), e);
}
}
}
此外,請確保擁有正確的庫。 我的 pom.xml 包含這些庫:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>ooxml-schemas</artifactId>
<version>1.4</version>
</dependency>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.