Pythonはまだこのように遊ぶことができます。30行のコードだけでエクセルから個人の当直表を抽出します。
一、検索操作
1.Excelモジュールxlrd、xlwt、xlutilsはそれぞれExcelファイルの読み、書き、読み、書き换えの仕事を担当します。
2.openpyxl直接Excelファイルに対して読み書きができます。
3.panedasは直接Excelファイルに読み書きできます。
二、openpyxlモジュールの取り付け
1.当直情報をすべて読み取る。
2.一般的な状況でエクセルは一部の表が空ですので、Noneのエクセル行の文字列データを全部保存します。
3.全ての当直データを循環し、現在の行データをデータ文字列に形成する。
4.当直情報文字列に自分の名前が含まれているかどうかを判断する。
5.自分の情報が含まれているデータのキーポイント情報(当直時間、名前)を保存します。
6.現在の文字列にすべてのNoneのデータが含まれているかどうかを判断します。
7.当直表は空いている行がないので、Noneを調べて、直接循環から飛び出す。
1.当直情報表のエクセルを作成する。
2.自分の当番情報を循環させる;
3.作成した表に情報を記入します。
七、まとめ
openpyxlモジュールの各機能を熟知しています。excelの操作に便利です。選別して自分の関心を持つ肝心な情報を取り出して、表を再建します。次は当直時間によって、pythonで自動的に自分の微信にメッセージを送ります。
ここでPythonについてはこのようにして遊んでいます。30行のコードだけでエクセルから自分の当番表を抽出した文章を紹介します。Pythonはエクセルから自分の当番表の内容を抽出します。以前の文章を検索してください。または次の関連記事を引き続きご覧ください。これからもよろしくお願いします。
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はエクセルから自分の当番表の内容を抽出します。以前の文章を検索してください。または次の関連記事を引き続きご覧ください。これからもよろしくお願いします。