Как использовать interop.excel для создания сводной диаграммы Muti на C#C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как использовать interop.excel для создания сводной диаграммы Muti на C#

Сообщение Anonymous »

Код: Выделить всё

foreach (var item in itemlist.Items)
{
if (item.PivotChartConfig != null)
{
var describedPivotChart = item;
var chartConfig = describedPivotChart.PivotChartConfig;

Excel.PivotCache pivotCache = workbook.PivotCaches().Create(Excel.XlPivotTableSourceType.xlDatabase, dataRange);

Excel.Range pivotTableLocation;
if (lastInsertedRange != null)
{
pivotTableLocation = pivotSheet.Cells[lastInsertedRange.Row + lastInsertedRange.Rows.Count + 1, 1];
}
else
{
pivotTableLocation = pivotSheet.Cells[1, 1];
}

Excel.PivotTable pivotTable = pivotCache.CreatePivotTable(
TableDestination: pivotTableLocation,
TableName: "PivotTable" + Guid.NewGuid().ToString());

ConfigurePivotTableFields(pivotTable, chartConfig.PivotTableConfig.Fields);
Excel.Range pivotTableRange = pivotTable.TableRange2;

double chartLeft = pivotTableRange.Left + pivotTableRange.Width + 10;
double chartTop = pivotTableRange.Top;
double chartWidth = 500;
double chartHeight = 300;

Excel.ChartObjects chartObjects = (Excel.ChartObjects)pivotSheet.ChartObjects();
Excel.ChartObject chartObject = chartObjects.Add(
chartLeft,
chartTop,
chartWidth,
chartHeight);

Excel.Chart chart = chartObject.Chart;
chart.SetSourceData(pivotTable.TableRange2);

chart.ChartType = chartConfig.ChartType;
chart.HasTitle = true;
chart.ChartTitle.Text = chartConfig.ChartTitle;
lastInsertedRange = pivotTable.TableRange2;
if (!string.IsNullOrEmpty(describedPivotChart.Description))
{
pivotTableRange = pivotTable.TableRange2;
int descriptionRow = pivotTableRange.Row + pivotTableRange.Rows.Count;
int descriptionColumn = pivotTableRange.Column;

Excel.Range descriptionCell = pivotSheet.Cells[descriptionRow, descriptionColumn];
descriptionCell.Value2 = describedPivotChart.Description;

descriptionCell.Font.Bold = true;
descriptionCell.Font.Italic = true;
descriptionCell.EntireRow.AutoFit();
lastInsertedRange = pivotSheet.Cells[descriptionRow, descriptionColumn];
}
}
else
{
if (lastInsertedRange == null)
{
lastInsertedRange = pivotSheet.Cells[1, 1];
}

int stringItemRow = lastInsertedRange.Row + lastInsertedRange.Rows.Count + (lastInsertedRange == pivotSheet.Cells[1, 1] ? 0 : 1);
int stringItemColumn = lastInsertedRange.Column;

Excel.Range stringItemCell = pivotSheet.Cells[stringItemRow, stringItemColumn];
stringItemCell.Value2 = item.Description;

stringItemCell.Font.Bold = true;
stringItemCell.Font.Size = 12;
stringItemCell.EntireRow.AutoFit();

lastInsertedRange = pivotSheet.Cells[stringItemRow, stringItemColumn];
}
}
Если создана только одна сводная диаграмма, мой код работает нормально, но если создано несколько сводных диаграмм, возникает ошибка.
Сообщение об ошибке: Необработанное исключение. System.Runtime.InteropServices.COMException (0x80004005): при вызове COM-компонента была возвращена ошибка HRESULT E_FAIL.
Инструкция об ошибке:chart.SetSourceData(pivotTable.TableRange2);
Я просмотрел документацию по взаимодействию Microsoft, но не смог найти подходящего решения.

Подробнее здесь: https://stackoverflow.com/questions/791 ... by-c-sharp
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как использовать Interop.Excel для создания многосводной диаграммы на C#?
    Anonymous » » в форуме C#
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Можно ли изменить цвет данных сводной диаграммы (круговой диаграммы), созданной с использованием ссылки на сводную табли
    Anonymous » » в форуме JAVA
    0 Ответы
    99 Просмотры
    Последнее сообщение Anonymous
  • Office.Interop.Excel и Office.Interop.Outlook Развертывание по щелчку мыши и Windows 11
    Anonymous » » в форуме C#
    0 Ответы
    40 Просмотры
    Последнее сообщение Anonymous
  • Как управлять зависимостями в проекте Maven Muti в нескольких проектах Maven
    Anonymous » » в форуме JAVA
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • JQuery Muti Select выберите с флажком
    Anonymous » » в форуме Html
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»