その3この広告は、90日以上更新していないブログに表示しています。Windows今回でOpenPyxlを使った書き込みの最終にします。スタイル設定などを書きます。数字で指定し拡げたり狭めたり出来ます。列幅の数字の単位は文字数だそうです。シートには下の画像のようにデータが入っています。Qpythonを使って実行。A列の幅を指定したのに全ての列幅が同じように広がってしまいました。Qpythonでは上手く行きませんでした。上のコードで、列幅の数字を「20」としましたので20文字の幅になる筈。A列には数字が入っています。20文字ほど入りそうではありますが、C列を見ると漢字とひらがなが20文字も入る幅ではないですね。アルファベットの文字数が幅の基準にしてあるとかでしょうか。日本語を入れた列幅の調整には一工夫いりそう。行幅の数字の単位はポイントです。60Qpythonで実行しましたが、こちらも上手く行かず。Android版ExcelもGoogleスプレッドシートも変化なし。今度は、ターミナルアプリtermuxとPythonを使って実行します。vimでコードを書いてtermux上のpythonで実行後、スプレッドシートで確認。今度は上手く行きました。sheet.max_columnで取得できる。(「sheet」はシートオブジェクト。)範囲を同じ幅にしたければ、ループで回して調整するのが定石か。行と列の幅を自動で調整してくれる関数やメソッドは無さそうなので、作る必要がありそうです。横着してリンクで済ます魂胆。Qiita上のページのコードと同じものがstackoverflowのやり取りの中に書いてありましたので参考にされているのかも知れません。最大幅の初期値を0に設定セルごとにfor文で処理セルの文字数をlenで取得し、初期値を超えればそれに2を足し、更にそれを1.2倍した数値を最大幅として置き換えを繰り返し、最終的に調整列幅とする。column_dimensions["列"].width=調整列幅に代入ちょっくら拝借致して写経し実行します。columnを数字からアルファベットに変換するなど手直しして実行しました。上の列幅指定設定でも書きましたが、モジュールが日本語の幅を考慮されていない等の理由かどうかは分かりませんが、単純に文字数を数えて列幅調整をしても表示が隠れてしまう列が出ます。セルの値に日本語などを含む場合は文字数のカウントを2倍にするとか、そういう操作がいるかも。目次にもどる【スタイル】セルや文字などの外観を決める設定を行います。スタイルには次のようなものがあります。フォントサイズ、色、下線などを設定するフォント塗りつぶしパターンまたは色のグラデーションを設定セルに境界線を設定するための境界線セルアライメント保護など。フォントの指定フォントの設定をするにはopenpyxl.styles.Font()を使います。デフォルトでは次のような設定になっています。color='FF000000')設定を変えたい所だけ書き換えれば、文字を太字にしたり色を変えたりできます。セルA1を太字に変えてみます。保存wb.save(file_name)太字に変更できました。今度はセルB2の文字の色を変えます。保存wb.save(file_name)セルB2の文字が青に変わりました。下記を実行しますと、セルA1のフォントの設定が出力されます。scheme=Noneセルの塗りつぶしPatternFillはセルを塗りつぶして背景色を変えることが出来ます。openpyxl.styles.fillsモジュール適当に変えてみます。文が長いのでimportの仕方も変えます。Googleスプレッドシート。設定が効かないパターンが他にもあるかも。罫線、セルの枠線を設定します。上下左右や線のタイプ、太さ、色など設定も豊富。これも適当に変えてみます。my_borderwb.save(file_name)セルD4が細い青枠で囲まれました。セルA1の罫線が現在どのようになっているか確認してみます。horizontal=Noneうおっ、たくさん。罫線の設定だけでもこれだけある。文字の表示位置と折り返しalignmentでセルの折り返しや、上下左右の文字位置の設定が出来ます。horizontalが左寄り、中央、右寄り。verticalが上、中、下。wrap_textで折り返し。セルE2を折り返してみる。my_alignmentwb.save(file_name)セルE2が折り返されました。それにより2行目の幅が自動的に拡がりました。数字表示形式number_formatで数値をテキストや日付、パーセント表示、小数点の位置を変えたりするときに使います。openpyxl.styles.numbersセルH3の数字の表示形式を三桁こどにカンマを打つように変えてみます。'#,##0'wb.save(file_name)セルH3に指定通りのカンマが入りました。G列は数字が左寄せになっています。テキスト形式の数字です。そちらも試しましたが入りませんでした。テキスト形式にしたい時、既にモジュール側で準備してある'FORMAT_TEXT'を使うとできます。セルH4をテキストに変えてみます。numbers.FORMAT_TEXTwb.save(file_name)セルH4が左寄せに変わりました。セルH3の形式は?print(sheet['h3'].number_format)@====GeneralセルH4が@、セルH3はG/標準になっています。おわりに元々Excelの設定項目や機能が豊富なので、Pythonでそれをやるにも沢山の項目を押さえないといけません。切りがないので、この辺りで一旦OpenPyxlによる書き込みは終了します。新しいことをおぼえましたら追々追加していきます。ありがとうございました。Tumblr広告を非表示にする関連記事2021-12-31【PythonでWebアプリをつくりたい】html-CSS未学習者による、よく使う(らしい)html...今回はHtml/CSSの初級編。Android追記しました。タを取得・加工する目次はてなブログをはじめよう!chayarokurokuroさんは、はてなブログを使っています。ブログを報告する引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。