Excel グラフィックスを埋め込んだ Microsoft Word ドキュメント ジェネレーターを実装する必要があります。私の制約の 1 つは、生成した docx を Microsoft Word 2010 と 2003 + 互換パックの両方で動作させることです。
私はそれを両方で機能させることができませんでした。Word 2010 では機能するようにできますが、ドキュメントは 2003 では機能せず、その逆も同様です。
Word 2003で機能させるためにいくつか検索した後、コードにこれを追加しました:
private static void Word2003(ChartPart importedChartPart, MainDocumentPart mainDocumentPart, Stream fileStream)
{
var ext = new ExternalData { Id = "rel" + 5 };
importedChartPart.ChartSpace.InsertAt(ext, 3);
var fi = new FileInfo(@"generated.xlsx");
importedChartPart.AddExternalRelationship("http://schemas.openxmlformats.org/officeDocument/2006/relationships/package", new Uri(fi.Name, UriKind.Relative), "rel5");
EmbeddedPackagePart embeddedObjectPart = mainDocumentPart.AddEmbeddedPackagePart(@"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
Stream copyStream = new MemoryStream();
fileStream.CopyTo(copyStream);
embeddedObjectPart.FeedData(copyStream);
}
しかし、この時点で生成された文書は Word 2010 では機能しません。これら 2 つの行を削除すると、次のようになります。
var ext = new ExternalData { Id = "rel" + 5 };
importedChartPart.ChartSpace.InsertAt(ext, 3);
前のコードから、Word 2010 では機能しますが、Word 2003 では機能しません。
いくつかのことを試しましたが、それぞれのケースでうまく機能させることができませんでした。
この小さなコードはここにあります
前提条件は、チャートとグラフィックを含む Excel ファイルのテンプレートです。
編集: 生成されたドキュメントは常に Microsoft Office 2007 で動作します (問題のある 2 つのコード行があるかどうかに関係なく)。私はまだ解決策を探しています!