質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
PDF

PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

Win32 API

Win32 APIはMicrosoft Windowsの32bitプロセッサのOSで動作するAPIです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

3753閲覧

python csv(excel)をpdfに変換したい

ken248

総合スコア24

PDF

PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

Win32 API

Win32 APIはMicrosoft Windowsの32bitプロセッサのOSで動作するAPIです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/05/17 12:36

pythonでcsv(excel)ファイルをpdfに変換したいです。
csvで本来は行いたいのですが、参考コードが見当たらずまずはexcelで行っています。
win32comは初めて使っています。
初学者で申し訳ございませんがよろしくお願いいたします。

質問①
以下のコードを実行するとerrorが発生します。
excelが立ち上がってしまい、保存ができていないと思われます。
file.ActiveSheet.ExportAsFixedFormat(0, pdf_path)
この上で一度ファイルを消してから行いもしましたが、できませんでした。
どうぞよろしくお願いいたします。

質問②
excelとcsvで書き方が違うようでしたらご教示いただきたいです。

2点どうぞよろしくお願いいたします。

python

1import win32com.client 2excel = win32com.client.Dispatch("Excel.Application") 3 4excel_path = "C:/Users/Desktop/price.xlsx" 5pdf_path = "C:/Users/Desktop/out.pdf" 6 7excel.Visible = False 8excel = win32com.client.Dispatch("Excel.Application") 9file = excel.Workbooks.Open(excel_path) 10file.WorkSheets("光熱費").Activate() 11file.ActiveSheet.ExportAsFixedFormat(0, pdf_path) 12file.Close() 13excel.Quit()

error

1com_error: (-2147352567, '例外が発生しました。', (0, 'Microsoft Excel', 'ドキュメントを保存できませんでした。ドキュメントが開いているか、保存時にエラーが発生した可能性があります。', 'xlmain11.chm', 0, -2146827284), None) 2

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

おはようございます。

問題文読ませていただきました。

Python

1import win32com.client 2 3excel = win32com.client.Dispatch("Excel.Application") 4 5excel_path = "C:/Users/Desktop/price.xlsx" 6pdf_path = "C:/Users/Desktop/out.pdf" 7 8excel.Visible = False 9 10try: 11 file = excel.Workbooks.Open(excel_path) 12 file.WorkSheets("光熱費").Activate() 13 file.ActiveSheet.ExportAsFixedFormat(0, pdf_path) 14except: 15 print('失敗') 16else: 17 print('成功') 18finally: 19 file.Close() 20 excel.Quit()

を行い、どこまでうまくいっているのか教えていただけますでしょうか?????‍♂️

またこちらの記事を一度熟読することをお勧めいたします〜
https://qiita.com/kumarstack55/items/9ae3432446afca06497f#%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB

投稿2021/05/17 23:39

編集2021/05/18 09:58
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/05/18 09:59

回答のところに修正しましたので、そちらで実行していただけませんでしょうか?????‍♂️
ken248

2021/05/19 04:34

KURORO様 修正ありがとうございました。 exceptに行き、失敗になってしまいました。 そこでtry,exceptをなくしてtryのところだけを実行したところ、 やはり file.ActiveSheet.ExportAsFixedFormat(0, pdf_path) のところで com_error: (-2147352567, '例外が発生しました。', (0, None, None, None, 0, -2146827284), None) が出てしまいました。 エクセルの問題かと思って、コード上で文字入力を試したらそれはできました。 また、コードを使わずにPDFに印刷保存も可能でした。 アドバイスどうぞよろしくお願い致します。
退会済みユーザー

退会済みユーザー

2021/05/19 10:51

難しいですね。。 エクセルファイルの問題かどうか判断したいので、 1. 新しくExcelファイルを作成する。 2. 読み込みファイルを1のファイルにする。 3. Pythonを実行する。 4. PDFができるか確認する。 をお願いいたします。????‍♂️ また上記ファイルが作成されるタイミング(1の工程)でセキュリティ設定など加えていましたら、解除していただきたいです。
ken248

