ソースである1つのチャートを含むExcelシートがあります。私の目標は、3 枚のスライドを含むパワーポイント プレゼンテーションです。スライド #3 を Excel ファイルのチャートで更新する必要があります。
アプリケーションを実行した後、pptx ファイルを開こうとすると、「Powerpoint でコンテンツに問題が見つかりました」というメッセージが表示されます。修復した後、正しいスライドを更新していないことを示すスライド #2 に常に空白のスライドが表示されることに気付きました。
スライド番号に基づいてスライドに移動するにはどうすればよいですか。(パワーポイント スライドと Excel チャートにチャート タイトルがありません) また、無効なコンテンツ エラーが発生するのはなぜですか。
大変お世話になりました。ありがとう
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using OpenXmlPkg = DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Presentation;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Spreadsheet;
namespace ExportChart
{
class Program
{
static void Main(string[] args)
{
string SourceFile = "Projected Sales.xlsx";
string TargetFile = "Projected Sales.pptx";
string targetppt = "Generatedppt.pptx";
ChartPart chartPart;
ChartPart newChartPart;
SlidePart slidepartbkMark = null;
string chartPartIdBookMark = null;
File.Copy(TargetFile, targetppt, true);
//Powerpoint document
using (OpenXmlPkg.PresentationDocument pptPackage = OpenXmlPkg.PresentationDocument.Open(targetppt, true))
{
OpenXmlPkg.PresentationPart presentationPart = pptPackage.PresentationPart;
var secondSlidePart = pptPackage.PresentationPart.SlideParts.Skip(1).Take(1);
foreach (var slidepart in pptPackage.PresentationPart.SlideParts)
{
slidepartbkMark = slidepart;
if (slidepart.GetPartsCountOfType<ChartPart>() != 0)
{
chartPart = slidepart.ChartParts.First();
chartPartIdBookMark = slidepart.GetIdOfPart(chartPart);
slidepart.DeletePart(chartPart);
slidepart.Slide.Save();
}
//return;
}
newChartPart = slidepartbkMark.AddNewPart<ChartPart>(chartPartIdBookMark);
ChartPart saveXlsChart = null;
using (SpreadsheetDocument xlsDocument = SpreadsheetDocument.Open(SourceFile.ToString(), true))
{
WorkbookPart xlsbookpart = xlsDocument.WorkbookPart;
foreach (var worksheetPart in xlsDocument.WorkbookPart.WorksheetParts)
{
if (worksheetPart.DrawingsPart != null)
if (worksheetPart.DrawingsPart.ChartParts.Any())
{
saveXlsChart = worksheetPart.DrawingsPart.ChartParts.First();
}
}
newChartPart.FeedData(saveXlsChart.GetStream());
slidepartbkMark.Slide.Save();
xlsDocument.Close();
pptPackage.Close();
}
}
}
}
}