Apache POI在excel的单个单元格中不同大小的文本?

时间:2017-09-18 11:10:14

标签: apache-poi

任何人都可以告诉我如何在单个单元格中放置各种大小的文本。比如Tittle的大小为20,Subtitle的大小为16 ..在同一个字符串中使用新的行分隔符。

1 个答案:

答案 0 :(得分:1)

您需要RichTextString。您还需要确保行足够高并且单元格包装文本:

public static void main(String[] args) throws IOException {
    FileInputStream fis = new FileInputStream(FILE_NAME);

    XSSFWorkbook wb = new XSSFWorkbook(fis);
    Sheet sheet = wb.getSheetAt(0);

    Row row = sheet.rowIterator().next();
    Cell cell = row.cellIterator().next();

    XSSFFont font1 = wb.createFont();
    font1.setFontHeight(20);
    font1.setBold(true);
    XSSFFont font2 = wb.createFont();
    font2.setFontHeight(16);
    font2.setBold(false);

    XSSFRichTextString richString = new XSSFRichTextString("Hello,\nWorld!");
    richString.applyFont(0, 6, font1);
    richString.applyFont(6, 13, font2);
    cell.setCellValue(richString);

    CellStyle cs = wb.createCellStyle();
    cs.setWrapText(true);
    cell.setCellStyle(cs);

    row.setHeightInPoints((3*sheet.getDefaultRowHeightInPoints()));

    FileOutputStream fos = new FileOutputStream(FILE_NAME);
    wb.write(fos);

    fos.close();
    wb.close();
    fis.close();
}