у меня был соответствующий вопрос 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 », так как может можно увидеть здесь:
может быть, что Descript ионный ряд лучше оставлен незапятнанным/неокрашенным, но я думаю, что подниз под ним было бы лучше раскрашено, и я не понимаю, почему они не являются.
можно предотвратить все из этих подстрок от быть окрашена с помощью этого:
for (int c = columnRange.StartColumn; c <= columnRange.EndColumn; c++)
(то есть, начиная цикл с «StartColumn» вместо «StartColumn-1» предотвращает что-либо в колонке 0/A от того, чтобы быть раскрашенным), но мне кажется странным, что только тот последний подземелье расцветает, когда я начинаю с одного столбца назад (в 0/A).