編集:元の投稿で省略した詳細があります。プログラムは、「.Open」コマンドの具体的なテンプレートではなく、テンプレート ストリームを使用しています。テンプレート ストリームは、次のコード ブロックで初期化されます。
public void Initialize(Stream templateStream)
{
spreadsheet = SpreadsheetDocument.Open(templateStream, true);
}
私はまだこれを調査していますが、OpenXML で HeaderFooter オブジェクトにストリームを使用することの意味を知っている人はいますか?
私は OpenXML を初めて使用し、この大規模な SDK について何ができるかを読んで学習している最中です。OpenXML を使用して Excel スプレッドシートに情報を表示する C# MVC.NET プログラムを継承しましたが、すべて機能していますが、同じスプレッドシートにフッターを追加する必要があり、OpenXML でレンガの壁にぶつかっています。知識。
必要なフッター情報をスプレッドシートに入力し、Open XML SDK Productivity Tool で開いたところ、<.x:oddFooter(OddFooter) の下に次のコードが見つかりました。
// Creates an OddFooter instance and adds its children.
public OddFooter GenerateOddFooter()
{
OddFooter oddFooter1 = new OddFooter();
oddFooter1.Text = "&L&\"Times New Roman,Regular\"Page &P of &N&C&\"Times New Roman,Regular\"Generated On: <Date/Time> Central&R&\"Times New Roman,Regular\"Report";
return oddFooter1;
}
そして、このコードは <>x:headerFooter(OddFooter) の下の 1 レベル上にあります。
// Creates an HeaderFooter instance and adds its children.
public HeaderFooter GenerateHeaderFooter()
{
HeaderFooter headerFooter1 = new HeaderFooter();
OddFooter oddFooter1 = new OddFooter();
oddFooter1.Text = "&L&\"Times New Roman,Regular\"Page &P of &N&C&\"Times New Roman,Regular\"Generated On: <Date/Time> Central&R&\"Times New Roman,Regular\"Report";
headerFooter1.Append(oddFooter1);
return headerFooter1;
}
もちろん、フッター情報をどこかに追加する必要がありますが、ここで立ち往生しています。<>x:worksheet(Worksheet) には、次のコード行が表示されます。
worksheet1.Append(headerFooter1);
これは簡単そうに見えましたが、アプリケーション コードを振り返ってみると、追加するワークシート オブジェクトが見つかりませんでした。次のコード行に近いと思いました。
spreadsheet.WorkbookPart.Workbook.Append(headerFooter1);
しかし、これは何ももたらしませんでした。アプリケーションで、SpreadsheetDocument オブジェクトと OpenXMLParts への参照が表示されます...追加するスプレッドシート パーツを取得する必要がありますか? または、スプレッドシートとワークシート オブジェクトで別のアプローチを取る必要がありますか? 現在のワークシートを具体化してから追加する必要がありますか?
これには簡単な解決策があると感じていますが、私が言ったように、私はまだ SDK を学んでいます。
ありがとうございました!