簡體   English   中英

在Primefaces Extensions Custom Exporter上工作

[英]Work at Primefaces Extensions Custom Exporter

我的網頁上有一些dataTables,我想全部導出到excel文件,例如網頁圖片:

網頁和文件Excel導出

我想導出頁中顯示的頁腳。 我嘗試使用具有boolean屬性的render和exportable,但是沒有辦法。 這種行為的原因可能是什么?

我使用customExport,執行鏈接到“自定義導出器的步驟”上的步驟調試代碼時,我看到在文檔導出器上創建頁腳的模式,該模式不包含可導出標簽(isExportable())。 在類ExcelCustomExporter的方法“ tableColumnGroup(Sheet sheet,DataTable table,String facetType){”中,我需要添加一個if:“ if(column.isExportable()){”以創建一個單元格並為其添加值,如果以相同的方式在for(i ++)方法中使用來增加變量,則使用另一種方法; 只有if是true時,我才能創建單元格,添加值並增加變量i。

參見下面修改的代碼:

protected void tableColumnGroup(Sheet sheet, DataTable table, String facetType) {
    ColumnGroup cg = table.getColumnGroup(facetType);
    List<UIComponent> headerComponentList = null;
    if (cg != null) {
        headerComponentList = cg.getChildren();
    }
    if (headerComponentList != null) {
        for (UIComponent component : headerComponentList) { 
            if (component instanceof org.primefaces.component.row.Row) {
                org.primefaces.component.row.Row row = (org.primefaces.component.row.Row) component;
                int sheetRowIndex = sheet.getLastRowNum() + 1;
                Row xlRow = sheet.createRow(sheetRowIndex);
                int i = 0;
                for (UIComponent rowComponent : row.getChildren()) {
                    UIColumn column = (UIColumn) rowComponent;
                    String value = null;
                    if (facetType.equalsIgnoreCase("header")) {
                        value = column.getHeaderText();
                    } else {
                        value = column.getFooterText();

                    }
                    int rowSpan = column.getRowspan();
                    int colSpan = column.getColspan();

                    Cell cell = xlRow.getCell(i);

                    if (rowSpan > 1 || colSpan > 1) {
                        if (rowSpan > 1) {
                            cell = xlRow.createCell((short) i);
                            Boolean rowSpanFlag = false;
                            for (int j = 0; j < sheet.getNumMergedRegions(); j++) {
                                CellRangeAddress merged = sheet.getMergedRegion(j);
                                if (merged.isInRange(sheetRowIndex, i)) {
                                    rowSpanFlag = true;
                                }

                            }
                            if (!rowSpanFlag) {
                                cell.setCellValue(value);
                                cell.setCellStyle(facetStyle);
                                sheet.addMergedRegion(new CellRangeAddress(
                                        sheetRowIndex, //first row (0-based)
                                        sheetRowIndex + (rowSpan - 1), //last row  (0-based)
                                        i, //first column (0-based)
                                        i  //last column  (0-based)
                                ));
                            }
                        }
                        if (colSpan > 1) {
                            cell = xlRow.createCell((short) i);

                            for (int j = 0; j < sheet.getNumMergedRegions(); j++) {
                                CellRangeAddress merged = sheet.getMergedRegion(j);
                                if (merged.isInRange(sheetRowIndex, i)) {
                                    cell = xlRow.createCell((short) ++i);
                                }
                            }
                            cell.setCellValue(value);
                            cell.setCellStyle(facetStyle);
                            sheet.addMergedRegion(new CellRangeAddress(
                                    sheetRowIndex, //first row (0-based)
                                    sheetRowIndex, //last row  (0-based)
                                    i, //first column (0-based)
                                    i + (colSpan - 1)  //last column  (0-based)
                            ));
                            i = i + colSpan - 1;
                        }
                    } else {
                        //TODO TRATAR E VERIRIFICAR SE  O VALUE PODE SER EXIBIDO
                        if (column.isExportable()) {
                            cell = xlRow.createCell((short) i);
                            for (int j = 0; j < sheet.getNumMergedRegions(); j++) {
                                CellRangeAddress merged = sheet.getMergedRegion(j);
                                if (merged.isInRange(sheetRowIndex, i)) {
                                    cell = xlRow.createCell((short) ++i);
                                }
                            }
                            cell.setCellValue(value);
                            cell.setCellStyle(facetStyle);
                        }    
                    }
                    if (column.isExportable()) {
                        i++;
                    }   
                }
            }

        }

    }

暫存,但JAN到MAY:

出口商定制-頁腳確定

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM