シリーズ記事の目次
プログラミング初心者のための独習ノート16(Python OA操作 EXCEL表)
プログラミング初心者のための自習ノート15(Python OA操作 EXCEL表)
プログラミング初心者のための自習メモ14(Pythonオフィスオートメーションでファイルやフォルダを作成・コピー・移動する)
プログラミング初心者のための13の自習ノート(Python OAファイルの読み書き)
プログラミング初心者のための自習ノート12(Pythonクローラー入門4、Selenium使用例2)
プログラマー初級者のための自習ノート 11 (Python Crawler 3 入門: Selenium の使い方 + 詳細な例)
プログラミング初心者のための独習ノート10(Pythonクローラー入門2+サンプルコードの詳細解説)
プログラマのための自習ノート9(Pythonクローラ入門+詳細コード解説)
目次
序文
今日は、非常に実用的だと思われる 2 つの小さなケースを研究します。
- ちょっとした練習 1: 条件を選択した後に背景を追加する
- ちょっとした練習 2: ヒストグラムを生成する
1.条件を選択した後に背景を追加する
昨日、テーブルに対するほとんどの操作を完了し、50 を超える値を新しいテーブルにコピーしました。次に、50 を超える値を持つ行の背景を黄色に変更し、テキストを任意の色に設定してみましょう。まずは試してみましょう。その後、コードを詳しく説明します。最初に書いたコードは次のとおりです。
from openpyxl.styles import Font,PatternFill
import openpyxl
wb=openpyxl.load_workbook('大于50的表格.xlsx')
ws=wb.active
wb.copy_worksheet(ws)
ws.title='我是新的'
font = Font(name='黑体',size=30,bold=True,italic=True,color='000ff0')
fill = PatternFill(fill_type='solid',fgColor='ffff00')
rows = wb['我是新的'].rows
for row in rows:
if int(row[1].value)>75:
row[0].fill=fill
row[1].font=font
wb.save('大于50的表格.xlsx')
実行したら成功しました
詳細コード:
「from openpyxl.styles import Font,PatternFill」、わかりやすい、フォント ライブラリと塗りつぶしライブラリのインポート
'wb.copy_worksheet(ws)' のように、このコードは元のテーブルの破壊を避けるためのものなので、再度共有してコピーしました。
実験後、「color='000ff0'」は青です
この実験には期待された結果が得られなかった側面がまだ 2 つあります。
1 つは、行内のすべてのセルが塗りつぶされず、行内のすべてのセルのフォントが変更されないことです。これは、記述量が少なくなり、コードを 2 行追加するだけで済むため、簡単に実行できます。
次に、注意深く観察すると、ワークブックをコピーした後、元のワークブックを変更していることがわかります。コピーしたワークシートを変更したいのですが、名前変更もコピーしたワークシートです。元のワークブック内のすべては変更されません。新しく作成したワークシートを削除し、元のテーブルの名前を元に戻し、コードを変更してみます。
rom openpyxl.styles import Font,PatternFill
import openpyxl
wb=openpyxl.load_workbook('大于50的表格.xlsx')
ws=wb.active
ws=wb.copy_worksheet(ws)
ws.title='我是新的'
font = Font(name='黑体',size=30,bold=True,italic=True,color='000ff0')
fill = PatternFill(fill_type='solid',fgColor='ffff00')
rows = wb['我是新的'].rows
for row in rows:
if int(row[1].value)>75:
row[0].fill=fill
row[1].fill = fill
row[0].font = font
row[1].font=font
wb.save('大于50的表格.xlsx')
実行に成功した後、期待していた結果が得られました。
2.ヒストグラムを挿入
EXCEL テーブルを使用する場合、グラフィックスがより直感的になるため、データのヒストグラムを生成してテーブルに挿入することが避けられません。以前のオフィスではアイコンの生成が非常に簡単でしたが、今ではログを記録する必要があります。 WPS にログインします。メンバーシップが必要かどうかはわかりません。結局のところ、ログインした後もログインしたくありません。ヒストグラムを生成するコードを見てみましょう。
from openpyxl.chart import BarChart,Reference
import openpyxl
wb=openpyxl.load_workbook('大于50的表格.xlsx')
ws=wb['我是新的']
chart=BarChart()
data=Reference(worksheet=ws,min_row=1,max_row=6,min_col=1,max_col=2)
categories=Reference(ws,min_row=2,max_row=6,min_col=1)
chart.add_data(data,titles_from_data=True)
chart.set_categories(categories)
ws.add_chart(chart,'F6')
wb.save('大于50的表格.xlsx')
操作は成功しました。結果を見てみましょう。
コードの詳細な説明:
'from openpyxl.chart import BarChart,Reference' は、Python にインポートされた openpyxl ライブラリですプログラミング言語 BarChart クラスと Reference クラスのステートメント。
BarChart は、棒グラフの作成に使用される openpyxl ライブラリのクラスです。さまざまなデータを受け入れて、それを棒グラフにプロットできます。
Reference は、Excel ワークシートのセルまたは範囲を参照するために使用される openpyxl ライブラリのクラスです。グラフにデータ ソースを設定するために使用できます。
chart=BarChart() は、BarChart オブジェクトを作成するための Python プログラミング言語のステートメントです。
BarChart は、棒グラフの作成に使用される openpyxl ライブラリのクラスです。さまざまなデータを受け入れて、それを棒グラフにプロットできます。
このステートメントでは、BarChart クラスのインスタンスを変数チャートに割り当てます。これにより、このインスタンスを使用して棒グラフを作成および変更できるようになります。
data=Reference(worksheet=ws,min_row=1,max_row=6,min_col=1,max_col=2) は、Excel ワークシートにデータ参照を作成する Python プログラミング言語のステートメントです。
Reference は、Excel ワークシートのセルまたは範囲を参照するために使用される openpyxl ライブラリのクラスです。グラフにデータ ソースを設定するために使用できます。
このステートメントでは、Reference オブジェクトを変数データに割り当てます。このオブジェクトは、参照するデータの範囲と位置を指定します。具体的には、参照するワークシート(今回はws)と、参照するセルの最小行番号(1)、最大行番号(6)、最小列番号(1)、最大列番号( 2)。これは、行 1 ~ 6、列 1 ~ 2 の間のすべてのセルを参照することを意味します。
chart.add_data(data,titles_from_data=True) は、openpyxl ライブラリで BarChart オブジェクトを作成するときにデータとタイトルを追加する Python プログラミング言語のステートメントです。
このステートメントでは、データ参照 (data) とブール値 (True) をパラメータとして BarChart オブジェクトの add_data() メソッドに渡します。このメソッドは、グラフにデータを追加するために使用されます。
同時に、titles_from_data という名前のパラメータも設定します。その値は True です。これは、データからタイトルを自動的に抽出し、グラフに追加することを意味します。タイトルを明示的に指定しない場合、このパラメータは無視されます。
ws.add_chart(チャート,'F6')
これにより、表が挿入される場所が分かりやすくなります。
実際、このテーブルは私たちの期待を満たしていませんでした。この場合、シリアル番号ごとに 2 つのヒストグラムを生成するつもりはありませんでしたが、青と赤の 2 つの列がありました。どうなるかを試してみましょう。まず、シリアル番号を変更しました 内容をテキストに変更して、どうなるかを確認します。
エラーは報告されず、希望通りのスタイルが得られました。
次に、数値をテキストに変更して、何が起こるかを見てみましょう。
エラーは報告されず、グラフは生成されますが、列がありません。
第三に、必要な結果を得るためにコードを変更します。よく考えてみると、コードを変更することしかできません。
データ=参照(worksheet=ws,min_row=1,max_row=6,min_col=1,max_col=2)
への変更
data=Reference(worksheet=ws,min_row=1,max_row=6,min_col=2)
要約する
1024