Saltar al contenido

¿Insertar etiqueta de columna en la tabla dinámica usando Apache POI?

Este team de redactores ha estado largas horas investigando para dar solución a tu duda, te regalamos la solución y esperamos serte de mucha apoyo.

Solución:

El siguiente método (una versión ligeramente modificada de XSSFPivotTable.addRowLabel) agrega una etiqueta de columna dinámica “normal”:

public static void addColLabel(XSSFPivotTable pivotTable, int columnIndex) 
    AreaReference pivotArea = new AreaReference(pivotTable.getPivotCacheDefinition().getCTPivotCacheDefinition()
            .getCacheSource().getWorksheetSource().getRef());
    int lastRowIndex = pivotArea.getLastCell().getRow() - pivotArea.getFirstCell().getRow();
    int lastColIndex = pivotArea.getLastCell().getCol() - pivotArea.getFirstCell().getCol();

    if (columnIndex > lastColIndex) 
        throw new IndexOutOfBoundsException();
    
    CTPivotFields pivotFields = pivotTable.getCTPivotTableDefinition().getPivotFields();

    CTPivotField pivotField = CTPivotField.Factory.newInstance();
    CTItems items = pivotField.addNewItems();

    pivotField.setAxis(STAxis.AXIS_COL);
    pivotField.setShowAll(false);
    for (int i = 0; i <= lastRowIndex; i++) 
        items.addNewItem().setT(STItemType.DEFAULT);
    
    items.setCount(items.sizeOfItemArray());
    pivotFields.setPivotFieldArray(columnIndex, pivotField);

    CTColFields rowFields;
    if (pivotTable.getCTPivotTableDefinition().getColFields() != null) 
        rowFields = pivotTable.getCTPivotTableDefinition().getColFields();
     else 
        rowFields = pivotTable.getCTPivotTableDefinition().addNewColFields();
    

    rowFields.addNewField().setX(columnIndex);
    rowFields.setCount(rowFields.sizeOfFieldArray());

Valoraciones y reseñas

Si sostienes algún reparo y forma de ascender nuestro reseña eres capaz de dejar una explicación y con gusto lo interpretaremos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *