2016-04-06 9 views
1

У меня есть требование, чтобы создать лист преуспеть в JAVA, как показано ниже:Apache POI: Excel сводной таблицы - Строка Этикетка

enter image description here

Я не в состоянии создать метку строки с несколькими столбцами бок о бок (фильтры меню и подменю).

Вместо того, чтобы отображать подменю в разных столбцах, он находится под столбцом меню.

Ниже приведен фрагмент кода, который я написал:

XSSFSheet sheet = my_xlsx_workbook.getSheetAt(0); 
    AreaReference a=new AreaReference("A1:G7"); 
    CellReference b=new CellReference("I5"); 
    XSSFPivotTable pivotTable = sheet.createPivotTable(a,b); 
    pivotTable.addReportFilter(0); 
    pivotTable.addReportFilter(1); 
    pivotTable.addRowLabel(2); 
    pivotTable.addRowLabel(3); 
    pivotTable.addColumnLabel(DataConsolidateFunction.SUM, 4, "Sum"); 

Но его получение неправильно отображается, как показано ниже:

enter image description here

Может кто-то пожалуйста, помогите мне?

+0

в разделе «Параметры поворотного стола», выберите «Классическое расположение таблицы поворота» – OldUgly

+0

Не могли бы вы рассказать немного больше, пожалуйста? Я новичок в API poi. –

+0

Я давал вам, как изменить его в Excel. Макро-рекордер показывает, что вы хотите «pivotTable.InGridDropZones = True» и «pivotTable.RowAxisLayout xlTabularRow' – OldUgly

ответ

3

Поскольку формат XML, легко проверить, что необходимо. Распакуйте Zip xlsx и посмотрите в /xl/pivotTables/pivotTable1.xml.

Затем: https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFPivotTable.html#getCTPivotTableDefinition%28%29 и http://grepcode.com/file/repo1.maven.org/maven2/org.apache.poi/ooxml-schemas/1.1/org/openxmlformats/schemas/spreadsheetml/x2006/main/CTPivotTableDefinition.java.

AreaReference a=new AreaReference(new CellReference("A1"), new CellReference("E7")); 
    CellReference b=new CellReference("I5"); 
    XSSFPivotTable pivotTable = sheet.createPivotTable(a,b); 
    pivotTable.addReportFilter(0); 
    pivotTable.addReportFilter(1); 
    pivotTable.addRowLabel(2); 

pivotTable.getCTPivotTableDefinition().getPivotFields().getPivotFieldArray(2).setOutline(false); 

    pivotTable.addRowLabel(3); 
    pivotTable.addColumnLabel(DataConsolidateFunction.SUM, 4, "Sum"); 

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

  • Нет связанных вопросов^_^