teratail header banner
teratail header banner
質問するログイン新規登録

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

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

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

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

Q&A

解決済

2回答

2843閲覧

Pythonを用いて、Excelファイルの内容をpng形式に変換したい

seiha

総合スコア5

Python

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

0グッド

0クリップ

投稿2022/11/02 07:06

0

0

実現したいこと

イメージ説明
上記のようなExcelファイルを複数所持していて(列数は全ファイル同じだが、行数はファイルによって異なる。最大で100行程度)、Pythonを用いて、その内容を全てpngファイルに変換しようと思っています(1つのExcelファイルにつき1つのpngファイル)。

その際、pngファイルにおける1行の大きさを一定にしようと思っています。例えば、「50行のデータならpngファイルの上半分のみにリストが表示されていて、100行のデータならpngファイルの全体にリストが表示されている」という風にしたいと思っています。

Pythonを用いたアプリの処理の一環として上記の処理を行いたいので、Python内で完結できるようにしたいと思っています。

色々と不慣れなところがありますが、解決するための方法をご教授いただけますでしょうか。よろしくお願いします。

試したこと

win32comを用いてpdf形式に変換した後にpng形式に変換しようとしたのですが、データの範囲が大きくて複数枚に分かれてしまいました。

また、セルを区切る線が表示されないので見にくくなってしまいました。

import win32com.client excel = win32com.client.Dispatch("Excel.Application") excel.Visible = False wb = excel.Workbooks.Open("F:/file.xlsx") wb.Worksheets("Sheet1").Activate() wb.ActiveSheet.ExportAsFixedFormat(0,"F:/file.pdf")

補足情報(FW/ツールのバージョンなど)

Pythonのバージョンは3.7、Excelのバージョンは2209です。

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

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

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

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

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

bsdfan

2022/11/03 07:18

動作確認できる環境にないためコメントで。 excel画面を画像に保存するpythonライブラリがあります。 https://pypi.org/project/excel2img https://github.com/glexey/excel2img 長らく更新されていないので、最新バージョンで動作するか不明ですが、コードを見ると、win32com で領域をコピーして、Pillowでクリップボードのイメージを取得して保存、ということをやっています。
guest

回答2

0

自己解決

 私が所属する社内の会議においてこの件を取り上げたのですが、「excelファイルを画像化する」とは違う方針でアプリを開発していくことになりました。

 情報を寄せてくださった方には申し訳ありませんが、これをもって自己解決とさせていただきます。

投稿2022/11/07 01:17

seiha

総合スコア5

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

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

0

win32com.client の使用経験はありませんが、回答致します。
エクセルでできる操作をコード実行しているだけなので、印刷範囲を指定して罫線を引けば解決すると思います。

印刷範囲を設定
sheets.PageSetup.PrintArea = "$A$1:$AW$20"

セルに線を引く
sh.Range("A1:AW20").Borders(7).LineStyle = 1
sh.Range("A1:AW20").Borders(7).Weight = 2
sh.Range("A1:AW20").Borders(7).ColorIndex = -4105

リンク先を参照しただけなのでコードは、間違えているかもしれません。
pywin32からCOMを使ってExcelを操作する方法

投稿2022/11/02 08:09

AndoJun

総合スコア43

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問