Ameba Ownd

アプリで簡単、無料ホームページ作成

IT MEMO'S

OpenXMLでFontやFillを後から追加する

2021.01.13 08:51

OpenXMLを使用した際、一瞬戸惑うこともあるかと思ったので記事にしておきます。今回はC#で書いています。

必要になるケースの想定としては、共通クラスで汎用的なもののみを定義し個別プロジェクトで任意の定義を追加して使用するといったところです。

細かいことは省略しますが共通クラスで最初に以下のようにしてSpreadsheetDocumentを作成したとします。

このspreadsheetDocumentをインスタンス変数にしておけば目的は達成できます。

開いたSpreadsheetDocument は以下のような関数を共通クラスに用意しておき、すべての書き込み処理が終わったら呼んでおけば問題ありません。

代表でFontを追加します。基本的にはFillやBorderなどを追加するときも要領は同じです。

以下のような関数を共通クラス内に定義してください。前置きのようにspreadsheetDocumentにインスタンスが生成されていること前提です。


拡張したいプロジェクトでDocumentFormat.OpenXml.Spreadsheet.Fontを作成してこの関数に渡します。これで任意のFontをいつでも追加できます。

ここで注意なのですが、fonts1.Appendに渡したDocumentFormat.OpenXml.Spreadsheet.Fontオブジェクトは別のFontsに追加することはできないようです。