在我的應用程序中,我使用POI API生成Excel文件。文檔左上角的一個單元格包含圖像。我得到的問題是圖像被拉伸以填充保存它的單元格。使用POI在Excel中拉伸的圖像
根據我在Picture對象上使用哪種調整大小的方法,圖像以各種大小顯示,但它始終具有它所在的單元格的水平 - 垂直比例,換句話說,它不會保留它自己的比。
這是我的代碼:
titleRow = sheet.createRow(0);
titleRow.setHeightInPoints(25f);
titleRow.createCell(0);
sheet.getRow(0).getCell(0).setCellStyle(defaultTitleStyle(wb));
WebApplicationContext webCtx = ((WebApplicationContext)AtlasApplicationUtils.getCurrentApplication().getContext());
ServletContext sc = webCtx.getHttpSession().getServletContext();
String contextPath = sc.getContextPath();
// sc.getResourceAsStream(contextPath + "/VAADIN/themes/m2m/../m2m/img/gnd_logo_white.png")
String f = new File("").getAbsolutePath();
InputStream is = new FileInputStream(System.getProperty("user.dir") + "/src/main/webapp/VAADIN/themes/m2m/img/gnd_logo_white.png");
byte[] bytes = IOUtils.toByteArray(is);
int pictureIdx = wb.addPicture(bytes, Workbook.PICTURE_TYPE_PNG);
is.close();
CreationHelper helper = wb.getCreationHelper();
Drawing drawing = sheet.createDrawingPatriarch();
ClientAnchor anchor = helper.createClientAnchor();
anchor.setCol1(0);
anchor.setRow1(0);
sheet.autoSizeColumn(0);
Picture pict = drawing.createPicture(anchor, pictureIdx);
pict.getPreferredSize();
pict.resize(0.25);
的造型方法:
protected CellStyle defaultTitleStyle(final HSSFWorkbook wb) {
CellStyle style;
final Font titleFont = wb.createFont();
titleFont.setFontHeightInPoints((short) 18);
titleFont.setBoldweight(Font.BOLDWEIGHT_BOLD);
titleFont.setColor(IndexedColors.GREY_80_PERCENT.getIndex());
style = wb.createCellStyle();
style.setAlignment(CellStyle.ALIGN_CENTER);
style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
style.setFillForegroundColor(IndexedColors.BLUE_GREY.getIndex());
style.setFillPattern(CellStyle.SOLID_FOREGROUND);
// style.setFillBackgroundColor(IndexedColors.BLUE_GREY.getIndex());
style.setFont(titleFont);
HSSFPalette palette = wb.getCustomPalette();
palette.setColorAtIndex(HSSFColor.BLUE_GREY.index,
(byte) 7,
(byte) 64,
(byte) 127);
palette.setColorAtIndex(HSSFColor.GREY_80_PERCENT.index,
(byte) 228,
(byte) 228,
(byte) 228);
return style;
有誰知道的一種方式來避免這個問題,讓影像保持原有的比例是多少?
好吧,謝謝你的回答。一個問題,但你知道我是如何設置爲默認字體嗎?我試着刪除了我用過的所有字體規格,但沒有任何區別。 – AndroidHustle