C #: как скопировать диапазон ячеек Excel и данные диаграммы в слайды точки питания

У меня есть данные и диаграмма в листе Excel, которые мне нужно скопировать во время выполнения из Excel в слайды точки электропитания.

У меня есть код, который работает нормально, но код может копировать данные диаграммы только для того, чтобы отличать данные, не относящиеся к диапазону.

Пожалуйста, см. Снимок моего Excel. Таким образом, у кого-то есть представление о том, как данные содержатся в моей рабочей книге, которую я должен программно копировать в PowerPoint. введите описание изображения здесь

Вот код, который я использую для динамического копирования данных диапазона и данных диаграммы в PowerPoint.

private void Form1_Load(object sender, EventArgs e) { pptNS.ApplicationClass powerpointApplication = null; pptNS.Presentation pptPresentation = null; pptNS.Slide pptSlide = null; pptNS.ShapeRange shapeRange = null; xlNS.ApplicationClass excelApplication = null; xlNS.Workbook excelWorkBook = null; xlNS.Worksheet targetSheet = null; xlNS.ChartObjects chartObjects = null; xlNS.ChartObject existingChartObject = null; xlNS.Range destRange = null; string paramPresentationPath = @"D:\test\Chart Slide.pptx"; string paramWorkbookPath = @"D:\test\MyExcelData.xlsx"; object paramMissing = Type.Missing; try { // Create an instance of PowerPoint. powerpointApplication = new pptNS.ApplicationClass(); // Create an instance Excel. excelApplication = new xlNS.ApplicationClass(); // Open the Excel workbook containing the worksheet with the chart // data. excelWorkBook = excelApplication.Workbooks.Open(paramWorkbookPath, paramMissing, paramMissing, paramMissing, paramMissing, paramMissing, paramMissing, paramMissing, paramMissing, paramMissing, paramMissing, paramMissing, paramMissing, paramMissing, paramMissing); // Get the worksheet that contains the chart. targetSheet = (xlNS.Worksheet)(excelWorkBook.Worksheets["Spain"]); // Get the ChartObjects collection for the sheet. chartObjects = (xlNS.ChartObjects)(targetSheet.ChartObjects(paramMissing)); // Create a PowerPoint presentation. pptPresentation = powerpointApplication.Presentations.Add( Microsoft.Office.Core.MsoTriState.msoTrue); // Add a blank slide to the presentation. pptSlide = pptPresentation.Slides.Add(1, pptNS.PpSlideLayout.ppLayoutBlank); // capture range //var writeRange = targetSheet.Range["A1:B15"]; destRange = targetSheet.get_Range("A1:B15"); //copy range destRange.Copy(); // Paste the chart into the PowerPoint presentation. shapeRange = pptSlide.Shapes.Paste(); // Position the chart on the slide. shapeRange.Left = 60; shapeRange.Top = 100; // Get or capture the chart to copy. existingChartObject =(xlNS.ChartObject)(chartObjects.Item(1)); // Copy the chart from the Excel worksheet to the clipboard. existingChartObject.Copy(); // Paste the chart into the PowerPoint presentation. shapeRange = pptSlide.Shapes.Paste(); //Position the chart on the slide. shapeRange.Left = 90; @shapeRange.Top = 100; // Save the presentation. pptPresentation.SaveAs(paramPresentationPath, pptNS.PpSaveAsFileType.ppSaveAsOpenXMLPresentation, Microsoft.Office.Core.MsoTriState.msoTrue); } catch (Exception ex) { Console.WriteLine(ex.Message); } finally { // Release the PowerPoint slide object. shapeRange = null; pptSlide = null; // Close and release the Presentation object. if (pptPresentation != null) { pptPresentation.Close(); pptPresentation = null; } // Quit PowerPoint and release the ApplicationClass object. if (powerpointApplication != null) { powerpointApplication.Quit(); powerpointApplication = null; } // Release the Excel objects. targetSheet = null; chartObjects = null; existingChartObject = null; // Close and release the Excel Workbook object. if (excelWorkBook != null) { excelWorkBook.Close(false, paramMissing, paramMissing); excelWorkBook = null; } // Quit Excel and release the ApplicationClass object. if (excelApplication != null) { excelApplication.Quit(); excelApplication = null; } GC.Collect(); GC.WaitForPendingFinalizers(); } } 

Пожалуйста, ознакомьтесь с моим кодом и дайте мне знать, что исправить в моем коде как результат диапазона ячеек и диаграммы, и я могу скопировать слайды с точки зрения мощности.

Я сомневаюсь, что это так же просто, как копировать-вставить . Вероятно, вам сначала нужно создать таблицу в слайде PowerPoint и установить значения таблицы в Value Range в таблицу. Я не знаком с PowerPoint interop, но он, вероятно, будет выглядеть примерно так:

 var table = pptSlide.Shapes.AddTable(); destRange = targetSheet.get_Range("A1:B15"); for (int i = 1; i <= destRange.Rows; i++) { for (int j = 1; j <= destRange.Columns; j++) { table.Table.Cell(i, j).Shape.TextFrame.TextRange.Text =destRange[i, j].Text; } } 
  • Как использовать VBA для вставки отдельных строк Excel друг в друга в PowerPoint?
  • Как отображать сводную таблицу в Power Point?
  • Диаграмма не обновляется после запуска макроса - Power Point
  • Автоматизация PowerPoint от MS Access ... запросы к диаграмме?
  • Excel VBA для активации окна Powerpoint по имени
  • Как обновить данные через VBA в Power Point?
  • График Excel для PowerPoint C ++ / CLI Исключение из HRESULT: 0x800A03EC
  • C # Как обновить диаграмму Powerpoint без открытия Excel
  • Удалить подтип
  • Автоматизация данных Powerpoint из Microsoft Excel
  • Powerpoint VBA - Редактирование имени столбца таблицы в встроенном Excel OLE-объекте
  • Interesting Posts

    Сравнение количества букв

    Значения фильтра и графика, которые удовлетворяют определенному условию

    Как удалить дубликаты для столбцов

    dropdownmenu автоматически проверяет флажок

    Как заблокировать конкретный столбец, но часть столбца может быть изменена пользователем? (VBA) ,

    Как получить доступ к данным столбца XLSheet по имени?

    Розовый жемчуг не может работать (NameError: uninitialized constant Excel)

    Вставка данных в таблицу через Excel VBA

    Вставка значений в таблицу SQL Server через VBA

    Ссылка на ячейку в Excel на основе критериев в двух уникальных столбцах

    C # NPOI устанавливает стиль ячейки для текста / строки 1-19, отформатирован как дата / запрет любого форматирования

    копирование из нескольких листов в отдельную книгу

    Кодирование макросов VBA

    Ссылки Excel (с некоторыми функциями bloomberg в качестве входных данных) не обновляются до тех пор, пока VBA не закончит

    Как фильтровать несколько критериев в Excel?

    Давайте будем гением компьютера.