Java源码示例:org.apache.poi.common.usermodel.HyperlinkType

示例1
/**
 * Construct a new hyperlink
 * 
 * This method is internal to be used only by
 * {@link HSSFCreationHelper#createHyperlink(HyperlinkType)}.
 *
 * @param type the type of hyperlink to create
 */
@Internal(since="3.15 beta 3")
protected HSSFHyperlink( HyperlinkType type )
{
    this.link_type = type;
    record = new HyperlinkRecord();
    switch(type){
        case URL:
        case EMAIL:
            record.newUrlLink();
            break;
        case FILE:
            record.newFileLink();
            break;
        case DOCUMENT:
            record.newDocumentLink();
            break;
        default:
            throw new IllegalArgumentException("Invalid type: " + type);
    }
}
 
示例2
private static HyperlinkType getType(HyperlinkRecord record) {
    HyperlinkType link_type;
    // Figure out the type
    if (record.isFileLink()) {
        link_type = HyperlinkType.FILE;
    } else if(record.isDocumentLink()) {
        link_type = HyperlinkType.DOCUMENT;
    } else {
        if(record.getAddress() != null &&
                record.getAddress().startsWith("mailto:")) {
            link_type = HyperlinkType.EMAIL;
        } else {
            link_type = HyperlinkType.URL;
        }
    }
    return link_type;
}
 
示例3
@Override
protected void setupCell(final Cell cell, final Optional<URI> cellValue) throws TypeBindException {
    
    // 既存のハイパーリンクを削除
    // 削除しないと、Excelの見た目上はリンクは変わっているが、データ上は2重にリンクが設定されている。
    cell.removeHyperlink();
    
    if(cellValue.isPresent()) {
        final CreationHelper helper = cell.getSheet().getWorkbook().getCreationHelper();
        final Hyperlink link = helper.createHyperlink(HyperlinkType.URL);
        link.setAddress(cellValue.get().toString());
        cell.setHyperlink(link);
        
        cell.setCellValue(cellValue.get().toString());
        
    } else {
        cell.setCellType(CellType.BLANK);
    }
    
}
 
示例4
@Override
protected void setupCell(final Cell cell, final Optional<CellLink> cellValue) throws TypeBindException {
    
    // 既存のハイパーリンクを削除
    // 削除しないと、Excelの見た目上はリンクは変わっているが、データ上は2重にリンクが設定されている。
    cell.removeHyperlink();
    
    if(cellValue.isPresent()) {
        final CreationHelper helper = cell.getSheet().getWorkbook().getCreationHelper();
        final HyperlinkType type = POIUtils.judgeLinkType(cellValue.get().getLink());
        final Hyperlink link = helper.createHyperlink(type);
        link.setAddress(cellValue.get().getLink());
        cell.setHyperlink(link);
        
        cell.setCellValue(cellValue.get().getLabel());
        
    } else {
        cell.setCellType(CellType.BLANK);
    }
    
}
 
示例5
public String getFormula2(Point point, Cell cell) {

            if(Utils.equals(comment, "空文字")) {
                return null;

            }

            // ダミーでリンクも設定する
            final CreationHelper helper = cell.getSheet().getWorkbook().getCreationHelper();
            final Hyperlink link = helper.createHyperlink(HyperlinkType.URL);
            link.setAddress(comment);
            cell.setHyperlink(link);

            final int rowNumber = point.y + 1;
            return String.format("HYPERLINK(D%s,\"リンク\"&A%s)", rowNumber, rowNumber);
        }
 
示例6
@Override
public void afterCellDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder,
    List<CellData> cellDataList, Cell cell, Head head, Integer relativeRowIndex, Boolean isHead) {
    // 这里可以对cell进行任何操作
    LOGGER.info("第{}行,第{}列写入完成。", cell.getRowIndex(), cell.getColumnIndex());
    if (isHead && cell.getColumnIndex() == 0) {
        CreationHelper createHelper = writeSheetHolder.getSheet().getWorkbook().getCreationHelper();
        Hyperlink hyperlink = createHelper.createHyperlink(HyperlinkType.URL);
        hyperlink.setAddress("https://github.com/alibaba/easyexcel");
        cell.setHyperlink(hyperlink);
    }
}
 
