Как установить шрифт в Excel, используя настраиваемый экспортер данных в Primefaces? - PullRequest
0 голосов
/ 09 октября 2018

Я использую простые лица 6.1.Мне нужно экспортировать мой список отчетов в формат Excel. Для этого я использовал экспортер основных данных. DataExporter предоставляет мне формат Excel.Я также установил шрифт в Excel.Но шрифт не полностью работает в моем файле Excel. Заданный шрифт отображается только в заголовке таблицы.Мой код выглядит так:

public void postProcessXLS(Object document) {
    HSSFWorkbook wb = (HSSFWorkbook) document;
    HSSFSheet sheet = wb.getSheetAt(0);
    HSSFRow header = sheet.getRow(0);

    HSSFCellStyle cellStyle = wb.createCellStyle();  
    cellStyle.setFillForegroundColor(HSSFColor.AQUA.index);
    cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
    HSSFFont fontHeader = (HSSFFont) wb.createFont();
    cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
    fontHeader.setFontName("Magnus Nepali");
    cellStyle.setFont(fontHeader);
    for(int i=0; i < header.getPhysicalNumberOfCells();i++) {
        HSSFCell cell = header.getCell(i);

        cell.setCellStyle(cellStyle);

    }
}

Мой код кнопки:

<p:commandButton id="excel" ajax="false">
    <p:dataExporter type="xls" target="tblReport" fileName="report" postProcessor="#{shareDividendMB.postProcessXLS}" />
</p:commandButton>

Мой формат Excel выглядит следующим образом: enter image description here

Только заголовок листа Excel был изменен на определенный шрифт, а оставшиеся данные имеют шрифт Arial. Я попробовал использовать другой шрифт, и результат такой же.

1 Ответ

0 голосов
/ 09 октября 2018

Наконец-то я получил решение. Мой рабочий код выглядит так:

 public void postProcessXLS(Object document) {
        HSSFWorkbook wb = (HSSFWorkbook) document;
        HSSFSheet sheet = wb.getSheetAt(0);
        HSSFCellStyle cellStyle = wb.createCellStyle();  
        cellStyle.setFillForegroundColor(HSSFColor.AQUA.index);
        cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
        HSSFFont fontHeader = (HSSFFont) wb.createFont();
        cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
        fontHeader.setFontName("Magnus Nepali");
        cellStyle.setFont(fontHeader);
        for (Row row : sheet) {
            for (Cell cell : row) {
                cell.setCellStyle(cellStyle);
            }
        }

    }
...