Java 类org.apache.poi.ss.usermodel.Drawing 实例源码
项目:Gargoyle
文件:FxExcelUtil.java
/**
* @작성자 : KYJ
* @작성일 : 2016. 9. 9.
* @param sheet
* @throws Exception
*/
final static void createDefaultLogo(Sheet sheet) throws Exception {
Workbook workbook = sheet.getWorkbook();
byte[] defaultLogoImage = getDefaultLogoImage();
if(defaultLogoImage == null)
return;
int pictureIdx = workbook.addPicture(defaultLogoImage, Workbook.PICTURE_TYPE_PNG);
CreationHelper creationHelper = workbook.getCreationHelper();
ClientAnchor anchor = creationHelper.createClientAnchor(); //new XSSFClientAnchor();
// anchor.setAnchorType(AnchorType.MOVE_DONT_RESIZE);
Drawing createDrawingPatriarch = sheet.createDrawingPatriarch();
anchor.setDx1(0);
anchor.setCol1(0);
anchor.setRow1(0);
//#1 테이블 셀의 너비에 의존적이지않게 사이즈조절.
anchor.setAnchorType(AnchorType.MOVE_DONT_RESIZE);
Picture createPicture = createDrawingPatriarch.createPicture(anchor, pictureIdx);
//#2 테이블 셀의 너비에 의존적이지않게 사이즈조절.
createPicture.resize();
}
项目:turnus
文件:PoiUtils.java
/**
* See the comment for the given cell
*
* @param cell
* the cell
* @param message
* the comment message
*/
public static void setComment(HSSFCell cell, String message) {
Drawing drawing = cell.getSheet().createDrawingPatriarch();
CreationHelper factory = cell.getSheet().getWorkbook().getCreationHelper();
// When the comment box is visible, have it show in a 1x3 space
ClientAnchor anchor = factory.createClientAnchor();
anchor.setCol1(cell.getColumnIndex());
anchor.setCol2(cell.getColumnIndex() + 1);
anchor.setRow1(cell.getRowIndex());
anchor.setRow2(cell.getRowIndex() + 1);
anchor.setDx1(100);
anchor.setDx2(1000);
anchor.setDy1(100);
anchor.setDy2(1000);
// Create the comment and set the text+author
Comment comment = drawing.createCellComment(anchor);
RichTextString str = factory.createRichTextString(message);
comment.setString(str);
comment.setAuthor("TURNUS");
// Assign the comment to the cell
cell.setCellComment(comment);
}
项目:poix
文件:ExcelChartBuildService.java
/**
* 构建多个图形对象
* @param dataSourceSheet
* @param tragetSheet
* @param graphList
*/
private static void buildExcelChart(Sheet dataSourceSheet, Sheet tragetSheet,
List<ExcelGraph> graphList) {
int len = graphList.size();
if (len == 1) {
buildExcelChart(dataSourceSheet, tragetSheet, graphList.get(0));
} else {
int drawStart = 0;
int drawEnd = 20;
Drawing drawing = tragetSheet.createDrawingPatriarch();
for (int i = 0; i < len; i++) {
ExcelGraph graph = graphList.get(i);
ClientAnchor anchor = drawing.createAnchor(0, 0, 0, 0, 0, drawStart, 15, drawEnd);
buildExcelChart(drawing, anchor, dataSourceSheet, graph);
drawStart = drawStart + drawEnd;
drawEnd = drawEnd + drawEnd;
}
}
}
项目:easypoi
文件:ExcelExportBase.java
/**
* 创建List之后的各个Cells
*
* @param styles
*/
public void createListCells(Drawing patriarch, int index, int cellNum, Object obj,
List<ExcelExportEntity> excelParams, Sheet sheet, Workbook workbook)
throws Exception {
ExcelExportEntity entity;
Row row;
if (sheet.getRow(index) == null) {
row = sheet.createRow(index);
row.setHeight(getRowHeight(excelParams));
} else {
row = sheet.getRow(index);
}
for (int k = 0, paramSize = excelParams.size(); k < paramSize; k++) {
entity = excelParams.get(k);
Object value = getCellValue(entity, obj);
if (entity.getType() == 1) {
createStringCell(row, cellNum++, value == null ? "" : value.toString(),
row.getRowNum() % 2 == 0 ? getStyles(false, entity) : getStyles(true, entity),
entity);
} else {
createImageCell(patriarch, entity, row, cellNum++,
value == null ? "" : value.toString(), obj);
}
}
}
项目:read-open-source-code
文件:ExcelWriterStep.java
private Comment createCellComment(String author, String comment) {
// comments only supported for XLSX
if (data.sheet instanceof XSSFSheet) {
CreationHelper factory = data.wb.getCreationHelper();
Drawing drawing = data.sheet.createDrawingPatriarch();
ClientAnchor anchor = factory.createClientAnchor();
Comment cmt = drawing.createCellComment(anchor);
RichTextString str = factory.createRichTextString(comment);
cmt.setString(str);
cmt.setAuthor(author);
return cmt;
}
return null;
}
项目:kettle-4.4.0-stable
文件:ExcelWriterStep.java
private Comment createCellComment(String author, String comment) {
// comments only supported for XLSX
if (data.sheet instanceof XSSFSheet) {
CreationHelper factory = data.wb.getCreationHelper();
Drawing drawing = data.sheet.createDrawingPatriarch();
ClientAnchor anchor = factory.createClientAnchor();
Comment cmt = drawing.createCellComment(anchor);
RichTextString str = factory.createRichTextString(comment);
cmt.setString(str);
cmt.setAuthor(author);
return cmt;
}
return null;
}
项目:kettle-trunk
文件:ExcelWriterStep.java
private Comment createCellComment(String author, String comment) {
// comments only supported for XLSX
if (data.sheet instanceof XSSFSheet) {
CreationHelper factory = data.wb.getCreationHelper();
Drawing drawing = data.sheet.createDrawingPatriarch();
ClientAnchor anchor = factory.createClientAnchor();
Comment cmt = drawing.createCellComment(anchor);
RichTextString str = factory.createRichTextString(comment);
cmt.setString(str);
cmt.setAuthor(author);
return cmt;
}
return null;
}
项目:pentaho-kettle
文件:ExcelWriterStep.java
private Comment createCellComment( String author, String comment ) {
// comments only supported for XLSX
if ( data.sheet instanceof XSSFSheet ) {
CreationHelper factory = data.wb.getCreationHelper();
Drawing drawing = data.sheet.createDrawingPatriarch();
ClientAnchor anchor = factory.createClientAnchor();
Comment cmt = drawing.createCellComment( anchor );
RichTextString str = factory.createRichTextString( comment );
cmt.setString( str );
cmt.setAuthor( author );
return cmt;
}
return null;
}
项目:PoiExcelExport
文件:ExcelExportService.java
/**
* 抽象出图片生成业务代码
*
* @throws IOException
*/
private void extractPicturePortion(String svgString, XSSFWorkbook wb,
XSSFSheet sheet, int startCol, int endCol, int startRow, int endRow)
throws IOException {
// 图片
if (org.apache.commons.lang3.StringUtils.isNotBlank(svgString)) {
byte[] safeDataBytes = new BASE64Decoder().decodeBuffer(svgString);
int pictureIdx = wb.addPicture(safeDataBytes,
Workbook.PICTURE_TYPE_JPEG);
CreationHelper helper = wb.getCreationHelper();
// Create the drawing patriarch. This is the top level container for
// all shapes.
Drawing drawing = sheet.createDrawingPatriarch();
// add a picture shape
ClientAnchor anchor = helper.createClientAnchor();
// set top-left corner of the picture,
// subsequent call of Picture#resize() will operate relative to it
anchor.setCol1(startCol);
anchor.setCol2(endCol);
anchor.setRow1(startRow);
anchor.setRow2(endRow);
anchor.setDx1(0);
anchor.setDy1(0);
anchor.setDx2(0);
anchor.setDy2(0);
anchor.setAnchorType(ClientAnchor.MOVE_DONT_RESIZE);
Picture pict = drawing.createPicture(anchor, pictureIdx);
pict.resize(1);
}
}
项目:PoiExcelExport2.0
文件:ExcelExportService.java
/**
* 抽象出图片生成业务代码
*
* @throws IOException
*/
private void extractPicturePortion(String svgString, XSSFWorkbook wb,
XSSFSheet sheet, int startCol, int endCol, int startRow, int endRow)
throws IOException {
// 图片
if (org.apache.commons.lang3.StringUtils.isNotBlank(svgString)) {
byte[] safeDataBytes = new BASE64Decoder().decodeBuffer(svgString);
int pictureIdx = wb.addPicture(safeDataBytes,
Workbook.PICTURE_TYPE_JPEG);
CreationHelper helper = wb.getCreationHelper();
// Create the drawing patriarch. This is the top level container for
// all shapes.
Drawing drawing = sheet.createDrawingPatriarch();
// add a picture shape
ClientAnchor anchor = helper.createClientAnchor();
// set top-left corner of the picture,
// subsequent call of Picture#resize() will operate relative to it
anchor.setCol1(startCol);
anchor.setCol2(endCol);
anchor.setRow1(startRow);
anchor.setRow2(endRow);
anchor.setDx1(0);
anchor.setDy1(0);
anchor.setDx2(0);
anchor.setDy2(0);
anchor.setAnchorType(ClientAnchor.MOVE_DONT_RESIZE);
Picture pict = drawing.createPicture(anchor, pictureIdx);
pict.resize(1);
}
}
项目:poix
文件:ExcelExportBase.java
/**
* 创建List之后的各个Cells
* @param patriarch
* @param index
* @param cellNum
* @param obj
* @param excelParams
* @param sheet
* @param workbook
* @throws Exception
*/
public void createListCells(Drawing patriarch, int index, int cellNum, Object obj,
List<ExcelExportEntity> excelParams, Sheet sheet,
Workbook workbook) throws Exception {
ExcelExportEntity entity;
Row row;
if (sheet.getRow(index) == null) {
row = sheet.createRow(index);
row.setHeight(getRowHeight(excelParams));
} else {
row = sheet.getRow(index);
}
for (int k = 0, paramSize = excelParams.size(); k < paramSize; k++) {
entity = excelParams.get(k);
Object value = getCellValue(entity, obj);
if (entity.getType() == BaseEntityTypeConstants.StringType) {
createStringCell(row, cellNum++, value == null ? "" : value.toString(),
row.getRowNum() % 2 == 0 ? getStyles(false, entity) : getStyles(true, entity),
entity);
if (entity.isHyperlink()) {
row.getCell(cellNum - 1)
.setHyperlink(dataHanlder.getHyperlink(
row.getSheet().getWorkbook().getCreationHelper(), obj, entity.getName(),
value));
}
} else if (entity.getType() == BaseEntityTypeConstants.DoubleType) {
createDoubleCell(row, cellNum++, value == null ? "" : value.toString(),
index % 2 == 0 ? getStyles(false, entity) : getStyles(true, entity), entity);
if (entity.isHyperlink()) {
row.getCell(cellNum - 1)
.setHyperlink(dataHanlder.getHyperlink(
row.getSheet().getWorkbook().getCreationHelper(), obj, entity.getName(),
value));
}
} else {
createImageCell(patriarch, entity, row, cellNum++,
value == null ? "" : value.toString(), obj);
}
}
}
项目:poix
文件:ExcelExportOfTemplateUtil.java
/**
* 往Sheet 填充正常数据,根据表头信息 使用导入的部分逻辑,坐对象映射
*
* @param sheet
* @param pojoClass
* @param dataSet
* @param workbook
*/
private void addDataToSheet(Class<?> pojoClass, Collection<?> dataSet, Sheet sheet,
Workbook workbook) throws Exception {
if (workbook instanceof XSSFWorkbook) {
super.type = ExcelType.XSSF;
}
// 获取表头数据
Map<String, Integer> titlemap = getTitleMap(sheet);
Drawing patriarch = sheet.createDrawingPatriarch();
// 得到所有字段
Field[] fileds = PoiPublicUtil.getClassFields(pojoClass);
ExcelTarget etarget = pojoClass.getAnnotation(ExcelTarget.class);
String targetId = null;
if (etarget != null) {
targetId = etarget.value();
}
// 获取实体对象的导出数据
List<ExcelExportEntity> excelParams = new ArrayList<ExcelExportEntity>();
getAllExcelField(null, targetId, fileds, excelParams, pojoClass, null);
// 根据表头进行筛选排序
sortAndFilterExportField(excelParams, titlemap);
short rowHeight = getRowHeight(excelParams);
int index = teplateParams.getHeadingRows() + teplateParams.getHeadingStartRow(),
titleHeight = index;
//下移数据,模拟插入
sheet.shiftRows(teplateParams.getHeadingRows() + teplateParams.getHeadingStartRow(),
sheet.getLastRowNum(), getShiftRows(dataSet, excelParams), true, true);
if (excelParams.size() == 0) {
return;
}
Iterator<?> its = dataSet.iterator();
while (its.hasNext()) {
Object t = its.next();
index += createCells(patriarch, index, t, excelParams, sheet, workbook, rowHeight);
}
// 合并同类项
mergeCells(sheet, excelParams, titleHeight);
}
项目:poix
文件:ExcelChartBuildService.java
/**
* 构建图形对象
* @param dataSourceSheet
* @param tragetSheet
* @param graph
*/
private static void buildExcelChart(Sheet dataSourceSheet, Sheet tragetSheet,
ExcelGraph graph) {
Drawing drawing = tragetSheet.createDrawingPatriarch();
ClientAnchor anchor = drawing.createAnchor(0, 0, 0, 0, 0, 0, 15, 20);
buildExcelChart(drawing, anchor, dataSourceSheet, graph);
}
项目:easypoi
文件:ExcelExportOfTemplateUtil.java
/**
* 往Sheet 填充正常数据,根据表头信息 使用导入的部分逻辑,坐对象映射
*
* @param teplateParams
* @param pojoClass
* @param dataSet
* @param workbook
*/
private void addDataToSheet(Class<?> pojoClass, Collection<?> dataSet, Sheet sheet,
Workbook workbook) throws Exception {
if (workbook instanceof XSSFWorkbook) {
super.type = ExcelType.XSSF;
}
// 获取表头数据
Map<String, Integer> titlemap = getTitleMap(sheet);
Drawing patriarch = sheet.createDrawingPatriarch();
// 得到所有字段
Field[] fileds = PoiPublicUtil.getClassFields(pojoClass);
ExcelTarget etarget = pojoClass.getAnnotation(ExcelTarget.class);
String targetId = null;
if (etarget != null) {
targetId = etarget.value();
}
// 获取实体对象的导出数据
List<ExcelExportEntity> excelParams = new ArrayList<ExcelExportEntity>();
getAllExcelField(null, targetId, fileds, excelParams, pojoClass, null);
// 根据表头进行筛选排序
sortAndFilterExportField(excelParams, titlemap);
short rowHeight = getRowHeight(excelParams);
int index = teplateParams.getHeadingRows() + teplateParams.getHeadingStartRow(), titleHeight = index;
//下移数据,模拟插入
sheet.shiftRows(teplateParams.getHeadingRows() + teplateParams.getHeadingStartRow(),
sheet.getLastRowNum(), getShiftRows(dataSet, excelParams), true, true);
if (excelParams.size() == 0) {
return;
}
Iterator<?> its = dataSet.iterator();
while (its.hasNext()) {
Object t = its.next();
index += createCells(patriarch, index, t, excelParams, sheet, workbook, rowHeight);
}
// 合并同类项
mergeCells(sheet, excelParams, titleHeight);
}
项目:swing
文件:Report.java
protected void addChart(HSSFWorkbook workbook, byte[] chart, String name) {
int pictureIndex = workbook.addPicture(chart, HSSFWorkbook.PICTURE_TYPE_PNG);
HSSFSheet sheet = workbook.createSheet(name);
addTitle(sheet, name, 0);
Drawing drawing = sheet.createDrawingPatriarch();
CreationHelper helper = workbook.getCreationHelper();
ClientAnchor anchor = helper.createClientAnchor();
anchor.setRow1(1);
anchor.setCol1(0);
Picture picture = drawing.createPicture(anchor, pictureIndex);
picture.resize();
}
项目:Aspose_for_Apache_POI
文件:ApacheAddImage.java
public static void main(String[] args) throws Exception
{
String dataPath = "src/featurescomparison/workingwithworkbook/addimages/data/";
//create a new workbook
Workbook wb = new XSSFWorkbook(); //or new HSSFWorkbook();
//add picture data to this workbook.
InputStream is = new FileInputStream(dataPath + "aspose.jpg");
byte[] bytes = IOUtils.toByteArray(is);
int pictureIdx = wb.addPicture(bytes, Workbook.PICTURE_TYPE_JPEG);
is.close();
CreationHelper helper = wb.getCreationHelper();
//create sheet
Sheet sheet = wb.createSheet();
// Create the drawing patriarch. This is the top level container for all shapes.
Drawing drawing = sheet.createDrawingPatriarch();
//add a picture shape
ClientAnchor anchor = helper.createClientAnchor();
//set top-left corner of the picture,
//subsequent call of Picture#resize() will operate relative to it
anchor.setCol1(3);
anchor.setRow1(2);
Picture pict = drawing.createPicture(anchor, pictureIdx);
//auto-size picture relative to its top-left corner
pict.resize();
//save workbook
String file = dataPath + "ApacheImage.xls";
if(wb instanceof XSSFWorkbook) file += "x";
FileOutputStream fileOut = new FileOutputStream(file);
wb.write(fileOut);
fileOut.close();
System.out.println("Done...");
}
项目:gnvc-ims
文件:TagContext.java
/**
* Returns the <code>Sheet's</code> <code>Drawing</code> object, creating it
* if it doesn't exist. It is hoped that this would be replaced by a call
* to <code>getDrawingPatriarch</code> in the POI "ss" package, and that
* that call would NOT corrupt drawings, charts, etc.
* @return A <code>Drawing</code>.
* @since 0.2.0
*/
public Drawing createDrawing()
{
if (myDrawing == null)
{
myDrawing = mySheet.createDrawingPatriarch();
}
return myDrawing;
}
项目:Runway-SDK
文件:ExcelExportSheet.java
protected void writeHeader(Sheet sheet, Drawing drawing, Row nameRow, Row labelRow, int i, ExcelColumn column, CellStyle boldStyle)
{
CreationHelper helper = sheet.getWorkbook().getCreationHelper();
// Notify the listeners
for (ExcelExportListener listener : listeners)
{
listener.preHeader(column);
}
nameRow.createCell(i).setCellValue(helper.createRichTextString(column.getAttributeName()));
Cell cell = labelRow.createCell(i);
cell.setCellValue(helper.createRichTextString(column.getDisplayLabel()));
if (column.isRequired() && boldStyle != null)
{
cell.setCellStyle(boldStyle);
}
if (column.getDescription() != null && column.getDescription().length() > 0)
{
ClientAnchor anchor = helper.createClientAnchor();
anchor.setDx1(0);
anchor.setDy1(0);
anchor.setDx2(0);
anchor.setDy2(0);
anchor.setCol1(0);
anchor.setRow1(0);
anchor.setCol2(0);
anchor.setRow2(4);
Comment comment = drawing.createCellComment(anchor);
comment.setString(helper.createRichTextString(column.getDescription()));
cell.setCellComment(comment);
}
sheet.autoSizeColumn((short) i);
}
项目:easypoi
文件:ExcelExportBase.java
/**
* 创建 最主要的 Cells
*
* @param styles
* @param rowHeight
* @throws Exception
*/
public int createCells(Drawing patriarch, int index, Object t,
List<ExcelExportEntity> excelParams, Sheet sheet, Workbook workbook,
short rowHeight) throws Exception {
ExcelExportEntity entity;
Row row = sheet.createRow(index);
row.setHeight(rowHeight);
int maxHeight = 1, cellNum = 0;
int indexKey = createIndexCell(row, index, excelParams.get(0));
cellNum += indexKey;
for (int k = indexKey, paramSize = excelParams.size(); k < paramSize; k++) {
entity = excelParams.get(k);
if (entity.getList() != null) {
Collection<?> list = getListCellValue(entity, t);
int listC = 0;
for (Object obj : list) {
createListCells(patriarch, index + listC, cellNum, obj, entity.getList(),
sheet, workbook);
listC++;
}
cellNum += entity.getList().size();
if (list != null && list.size() > maxHeight) {
maxHeight = list.size();
}
} else {
Object value = getCellValue(entity, t);
if (entity.getType() == 1) {
createStringCell(row, cellNum++, value == null ? "" : value.toString(),
index % 2 == 0 ? getStyles(false, entity) : getStyles(true, entity), entity);
} else {
createImageCell(patriarch, entity, row, cellNum++,
value == null ? "" : value.toString(), t);
}
}
}
// 合并需要合并的单元格
cellNum = 0;
for (int k = indexKey, paramSize = excelParams.size(); k < paramSize; k++) {
entity = excelParams.get(k);
if (entity.getList() != null) {
cellNum += entity.getList().size();
} else if (entity.isNeedMerge()) {
for (int i = index + 1; i < index + maxHeight; i++) {
sheet.getRow(i).createCell(cellNum);
sheet.getRow(i).getCell(cellNum).setCellStyle(getStyles(false, entity));
}
sheet.addMergedRegion(new CellRangeAddress(index, index + maxHeight - 1, cellNum,
cellNum));
cellNum++;
}
}
return maxHeight;
}
项目:birt
文件:FilteredSheet.java
public Drawing createDrawingPatriarch() {
return sheet.createDrawingPatriarch();
}
项目:birt
文件:PageHandler.java
@Override
public void endPage(HandlerState state, IPageContent page) throws BirtException {
if( EmitterServices.booleanOption( state.getRenderOptions(), page, ExcelEmitter.SINGLE_SHEET, false )
&& ! state.reportEnding ) {
return ;
}
if( EmitterServices.booleanOption( state.getRenderOptions(), page, ExcelEmitter.STRUCTURED_HEADER, false ) ) {
outputStructuredHeaderFooter(state, page.getFooter());
}
String sheetName = prepareSheetName( state );
if( sheetName != null ) {
log.debug("Attempting to name sheet ", ( state.getWb().getNumberOfSheets() - 1 ), " \"", sheetName, "\" ");
int existingSheetIndex = -1;
for( int i = 0; i < state.getWb().getNumberOfSheets() - 1; ++i ) {
if( state.getWb().getSheetName(i).equals(sheetName)) {
log.debug("Found matching sheet at ", i, " \"", state.getWb().getSheetName(i), "\"" );
existingSheetIndex = i;
break;
}
}
if (existingSheetIndex >= 0) {
log.debug("Deleting sheet at ", existingSheetIndex, " \"", state.getWb().getSheetName(existingSheetIndex), "\"" );
state.getWb().removeSheetAt(existingSheetIndex);
}
state.getWb().setSheetName(state.getWb().getNumberOfSheets() - 1, sheetName);
if (existingSheetIndex >= 0) {
state.getWb().setSheetOrder(sheetName,existingSheetIndex);
}
state.sheetName = null;
}
if( state.sheetPassword != null ) {
log.debug("Attempting to protect sheet ", ( state.getWb().getNumberOfSheets() - 1 ) );
state.currentSheet.protectSheet( state.sheetPassword );
state.sheetPassword = null;
}
Drawing drawing = null;
if( ! state.images.isEmpty() ) {
drawing = state.currentSheet.createDrawingPatriarch();
}
for( CellImage cellImage : state.images ) {
processCellImage(state,drawing,cellImage);
}
state.images.clear();
state.rowNum = 0;
state.colNum = 0;
state.clearRowSpans();
state.areaBorders.clear();
state.currentSheet = null;
}
项目:birt
文件:PageHandler.java
/**
* <p>
* Process a CellImage from the images list and place the image on the sheet.
* </p><p>
* This involves changing the row height as necesssary and determining the column spread of the image.
* </p>
* @param cellImage
* The image to be placed on the sheet.
*/
private void processCellImage( HandlerState state, Drawing drawing, CellImage cellImage ) {
Coordinate location = cellImage.location;
Cell cell = state.currentSheet.getRow( location.getRow() ).getCell( location.getCol() );
IImageContent image = cellImage.image;
StyleManagerUtils smu = state.getSmu();
float ptHeight = cell.getRow().getHeightInPoints();
if( image.getHeight() != null ) {
ptHeight = smu.fontSizeInPoints( image.getHeight().toString() );
}
// Get image width
int endCol = cell.getColumnIndex();
double lastColWidth = ClientAnchorConversions.widthUnits2Millimetres( (short)state.currentSheet.getColumnWidth( endCol ) )
+ 2.0;
int dx = smu.anchorDxFromMM( lastColWidth, lastColWidth );
double mmWidth = 0.0;
if( smu.isAbsolute(image.getWidth())) {
mmWidth = image.getWidth().convertTo(DimensionType.UNITS_MM);
} else if(smu.isPixels(image.getWidth())) {
mmWidth = ClientAnchorConversions.pixels2Millimetres( image.getWidth().getMeasure() );
}
// Allow image to span multiple columns
CellRangeAddress mergedRegion = getMergedRegionBegunBy( state.currentSheet, location.getRow(), location.getCol() );
if( (cellImage.spanColumns) || ( mergedRegion != null ) ) {
log.debug( "Image size: ", image.getWidth(), " translates as mmWidth = ", mmWidth );
if( mmWidth > 0) {
double mmAccumulatedWidth = 0;
int endColLimit = cellImage.spanColumns ? 256 : mergedRegion.getLastColumn();
for( endCol = cell.getColumnIndex(); mmAccumulatedWidth < mmWidth && endCol < endColLimit; ++ endCol ) {
lastColWidth = ClientAnchorConversions.widthUnits2Millimetres( (short)state.currentSheet.getColumnWidth( endCol ) )
+ 2.0;
mmAccumulatedWidth += lastColWidth;
log.debug( "lastColWidth = ", lastColWidth, "; mmAccumulatedWidth = ", mmAccumulatedWidth);
}
if( mmAccumulatedWidth > mmWidth ) {
mmAccumulatedWidth -= lastColWidth;
--endCol;
double mmShort = mmWidth - mmAccumulatedWidth;
dx = smu.anchorDxFromMM( mmShort, lastColWidth );
}
}
} else {
float widthRatio = (float)(mmWidth / lastColWidth);
ptHeight = ptHeight / widthRatio;
}
int rowsSpanned = state.findRowsSpanned( cell.getRowIndex(), cell.getColumnIndex() );
float neededRowHeightPoints = ptHeight;
for( int i = 0; i < rowsSpanned; ++i ) {
int rowIndex = cell.getRowIndex() + 1 + i;
neededRowHeightPoints -= state.currentSheet.getRow(rowIndex).getHeightInPoints();
}
if( neededRowHeightPoints > cell.getRow().getHeightInPoints()) {
cell.getRow().setHeightInPoints( neededRowHeightPoints );
}
// ClientAnchor anchor = wb.getCreationHelper().createClientAnchor();
ClientAnchor anchor = state.getWb().getCreationHelper().createClientAnchor();
anchor.setCol1(cell.getColumnIndex());
anchor.setRow1(cell.getRowIndex());
anchor.setCol2(endCol);
anchor.setRow2(cell.getRowIndex() + rowsSpanned);
anchor.setDx2(dx);
anchor.setDy2( smu.anchorDyFromPoints( ptHeight, cell.getRow().getHeightInPoints() ) );
anchor.setAnchorType(ClientAnchor.MOVE_DONT_RESIZE);
drawing.createPicture(anchor, cellImage.imageIdx);
}
项目:excel-streaming-reader
文件:StreamingSheet.java
/**
* Not supported
*/
@Override
public Drawing getDrawingPatriarch() {
throw new UnsupportedOperationException();
}
项目:excel-streaming-reader
文件:StreamingSheet.java
/**
* Not supported
*/
@Override
public Drawing createDrawingPatriarch() {
throw new UnsupportedOperationException();
}
项目:xlsmapper
文件:CellCommentStore.java
/**
* 保持している情報を元に、シートのセルにコメントを設定する。
* @param sheet
* @return POIの設定したコメントオブジェクト。
* @throws IllegalArgumentException sheet is null.
*/
public Comment set(final Sheet sheet) {
ArgUtils.notNull(sheet, "sheet");
final CreationHelper helper = sheet.getWorkbook().getCreationHelper();
final Drawing drawing = sheet.createDrawingPatriarch();
// コメントの位置、サイズの指定
int col1 = column + 1;
int row1 = row;
if(sheet instanceof HSSFSheet) {
// 2003形式の場合は、行の位置をずらす。
row1--;
}
int col2 = col1 + anchor.columnSize;
int row2 = row1 + anchor.rowSize;
final ClientAnchor clientAnchor = drawing.createAnchor(
anchor.dx1, anchor.dy1, anchor.dx2, anchor.dy2,
col1, row1, col2, row2
);
POIUtils.setClientAnchorType(clientAnchor, anchor.type);
final Comment comment = drawing.createCellComment(clientAnchor);
comment.setColumn(column);
comment.setRow(row);
comment.setAuthor(author);
comment.setVisible(visible);
// 装飾を適用する。
final RichTextString richText = helper.createRichTextString(text.text);
if(text.fonts != null) {
for(TextFontStore fontStore : text.fonts) {
if(fontStore.font != null) {
richText.applyFont(fontStore.startIndex, fontStore.endIndex, fontStore.font);
} else {
richText.applyFont(fontStore.startIndex, fontStore.endIndex, fontStore.fontIndex);
}
}
}
comment.setString(richText);
return comment;
}
项目:dataforms
文件:ExcelReport.java
/**
* 描画オブジェクトを取得します。
* @return 描画オブジェクト。
*/
protected Drawing getDrawing() {
return drawing;
}
项目:dataforms
文件:ExcelReport.java
/**
* 描画オブジェクトを設定します。
* @param drawing 描画オブジェクト。
*/
protected void setDrawing(final Drawing drawing) {
this.drawing = drawing;
}
项目:gnvc-ims
文件:TagContext.java
/**
* Returns the <code>Sheet's</code> <code>Drawing</code> object, if it
* exists yet.
* @return A <code>Drawing</code>, or <code>null</code> if it doesn't exist
* yet.
* @since 0.2.0
*/
public Drawing getDrawing()
{
return myDrawing;
}
项目:gnvc-ims
文件:TagContext.java
/**
* Sets the <code>Sheet's</code> <code>Drawing</code> object. This is
* usually used to initialize a <code>TagContext</code> from another
* <code>TagContext</code>, copying the <code>Drawing</code> object.
* @param drawing A <code>Drawing</code>.
* @since 0.2.0
*/
public void setDrawing(Drawing drawing)
{
myDrawing = drawing;
}