2016-11-29 6 views
0

можно сортировать (по убыванию) мои отображаемые результаты по выбранному значению, используя этот код:Как скрыть выбранные диапазоны и отсортировать отображаемые результаты (Aspose Cells)?

PivotField field = pivotTable.RowFields[0]; 
field.IsAutoSort = true; 
field.IsAscendSort = false; 
field.AutoSortField = 1; 

Это то, что я вижу (Всего покупки Отображаемые действительно показали от большей к меньшей):

enter image description here

Или можно отобразить только Описание диапазоны которых «Процент Total» значение составляет по меньшей мере 1% с этим кодом:

private void HideItemsWithFewerThan1PercentOfSales() 
{ 
    int FIRST_TOTAL_PRICE_ROW = 8; 
    int ROWS_BETWEEN_PERCENTAGES = 4; 
    var pivot = pivotTableSheet.PivotTables[0]; 
    var dataBodyRange = pivot.DataBodyRange; 
    int currentRowBeingExamined = FIRST_TOTAL_PRICE_ROW; 
    int rowsUsed = dataBodyRange.EndRow; 

    pivot.RefreshData(); 
    pivot.CalculateData(); 

    // Get grand total of purchases for all items and months, and calculate what 1% of that is 
    Cell totalTotalPurchasesCell = pivotTableSheet.Cells[rowsUsed - 2, _grandTotalsColumnPivotTable + 1]; 
    double totalTotalPurchases = Convert.ToDouble(totalTotalPurchasesCell.Value); 
    var onePercentOfTotalPurchases = totalTotalPurchases/100; 

    // Loop through PivotTable data, hiding where percentage < 0.01 (1%) 
    while (currentRowBeingExamined < rowsUsed) 
    { 
     Cell priceCell = pivotTableSheet.Cells[currentRowBeingExamined, _grandTotalsColumnPivotTable + 1]; 
     String priceStr = priceCell.Value.ToString(); 
     Double price = Convert.ToDouble(priceStr); 
     if (price < onePercentOfTotalPurchases) 
     { 
      pivotTableSheet.Cells.HideRows(currentRowBeingExamined - 1, ROWS_BETWEEN_PERCENTAGES); 
     } 
     currentRowBeingExamined = currentRowBeingExamined + ROWS_BETWEEN_PERCENTAGES; 
    } 
} 

... как так:

enter image description here

... но я не могу заставить их обоих работать одновременно. Таким образом, я могу либо скрыть Описания с менее чем 1% от перцента, либо я могу сортировать по суммарным покупкам по убыванию, но я не могу выполнить оба в одно и то же время. Мой код, чтобы попытаться выполнить как выглядит следующим образом:

. . . 
pivotTable.AddFieldToArea(PivotFieldType.Row, DESCRIPTION_COLUMN); 
pivotTable.RowHeaderCaption = "Description"; 

// Dragging the second field to the column area. 
pivotTable.AddFieldToArea(PivotFieldType.Column, MONTHYR_COLUMN); 
pivotTable.ColumnHeaderCaption = "Months"; 

// Dragging the third field to the data area. 
pivotTable.AddFieldToArea(PivotFieldType.Data, TOTALQTY_COLUMN); 
pivotTable.DataFields[0].DisplayName = "Total Packages"; 

pivotTable.AddFieldToArea(PivotFieldType.Data, TOTALPRICE_COLUMN); 
pivotTable.DataFields[1].DisplayName = "Total Purchases"; 
. . . 

// Sort by "Total Purchases" descending 
PivotField field = pivotTable.RowFields[0]; 
field.IsAutoSort = true; 
field.IsAscendSort = false; 
field.AutoSortField = 1; // This is the "Total Purchases" field 

pivotTable.PivotTableStyleType = PivotTableStyleType.PivotTableStyleLight16; 

pivotTable.RefreshDataFlag = true; 
pivotTable.RefreshData(); 
pivotTable.CalculateData(); 
pivotTable.RefreshDataFlag = false; 

List<String> contractItemDescs = GetContractItemDescriptions(); 
ColorizeContractItemBlocks(contractItemDescs); 
HideItemsWithFewerThan1PercentOfSales(); 
FreezePanePivotTable(HEADER_ROW, 2); 
FormatPivotTableNumbers(); 
ConfigureForPrinting(pivotTableSheet.Cells.Rows.Count); 

Это, как если порядок сортировки не соблюдается, когда HideItemsWithFewerThan1PercentOfSales() называется - число строк, что метод «видит» не число строк в соответствии с сортировка, которая была установлена.

Как я могу получить как сортировку, так и скрытие на работе?

ПРИМЕЧАНИЕ: Вызов HideItemsWithFewerThan1PercentOfSales(); до кода сортировки НЕ работает - он все еще показывает/скрывает некоторые из неправильных вещей.

ответ

1

Пожалуйста, проверьте ответ в этом thread в форуме Aspose.Cells.

Примечание: Я работаю евангелиста Developer в Aspose