Milkのメモ帳

日々の思いつきを忘れないようにのメモ用です。

Milkのメモ帳

【C#】ExcelファイルをPDF化する


こんばんは。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の参照の仕方については以下が参考になると思います。

blog.jhashimoto.net

私の環境では、以下の「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です。

ボタンクリックによるPDF出力例1

Excelファイルの一部のシートだけをPDF化する

考え方としては、新規でブックを一時的に作り出し、そちらに必要なシートをコピーします。

そして、PDF出力に使用したブックは変更を無視してクローズするという形をとります。

ボタンクリックによるPDF出力例2

Excel操作のメソッド

以下のページが、上で述べたメソッドの公式な使い方を説明しています。

PDFの出力メソッド

  • Workbook.ExportAsFixedFormatメソッド

PDFの出力に使います。

Workbook.ExportAsFixedFormat Method (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) Method (Microsoft.Office.Tools.Excel) | Microsoft Learn

最後に

今回、自分の仕事の中で、Excelファイルの一部のシートだけをPDF出力して欲しいと言う要望がありました。

Workbook.ExportAsFixedFormatメソッドには、ページの開始と終了を指定出来ますが、シートを直接的に指定する引数はありません。

なのでいろいろと調べたのですが、残念ながら直接的に指定できる関数はなさそうです。
(調査不足だったらすみません。)

と言う訳で、突貫ですがざーっと書いた結果こうなりました。

皆さんも使う機会がありましたらどうぞ。

それでは今回はこの辺で。

adios!!