2016-12-06 8 views
0

у меня был соответствующий вопрос heretofore, и ответ там (довольно много) работает для меня использовать:Как я могу покрасить все связанные строки и столбцы, а не только их подмножество (Aspose Cells)?

pt.ShowInCompactForm(); 

В таблице I генерации, есть блоки элементов, которые охватывают 5 строк - первый строка - это описание, а четыре строки ниже - «под» с подробными данными для этого элемента (а именно «Всего пакетов», «Всего покупок», «Сумма средней цены» и «Процент от общего числа»).

В некоторых случаях, мне нужно раскрасить ячейки в этой области, и я в состоянии сделать это, по большей части, с помощью следующего кода:

private void ColorizeContractItemBlocks(List<string> contractItemDescs) 
{ 
    int FIRST_DESCRIPTION_ROW = 7; 
    int DESCRIPTION_COL = 0; 
    int ROWS_BETWEEN_DESCRIPTIONS = 5; 
    var pivot = pivotTableSheet.PivotTables[0]; 
    var dataBodyRange = pivot.DataBodyRange; 
    int currentRowBeingExamined = FIRST_DESCRIPTION_ROW; 
    int rowsUsed = dataBodyRange.EndRow; 

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

    PivotTable pt = pivotTableSheet.PivotTables[0]; 
    var style = workBook.CreateStyle(); 

    // Loop through PivotTable data, colorizing contract items 
    while (currentRowBeingExamined < rowsUsed) 
    { 
     Cell descriptionCell = pivotTableSheet.Cells[currentRowBeingExamined, DESCRIPTION_COL]; 
     String desc = descriptionCell.Value.ToString(); 

     if (contractItemDescs.Contains(desc)) 
     { 
      style.BackgroundColor = CONTRACT_ITEM_COLOR; 
      style.Pattern = BackgroundType.Solid; 

      CellArea columnRange = pt.ColumnRange; 
      // Using StartColumn-1 instead of StartColumn-1 gives me the "Percentage of Total" data field subrow (but not the others - "Total Packages", "Total Purchases", and "Sum of Average Price") 
      for (int c = columnRange.StartColumn-1; c <= columnRange.EndColumn; c++) 
      { 
       //pt.Format(currentRowBeingExamined-1, c, style); <= Instead of adding the "Description" row, this colors up some unrelated final ("Percentage of Total") data rows 
       pt.Format(currentRowBeingExamined, c, style); 
       pt.Format(currentRowBeingExamined + 1, c, style); 
       pt.Format(currentRowBeingExamined + 2, c, style); 
       pt.Format(currentRowBeingExamined + 3, c, style); 
      } 

     } 
     currentRowBeingExamined = currentRowBeingExamined + ROWS_BETWEEN_DESCRIPTIONS; 
    } 
} 

Но это работает только «по большей части , «потому что я не могу раскрасить строку« Описание »(например,« AVOCADOS, HASS 70 CT # 2 ») или любую, кроме последней строки столбца 0/A, - подпрограмма« Процент Total », так как может можно увидеть здесь:

enter image description here

может быть, что Descript ионный ряд лучше оставлен незапятнанным/неокрашенным, но я думаю, что подниз под ним было бы лучше раскрашено, и я не понимаю, почему они не являются.

можно предотвратить все из этих подстрок от быть окрашена с помощью этого:

for (int c = columnRange.StartColumn; c <= columnRange.EndColumn; c++) 

(то есть, начиная цикл с «StartColumn» вместо «StartColumn-1» предотвращает что-либо в колонке 0/A от того, чтобы быть раскрашенным), но мне кажется странным, что только тот последний подземелье расцветает, когда я начинаю с одного столбца назад (в 0/A).

ответ

1

Мы рассмотрим вашу проблему в этом Aspose.Cells Forum Thread, созданном вами.

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