示例7
private Cell setLink(Td td, Row currentRow, HyperlinkType hyperlinkType) {
    if (StringUtil.isBlank(td.getContent())) {
        return currentRow.createCell(td.getCol());
    }
    if (createHelper == null) {
        createHelper = workbook.getCreationHelper();
    }
    Cell cell = currentRow.createCell(td.getCol(), CellType.STRING);
    cell.setCellValue(td.getContent());
    Hyperlink link = createHelper.createHyperlink(hyperlinkType);
    link.setAddress(td.getLink());
    cell.setHyperlink(link);
    return cell;
}
 
示例8
private Hyperlink setAttachmentURLLinks(SignupAttachment attach) {
	Hyperlink hsHyperlink = wb.getCreationHelper().createHyperlink(HyperlinkType.URL);
	String link = this.sakaiFacade.getServerConfigurationService().getServerUrl()
			+ attach.getLocation();
	hsHyperlink.setAddress(link);
	hsHyperlink.setLabel(attach.getFilename());
	return hsHyperlink;
}
 
示例9
public ExcelCell link(String url, String label) {
    final CreationHelper creationHelper = row().sheet().workbook().poiWorkbook().getCreationHelper();
    final Hyperlink hl = creationHelper.createHyperlink(HyperlinkType.URL);
    hl.setAddress(url);
    hl.setLabel(label);
    currentCell.setCellValue(label);
    currentCell.setHyperlink(hl);
    style(LINK);
    return this;
}
 
示例10
private Hyperlink setAttachmentURLLinks(SignupAttachment attach) {
	Hyperlink hsHyperlink = wb.getCreationHelper().createHyperlink(HyperlinkType.URL);
	String link = this.sakaiFacade.getServerConfigurationService().getServerUrl()
			+ attach.getLocation();
	hsHyperlink.setAddress(link);
	hsHyperlink.setLabel(attach.getFilename());
	return hsHyperlink;
}
 
示例11
/**
 * リンクのアドレスを判定する。
 * @param linkAddress リンクのアドレス(URL)
 * @return 不明な場合は{@link HyperlinkType#NONE}を返す。
 * @throws IllegalArgumentException linkAddress が空文字の場合。
 */
public static HyperlinkType judgeLinkType(final String linkAddress) {

    ArgUtils.notEmpty(linkAddress, "linkAddress");

    if(linkAddress.matches(".*![\\p{Alnum}]+")) {
        // !A1のアドレスを含むかどうか
        return HyperlinkType.DOCUMENT;

    } else if(linkAddress.matches("[\\p{Alpha}]+[0-9]+")) {
        // A1の通常のアドレスの形式
        return HyperlinkType.DOCUMENT;

    } else if(linkAddress.matches("[email protected]+")) {
        // @を含むかどうか
        return HyperlinkType.EMAIL;

    } else if(linkAddress.matches("[\\p{Alpha}]+://.+")) {
        // プロトコル付きかどうか
        return HyperlinkType.URL;

    } else if(linkAddress.matches(".+\\.[\\p{Alnum}]+")) {
        // 拡張子付きかどうか
        return HyperlinkType.FILE;

    } else {
        return HyperlinkType.NONE;
    }

}
 
示例12
@Override
public HSSFHyperlink createHyperlink(HyperlinkType type) {
    return new HSSFHyperlink(type);
}
 
示例13
/**
 * 创建单元格
 *
 * @param td         td
 * @param sheet      sheet
 * @param currentRow 当前行
 */
