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

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

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

openpyxlは、Excel2007以降のファイル(xlsx/xlsm/xltx/xltm)を読み書きするためのPythonライブラリです。

Python

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

Q&A

0回答

2035閲覧

PythonでExcelの罫線設定、フォント変更、セルの色付けしたい

HekmatyarSmile

総合スコア6

openpyxl

openpyxlは、Excel2007以降のファイル(xlsx/xlsm/xltx/xltm)を読み書きするためのPythonライブラリです。

Python

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

0グッド

0クリップ

投稿2020/09/09 08:59

編集2020/09/10 02:48

<やりたいこと>
①エクセルファイル開く。
②エクセル1行目のヘッダーに罫線(枠線)をつけてフォントを変える。
③エクセル2行目以降も罫線(枠線)をつける。
④予め用意したList「memo1」に入れておいたデータの値をエクセル3列目から検索し、該当セルに色付けをする。

色々なサイトの記述形式を試したのですが、ダメでした。

python

1 2import openpyxl 3from openpyxl.styles.borders import Border, Side 4 5file_name = "C:\sample+ ".xlsx" 6wb = openpyxl.load_workbook(file_name) 7ws = wb["Sheet1"] 8 9row : int = 1 10while row <= ws.max_row: 11 if row == 1: 12 side = Side(style='thick', color='000000') 13 border = Border(top=side, bottom=side, left=side, right=side) 14     for cell in row: 15 ws[cell.coordinate].border = border 16 for col in ws.columns: 17 ws[row, col].border = border 18 ws[row, col].font = openpyxl.styles.fonts.Font(color='FF0000') 19 else: 20 side = Side(style='thin', color='000000') 21 border = Border(top=side, bottom=side, left=side, right=side) 22 for cell in row: 23 ws[cell.coordinate].border = border 24 row += 1 25 26 27fill = openpyxl.styles.PatternFill(patternType='solid',fgColor='FFFF00', bgColor='FFFF00') 28for row in ws.rows: 29 for a in list_memo1: 30 if ws[row, 3] == a: 31 ws[row, 3].fill = fill 32 33

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

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

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

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

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

meg_

2020/09/09 12:03

①~④のどこまで実装済で今どこが問題なのですか?
HekmatyarSmile

2020/09/10 02:49 編集

①~④全て実装済みで for cell in row:の行で下記のエラーが出ます。 「TypeError: 'int' object is not iterable」 また、ws[row, col].font = openpyxl.styles.fonts.Font(color='FF0000')でも 下記もエラーが発生しています。 TypeError: expected string or bytes-like object これ以降でもエラー出るかもしれないです。
meg_

2020/09/10 11:14 編集

・エラーメッセージ全文を質問に追記してください。("for cell in row"は質問のコード中に2ヵ所あります。どっちか判りません。) ・”実装済”というのは”正しく動く”という意味で聞きました。詰まっているのは①~④のどこですか?
meg_

2020/09/10 11:20

今、コードを見ました。 TypeError: 'int' object is not iterable はそのままのエラーですよね。 "for cell in row:"このコードで何をしたいのか分かりませんが、"row == 1"のときに"for cell in row:"が実行されるので「for cell in 1:"」と同じになって上記エラーが出ています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問