Pythonはまだこのように遊ぶことができます。30行のコードだけでエクセルから個人の当直表を抽出します。


一、検索操作
1.Excelモジュールxlrd、xlwt、xlutilsはそれぞれExcelファイルの読み、書き、読み、書き换えの仕事を担当します。
2.openpyxl直接Excelファイルに対して読み書きができます。
3.panedasは直接Excelファイルに読み書きできます。
二、openpyxlモジュールの取り付け

pip install openpyxl
三、当直表の自分の情報を読み取り、選別する
1.当直情報をすべて読み取る。
2.一般的な状況でエクセルは一部の表が空ですので、Noneのエクセル行の文字列データを全部保存します。
3.全ての当直データを循環し、現在の行データをデータ文字列に形成する。
4.当直情報文字列に自分の名前が含まれているかどうかを判断する。
5.自分の情報が含まれているデータのキーポイント情報(当直時間、名前)を保存します。
6.現在の文字列にすべてのNoneのデータが含まれているかどうかを判断します。
7.当直表は空いている行がないので、Noneを調べて、直接循環から飛び出す。

dutys = []
  book = openpyxl.load_workbook('duty.xlsx',data_only=True)
  sheet = book.active
  all_data = book.get_sheet_by_name("    ")
  none_str = ''.join([str(None).ljust(20) for c in range(1,all_data.max_column+1)])
  for r in range(1,all_data.max_row + 1):
    cur_str = ''.join([str(all_data.cell(row=r,column=c).value).ljust(20) for c in range(1,all_data.max_column+1)])
    if cur_str.find("***") >= 0:
      dutys.append({
        "date": all_data.cell(row=r,column=2).value,
        "name": all_data.cell(row=r,column=3).value
      })
    elif cur_str.find(none_str) >= 0:
      break
  return dutys
四、自分の当番情報表を作成する
1.当直情報表のエクセルを作成する。
2.自分の当番情報を循環させる;
3.作成した表に情報を記入します。

 book = openpyxl.Workbook()
  sheet = book.active
  for i in range(len(dutys)):
    sheet.cell(row=1 + i, column=1).value = dutys[i].get("name")
    sheet.cell(row=1 + i, column=2).value = f'{dutys[i].get("date")}'
  book.save('my_duty.xlsx')
五、全部のコード

#!/usr/bin/env python
"""
@Author  :Rattenking
@Date    :2021/06/02 10:19
@CSDN	 :https://blog.csdn.net/m0_38082783
"""

import openpyxl
import time

def get_my_duty_date():
  dutys = []
  book = openpyxl.load_workbook('duty.xlsx',data_only=True)
  sheet = book.active
  all_data = book.get_sheet_by_name("    ")
  none_str = ''.join([str(None).ljust(20) for c in range(1,all_data.max_column+1)])
  for r in range(1,all_data.max_row + 1):
    cur_str = ''.join([str(all_data.cell(row=r,column=c).value).ljust(20) for c in range(1,all_data.max_column+1)])
    if cur_str.find("***") >= 0:
      dutys.append({
        "date": all_data.cell(row=r,column=2).value,
        "name": all_data.cell(row=r,column=3).value
      })
    elif cur_str.find(none_str) >= 0:
      break
  return dutys

def create_my_duty_list(dutys):
  book = openpyxl.Workbook()
  sheet = book.active
  for i in range(len(dutys)):
    sheet.cell(row=1 + i, column=1).value = dutys[i].get("name")
    sheet.cell(row=1 + i, column=2).value = f'{dutys[i].get("date")}'
  book.save('my_duty.xlsx')

if __name__ == "__main__":
  start_time = int(round(time.time() * 1000))
  dutys = get_my_duty_date()
  create_my_duty_list(dutys)
  end_time = int(round(time.time() * 1000))
  print(f'         :{end_time - start_time}ms')
六、実行結果
在这里插入图片描述
七、まとめ
openpyxlモジュールの各機能を熟知しています。excelの操作に便利です。選別して自分の関心を持つ肝心な情報を取り出して、表を再建します。次は当直時間によって、pythonで自動的に自分の微信にメッセージを送ります。
ここでPythonについてはこのようにして遊んでいます。30行のコードだけでエクセルから自分の当番表を抽出した文章を紹介します。Pythonはエクセルから自分の当番表の内容を抽出します。以前の文章を検索してください。または次の関連記事を引き続きご覧ください。これからもよろしくお願いします。