こんばんは。Milkです。
ExcelはPDFで出力が可能です。使ったりしますか?
普段の作業なら、Excelの中で「PDFエクスポート」を使ってしまえば良いのですが、システムの中に組み込むとなるとプログラムで制御をかけたいときがあります。
今回は、C#との連携について書きます。
C#でExcelシートのPDF化
MS Office の機能として2007年版あたりからPDF出力機能が標準で実装されるようになりました。
もちろん、VBAで制御することも出来ますが、今回はC#を利用して外部から操作することを行ってみましょう。
ExcelシートをPDF化してみます。
下準備
以下のdllを事前に参照する必要があります。
- Microsoft.Office.Core
- Microsoft.Office.Interop.Excel
これらは、Excelを外部から操作するために利用するライブラリですから、PDF化だけの話でなく、Excelを操作する為には必要なものです。
dllの参照の仕方については以下が参考になると思います。
私の環境では、以下の「COM」を参照することで追加が出来ました。
- Microsoft Office 15.0 Object Library
- Microsoft Excel 15.0 Object Library
バージョンはインストールしている MS Office に依存すると思われます。
また、ソースの上部の「using」定義で以下を記入します。
using Excel = Microsoft.Office.Interop.Excel;
これにより、Excelへの操作が出来るようになるはずです。
ブック全てをPDF化する
特定のExcelファイルの内容を、一つのPDFのファイルとして出力するのは簡単です。
実は、Excelファイルをオープンして、Worksheetsをselectした状態にします。
その後に、出力の関数を呼び出せばOKです。
Excelファイルの一部のシートだけをPDF化する
考え方としては、新規でブックを一時的に作り出し、そちらに必要なシートをコピーします。
そして、PDF出力に使用したブックは変更を無視してクローズするという形をとります。
Excel操作のメソッド
以下のページが、上で述べたメソッドの公式な使い方を説明しています。
PDFの出力メソッド
- Workbook.ExportAsFixedFormatメソッド
PDFの出力に使います。
Workbook.ExportAsFixedFormat メソッド (Microsoft.Office.Tools.Excel) | Microsoft Learn
ブックの追加
プログラムによって新しいブックを作成する方法について説明しています。
Programmatically create new workbooks - Visual Studio (Windows) | Microsoft Learn
ワークシートのコピー
ワークシートのコピー方法について説明しています
Programmatically copy worksheets - Visual Studio (Windows) | Microsoft Learn
ブックのクローズ
ブックのクローズの仕方について説明しています。
Workbook.Close(Object, Object, Object) メソッド (Microsoft.Office.Tools.Excel) | Microsoft Learn
最後に
今回、自分の仕事の中で、Excelファイルの一部のシートだけをPDF出力して欲しいと言う要望がありました。
Workbook.ExportAsFixedFormatメソッドには、ページの開始と終了を指定出来ますが、シートを直接的に指定する引数はありません。
なのでいろいろと調べたのですが、残念ながら直接的に指定できる関数はなさそうです。
(調査不足だったらすみません。)
と言う訳で、突貫ですがざーっと書いた結果こうなりました。
皆さんも使う機会がありましたらどうぞ。
それでは今回はこの辺で。
adios!!