2016-06-14 135 views
2

我在ColdFusion 10中使用SpreadSheetAddImage向我的電子表格中的標題添加圖像。我正在運行的問題是函數需要一個錨位置,例如,如果我想運行圖像從單元格1行1到單元格5行5我會提供「1,1,5,5」作爲錨點參數。但是,如果我的表格在這些單元格中有小數據,則圖像會被壓縮。我如何添加一個設置寬度和高度的圖像?SpreadSheetAddImage - 添加設置寬度和高度的圖像

SpreadsheetAddImage(excelSheet,"C:\myimagepath\excelReportHeaderImage.jpg","1,1,5,5"); 
+0

AFAIK,CF不支持顯式調整大小。更改寬度和高度的唯一方法是更改​​錨定行和列的寬度/高度。它可以用POI完成,但是Excel的測量系統有點複雜,所以[明確的大小並不像你想象的那麼簡單](http://stackoverflow.com/questions/759856/poi-3-2-image-高度寬度控制)。如果你不關心溢出,你可以嘗試將圖像錨定到單元格的左上角,並根據需要調整它的大小。比其他方法簡單一點,但並不精確,仍然需要POI。 – Leigh

+0

另請參見[HSSF和XSSF中的Apache POI圖像單元格](http://stackoverflow.com/questions/759856/poi-3-2-image-height-width-controlling) – Leigh

+0

@Leigh - 我很滿意溢出,但我如何將它錨定到左上角的單元格(A1),並讓圖像跨越所需的距離 – Phil

回答

1

感謝Leigh的幫助。在ColdFusion的10,這裏是我做過什麼......

// Add our report header (must add AFTER the columns have been resized or it will reset the image size) 
headerImageBytes = FileReadBinary(image_file_path); 
headerImageIndex = poiWorkbook.addPicture(headerImageBytes, poiWorkbook.PICTURE_TYPE_JPEG); 
helper = poiWorkbook.getCreationHelper(); 
drawing = poiSheet.createDrawingPatriarch(); 
anchor = helper.createClientAnchor(); 
anchor.setCol1(0); 
anchor.setCol2(5); 
anchor.setRow1(0); 
anchor.setRow2(5); 
picture = drawing.createPicture(anchor, headerImageIndex); 
picture.resize(); 

現在的圖像顯示在單元格A1:E5,它是圖像的真實大小。 如果您需要調整大小,我相信您可以將比例傳遞給resize方法。

+0

不錯的工作!現在爲什麼CF沒有那樣做;-)? – Leigh

+0

@李 - 我不知道。我希望Adobe的人們真的能夠更好地思考這些問題。 – Phil

+0

是的。在對第三方圖書館整合的挑戰表示同情之前,我感到猶豫不決,一些基本功能無法使用,或者無法按照預期的方式工作。憤怒通常勝出;-) – Leigh