2021/05/20 03:50

KURORO様 検討いただきありがとうございます。 結果は同様のエラーでした。 帰宅後、自宅のPCでも行ってみます。 もしなにか方法を思いつきましたらご教授お願い致します。
ken248

2021/05/20 10:07

KURORO様 自宅のPCでも同様の結果でした。 もし考えられることございましたらご教示お願いいたします。
退会済みユーザー

退会済みユーザー

2021/05/20 22:36

うーん、わからないですね。。 こちらの「既存のExcelファイルを開いてPDFで保存する方法」がダメでしたら、他の方法を提案します。 1. https://news.mynavi.jp/article/zeropython-62/ へアクセスする。 2. デスクトップへpythonファイルを作成する。(例 : text.py) 3. 「既存のExcelファイルを開いてPDFで保存する方法」にあるコードをコピーして2で作成したファイルへ貼り付ける。 4. デスクトップにてExcelファイルを作成し、ファイル名を「test.xlsx」と変更する。 5. python test.py 6. output.pdfファイルがデスクトップへ作成できるか確認する。 ご確認のほど、よろしくお願いいたします。????‍♂️
dodox86

2021/05/21 00:53 編集

興味を覚えたのでKUROROさんのご回答のコードで試させていただきましたが、当方の環境では問題無くPDFファイルがエクスポートされました。(ファイルのPATHは当方の環境に合わせています) Windows10 Pro.(64ビット), Excel2014で、Python3はMicrosoftストアからインストールした版、 「Python 3.9.5 (tags/v3.9.5:0a7dcbd, May 3 2021, 17:27:52) [MSC v.1928 64 bit (AMD64)] on win32」 です。win32comは「pip install pywin32」でインストールしたものです。 質問者ken248さんと同じような例外発生は確認できなかったので分かりませんが、ファイルのPATH「"C:/Users/Desktop/price.xlsx"」の"C:/Users/"直下は一般的にユーザー毎のホームディレクトリが置かれるところで、その下にいきなり"Desktop"のディレクトリは存在しません。PATHは間違っていたりしませんでしょうか。また、お使いのExcelで手動では正しくPDFでエクスポートできるのですよね。 以上、ご参考まで。
ken248

2021/05/21 03:30

KURORO様 1度だけこちらでできました。 が本当に1度だけでした… でもきっとエクセルの問題だと思っています。 エクセルの設定をがんばって見直します。 これまで数日にわたってありがとうございました。 もし最後にわかれば教えていただきたいのが、csvファイルだとどこを変更する必要があるかご教示いただきたいです。
ken248

2021/05/21 03:36

dodox様 コメントいただきありがとうございます。 私の問題ですね。 コードには間違いないことが把握できてよかったです。 ちなみに、ファイルのパスは個人名ということで抜かせていただきまたが、 実行コードは正しく打てていると認識しています。 Excelでは手動で正しくエクスポートできています。
退会済みユーザー

退会済みユーザー

2021/05/21 06:04

> dodox86さん お、ご協力ありがとうございます〜。 興味を持つ姿勢に尊敬です! また丁寧な説明や質問など、感謝しかありません。????‍♂️
退会済みユーザー

退会済みユーザー

2021/05/21 06:11 編集

> 1度だけこちらでできました。 なんで一度だけ成功したんだろう〜?何か他で試した時と違ったことはありませんでしたか? > ken248さん いえいえ、こちらこそ全く知らない領域でしたのでワクワクしましたし、またken248さんが一生懸命学ばれている姿勢を見て、僕ももっと頑張らなちゃと思いました。 こちらの記事にて、csvと検索すると見つかります。 https://qiita.com/feo52/items/150745ae0cc17cb5c866 また困ったこととかありましたら、気軽にご相談ください〜
ken248

2021/05/21 08:05

KURORO様 いえ…なにもなさ過ぎて… その後そんなファイルでもできなくなり… それでもコードを教えていただきありがとうございました。 ありがたいお言葉ありがとうございます。 ぜひとも今後ともよろしくお願いいたします。 フォローさせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問