2015-12-01 10 views
22

Excel Interopを使用してxlsxファイルを開き、pdfドキュメントとして保存します。 'ExportAsFixedFileFormat'メソッドを呼び出すと、進行状況を示す「公開」というタイトルのダイアログが表示されます。このダイアログを表示または非表示にするにはどうすればよいですか?私は満足のいく解決策なしで他のフォーラムで同様の質問をいくつか見てきましたが、うまくいけば誰かがこれを解決してくれました。C#Excel Interop - Worksheet.ExportAsFixedFormatを呼び出すときに 'Publishing'ダイアログを表示しない

enter image description here

コード:BackgroundWorkerでそれを処理に関する

Application application = new Application(); 
application.DisplayAlerts = false; // <- No effect 
application.Visible = false; // <- No effect 
application.ScreenUpdating = false; // <- No effect 
application.UserControl = false; // <- No effect 
application.Workbooks.Open(path, Type.Missing, true); 
application.DisplayDocumentActionTaskPane = false; // <- No effect 
application.Worksheets[1].ExportAsFixedFormat(XlFixedFormatType.xlTypePDF, path); 
+0

このバウンティは助けになるかもしれません。私のマシン(Win 10 + Office 2013)では、単一のダイアログがポップしていないので、OSとExcel-Versionに依存するようです。 – lokusking

+0

あなたは単純にできません。これらの進行状況ダイアログは、進行中の操作が長い時間がかかるとExcelが認識したときに表示されます。ワークブック「CTRL + S」を保存しても、宛先が低速ネットワークのネットワークドライブであっても、進行ダイアログが表示されます。その主な理由は、多くのデータを公開しているか、システムにリソースが詰まっているか、遅いまたはすべてのネットワークドライブに公開しているためです。 – cyboashu

+3

これを行うには、WinAPIを使用してこのダイアログを見つけ、表示を非表示に設定するか、この操作をキャンセルするユーザーに関心がある場合はWinAPIを使用してパブリケーション中にキーボードマウス入力をブロックします。 – cyboashu

答えて

0

方法。これはCOMEXCEPTIONを投げません。 ボタンクリックでこのコードを試しましたが、progress dialogを表示せずに動作します。

var worker = new BackgroundWorker(); 
worker.DoWork += (o, args) => 
{ 
    var path = @"D:\sample.xlsx"; 
    var application = new Microsoft.Office.Interop.Excel.Application(); 
    application.Workbooks.Open(path, 
     Type.Missing, true); 
    application.Worksheets[1].ExportAsFixedFormat(XlFixedFormatType.xlTypePDF, path); 
}; 
worker.RunWorkerAsync(); 
1

おそらく私はあなたの質問に答えていないが、私は助けになるだろう。私が知る限り、バックエンド処理でExcel Interopを使用することはお勧めしません。その問題の1つに遭遇しましたが、いくつかの問題があります。 Excelフォーマットと対話するための第三者の選択肢があり、その中にはオープンソースと商用のものがあります。そのうちの1つを見てみることを強くお勧めします: ClosedXMLNPOIどちらもオープンソースで無料です。

0

あなたはpedamorfライブラリを使用できます。pedamorfは、文書、画像、URL、HTML、テキストをPDFに変換するサーバーです。優れたオープンソースプログラムwkhtml2pdf、Libre Office、およびiTextSharpに大きく依存しています。クライアントライブラリが提供され、.NETアプリケーションから使用して、pedamorfによって提供される変換サービスを利用することができます。

詳細情報は、ハンドル(作成、読み込み、PDF/HTMLへのエクスポート、等...)私はFLEXCEL知っているXLS/XLSXファイルをはるかに優れたAPIによってhere

0

です。それは本当にシンプルで、信じられないほど速く、完全にC#で書かれています。 Excelのインストールは不要です。

あなたがここでそれを見つけることができます:あなたがライセンスを取得するには、プロジェクトに予算を持っている場合はhttp://www.tmssoftware.com/site/flexcelnet.asp(ソースコードと例の多くの体験版を入手)

を、私は本当にreccomend。

+0

NuGetを使用してEPPlusを検索してください。ウェブ上でExcelコンテンツを生成するための最良のAPIは、私のHOではずっとです。 – Dotnettex