*

EXCELをPDFに変換

公開日: : C#

EXCELをPDFに変換する方法
大量のエクセルファイルをPDFに変換する必要がでたのでTryしてみた。

参考にしたところ

http://valvallow.blogspot.jp/2012/02/cnetexcelwordpdfbullzip.html

事前準備

ダウンロード:BullZip
http://www.bullzip.com/products/pdf/download.php
http://bullzip-website.bullzip.netdna-cdn.com/download/pdf_free/Setup_BullzipPDFPrinter_10_6_0_2267_FREE.exe
exeを実行してインストールする

ダウンロード:Microsoft.Office.Interop.Excel.dll
http://www.microsoft.com/en-us/download/confirmation.aspx?id=227
「oxppia.exe」というのがダウンロードされるので実行、
ファイルを保存する場所を聞いてくるので適当に入力する。
たくさんファイルが出現するが
「Microsoft.Office.Interop.Excel.dll」があるのを確認する。

参照設定する

BullZipとMicrosoft.Office.Interop.Excel.dllを参照設定。
BullZip:
C:\Program Files\Common Files\Bullzip\PDF Printer\API\Microsoft.NET\Framework\v4.0\Bullzip.PDFWriter.dll

Microsoft.Office.Interop.Excel.dll:
C:\任意のフォルダ\Microsoft.Office.Interop.Excel.dll

内容
using Bullzip.PdfWriter;
using Microsoft.Office.Interop.Excel;
string strPrinterName = "Bullzip PDF Printer";
string strFileName = "C:\Users\test.xls"
try
{
	
	PdfSettings pdfSettings = new PdfSettings();

	pdfSettings.PrinterName = PRINTERNAME;
	//保存するファイルの名前指定
	pdfSettings.SetValue
	    ("Output", strFileName.Replace(".xls",".pdf"));
	pdfSettings.SetValue("ShowPDF", "no");
	pdfSettings.SetValue("ShowSettings", "never");
	pdfSettings.SetValue("ShowSaveAS", "never");
	pdfSettings.SetValue("ShowProgress", "no");
	pdfSettings.SetValue("ShowProgressFinished", "no");
	//強制的に上書きする
	pdfSettings.SetValue("ConfirmOverwrite", "no");
	pdfSettings.SetValue("DisableOptionDialog", "yes");
	pdfSettings.WriteSettings(PdfSettingsFileType.RunOnce);

	PdfUtil.PrintFile(strFileName, PRINTERNAME);
	System.Threading.Thread.Sleep(3000);
}
catch (Exception ex)
{
    MessageBox.Show("Error " + ex.Message);
}
コードの参考

https://sites.google.com/site/bullzip/pdf-printer/examples/printing-microsoft-word-documents-to-pdf-using-c
pdfSettings の詳細
http://www.biopdf.com/guide/settings.php

詰まったところ

リストにexcelのファイルを複数入れて for each でPDF化しようと試した。
「tmp01.xlsはtmp01.pdfでtmp02.xlsはtmp02.pdfになる」といった具合に、
作成されるpdfファイルは、元のファイルと同じ名前になるようにしたのだが、
「tmp01.xlsはtmp02.pdfでtmp03.xlsはtmp04.pdfになる」といった結果に
なってしまった。
とりあえずの対応として
「System.Threading.Thread.Sleep(3000);」
を入れた。

PDF化の処理がコードの実行に追いついていないためと
思われるがとりあえずこれでうまくいった。

admax_area



関連記事

no image

TcpListener

using System; using System.Collections.Generic;

記事を読む

no image

crystalreportを使わずにレポートを出す場合の覚書 ReportViewer

crystalreportを使わず、visualstudio2013proに入っているレポートを使っ

記事を読む

no image

保護中: crystal report

crystal reportを拡張子rptのファイルを編集しようとしてやってみたが、 現段階では不

記事を読む

no image

STAThread 属性を付ける理由

STA/MTA は COM の用語です。 ものすごく簡単に言うと「OLE/COM サーバの手続き呼

記事を読む

admax_area



Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

admax_area



PAGE TOP ↑