2015-05-26 6 views
4

Как добавить ярлык Colum с помощью Apache POI 3.12.Apache POI Добавить ярлык столбца

Name Team Country Player Status 

a fcb z active 

b rm z injured 

c fcb z active 

d rm z injured 

e am z banned 

f rcb z banned 

g rm y injured 

h am y active 

i am y active 

Сведения о сводной информации: метка строки - страна. (Работает отлично) Колум Label - Team (Невозможно добавить это с помощью POI) Report Filter - Статус игрока (работает отлично) & значения - Граф Название (работает отлично) функция

Всякий раз, когда я использую addColumLabel() используемый столбец добавляется к значениям! Должен ли я использовать функцию addDataColumn(), если да, то как ее использовать?

+0

Не могли бы вы отправить код, который вы пытаетесь, который не работает? – Gagravarr

+1

Я не знаю точно, какую функцию использовать! Я использую функцию addColumLabel(), но это, кажется, добавляет числа только к части «Значения» точки поворота. Я не могу добавить Colums в «Column Label». – anchreg

+0

Должен ли я использовать функцию addDataColumn? У меня нет документации о том, что должна делать эта функция, а документация в Apache-POI тоже не говорит! – anchreg

ответ

7

Я переписываю метод addDataColumn, как показано ниже, и он может правильно добавлять столбцы Label.

public static void addColumLabels(XSSFPivotTable pivotTable, int columnIndex) { 
    AreaReference pivotArea = getPivotArea(pivotTable); 
    int lastColIndex = pivotArea.getLastCell().getCol() - pivotArea.getFirstCell().getCol(); 

    if (columnIndex > lastColIndex && columnIndex < 0) { 
     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 <= lastColIndex; i++) { 
     items.addNewItem().setT(STItemType.DEFAULT); 
    } 
    items.setCount(items.sizeOfItemArray()); 
    pivotFields.setPivotFieldArray(columnIndex, pivotField); 

    // colfield should be added for the second one. 
    CTColFields colFields; 
    if (pivotTable.getCTPivotTableDefinition().getColFields() != null) { 
     colFields = pivotTable.getCTPivotTableDefinition().getColFields(); 
    } else { 
     colFields = pivotTable.getCTPivotTableDefinition().addNewColFields(); 
    } 
    colFields.addNewField().setX(columnIndex); 
    colFields.setCount(colFields.sizeOfFieldArray()); 
} 
+0

Проверено это решение. – user1361991

+0

Это сработало как шарм –

+0

Спасибо, это сработало хорошо! –

Смежные вопросы