protected void createCell(Td td, Sheet sheet, Row currentRow) {
    Cell cell;
    if (td.isFormula()) {
        cell = currentRow.createCell(td.getCol(), CellType.FORMULA);
        cell.setCellFormula(td.getContent());
    } else {
        String content = td.getContent();
        switch (td.getTdContentType()) {
            case STRING:
                cell = currentRow.createCell(td.getCol(), CellType.STRING);
                cell.setCellValue(content);
                break;
            case DOUBLE:
                cell = currentRow.createCell(td.getCol(), CellType.NUMERIC);
                if (null != content) {
                    cell.setCellValue(Double.parseDouble(content));
                }
                break;
            case DATE:
                cell = currentRow.createCell(td.getCol());
                if (td.getDate() != null) {
                    cell.setCellValue(td.getDate());
                } else if (td.getLocalDateTime() != null) {
                    cell.setCellValue(td.getLocalDateTime());
                } else if (td.getLocalDate() != null) {
                    cell.setCellValue(td.getLocalDate());
                }
                break;
            case BOOLEAN:
                cell = currentRow.createCell(td.getCol(), CellType.BOOLEAN);
                if (null != content) {
                    cell.setCellValue(Boolean.parseBoolean(content));
                }
                break;
            case NUMBER_DROP_DOWN_LIST:
                cell = currentRow.createCell(td.getCol(), CellType.NUMERIC);
                String firstEle = setDropDownList(td, sheet, content);
                if (firstEle != null) {
                    cell.setCellValue(Double.parseDouble(firstEle));
                }
                break;
            case BOOLEAN_DROP_DOWN_LIST:
                cell = currentRow.createCell(td.getCol(), CellType.BOOLEAN);
                firstEle = setDropDownList(td, sheet, content);
                if (firstEle != null) {
                    cell.setCellValue(Boolean.parseBoolean(firstEle));
                }
                break;
            case DROP_DOWN_LIST:
                cell = currentRow.createCell(td.getCol(), CellType.STRING);
                firstEle = setDropDownList(td, sheet, content);
                if (firstEle != null) {
                    cell.setCellValue(firstEle);
                }
                break;
            case LINK_URL:
                cell = setLink(td, currentRow, HyperlinkType.URL);
                break;
            case LINK_EMAIL:
                cell = setLink(td, currentRow, HyperlinkType.EMAIL);
                break;
            case IMAGE:
                cell = currentRow.createCell(td.getCol());
                setImage(td, sheet);
                break;
            default:
                cell = currentRow.createCell(td.getCol(), CellType.STRING);
                cell.setCellValue(content);
                break;
        }
    }

    // 设置单元格样式
    this.setCellStyle(currentRow, cell, td);
    if (td.getCol() != td.getColBound()) {
        for (int j = td.getCol() + 1, colBound = td.getColBound(); j <= colBound; j++) {
            cell = currentRow.createCell(j);
            this.setCellStyle(currentRow, cell, td);
        }
    }
    if (td.getColSpan() > 0 || td.getRowSpan() > 0) {
        sheet.addMergedRegion(new CellRangeAddress(td.getRow(), td.getRowBound(), td.getCol(), td.getColBound()));
    }
}
 
示例14
private static Optional<PptVariable> parseHyperlinkVariale(Hyperlink<?, ?> link) {
	if(link != null && link.getTypeEnum() == HyperlinkType.URL) {
		return PptParser.parse(link.getAddress());
	}
	return Optional.empty();
}
 
示例15
@Test
public void testJudgeLinkType() {
    
    assertThat(POIUtils.judgeLinkType("!A1"), is(HyperlinkType.DOCUMENT));
    assertThat(POIUtils.judgeLinkType("Sheet(a)!A1"), is(HyperlinkType.DOCUMENT));
    
    assertThat(POIUtils.judgeLinkType("[email protected]"), is(HyperlinkType.EMAIL));
    assertThat(POIUtils.judgeLinkType("mailto:[email protected]"), is(HyperlinkType.EMAIL));
    
    assertThat(POIUtils.judgeLinkType("http://sample.co.jp/"), is(HyperlinkType.URL));
    assertThat(POIUtils.judgeLinkType("http://sample.co.jp/?name1=1&name2=2"), is(HyperlinkType.URL));
    
    assertThat(POIUtils.judgeLinkType("sample.xls"), is(HyperlinkType.FILE));
    assertThat(POIUtils.judgeLinkType("../sample.xls"), is(HyperlinkType.FILE));
    
}
 
示例16
/**
 * Creates a new Hyperlink, of the given type
 */
Hyperlink createHyperlink(HyperlinkType type);
 
示例17
/**
 * Return the type of this hyperlink
 *
 * @return the type of this hyperlink
 */
@Override
public HyperlinkType getTypeEnum() {
    return link_type;
}