Python+Xlwings Excelの行と列を削除します。
一、需要:
ある会社が管理している複数の資本管理計画は毎日A表を作成して、業務員は手でA表を開けて、いくつかの行、列を削除してから新聞を印刷することができます。
手作業の代わりにプログラムを採用します。
二、分析:
1、元のファイルのコピーで操作するべきですので、フォルダ内のすべてのExcelを対象ディレクトリにコピーします。
shutil.co pyを使用します。
2、excelを開いて指定された行と列を削除したいです。
openpyxlはxlsフォーマットをサポートしていません。xlwtは行と列を削除できません。最終的にxlwingsを選択します。
三、コード実現:
スクリプトテストが完了したら、pyinstaller-Fを使用します。 エクセル_converter.py-i icon.icoはexeファイルに包装します。
実行可能なプログラムを業務者のパソコンにコピーして直接実行し、元のファイルをsrcusにドラッグします。dir,処理後ファイルをdst_に出力します。dir
テストされたエクセル2013は正常に使用されています。エクセル2007は接続できません。
以上はPython+XlwingsでExcelの行と列の詳細を削除しました。pythonについてExcelの行と列の資料を削除します。他の関連記事に注目してください。
ある会社が管理している複数の資本管理計画は毎日A表を作成して、業務員は手でA表を開けて、いくつかの行、列を削除してから新聞を印刷することができます。
手作業の代わりにプログラムを採用します。
二、分析:
1、元のファイルのコピーで操作するべきですので、フォルダ内のすべてのExcelを対象ディレクトリにコピーします。
shutil.co pyを使用します。
2、excelを開いて指定された行と列を削除したいです。
openpyxlはxlsフォーマットをサポートしていません。xlwtは行と列を削除できません。最終的にxlwingsを選択します。
三、コード実現:
#!/usr/bin/env python
# _*_ coding:utf-8 _*_
"""
@Time : 2019-12-27 17:16
@Author : Peanut_C
@FileName: excel_converter.py
"""
import os
import shutil
import xlwings as xw
current_dir = os.getcwd()
src_dir = os.path.join(current_dir, 'src_dir')
dst_dir = os.path.join(current_dir, 'dst_dir')
exist_list = ['YYYY', 'XXXX'] # A
def file_copy(source_dir, destination_dir):
os.chdir(source_dir)
for file in os.listdir(source_dir):
shutil.copy(file, destination_dir)
print('INFO ===>>> !')
def excel_modifier(wk_dir):
os.chdir(wk_dir)
for file in os.listdir(wk_dir):
# xls
# print(type(os.path.splitext(file)[1]))
if os.path.splitext(file)[1] != '.xls':
print(file, '===>>> , !')
else:
print(' ===>>>', file)
# app,
app = xw.App(visible=False, add_book=False)
app.screen_updating = False
app.display_alerts = False
load_wb = app.books.open(file)
load_ws = load_wb.sheets.active
print('\t ……')
# ( )
rows = load_ws.api.UsedRange.Rows.count
# cols = load_ws.api.UsedRange.Columns.count
# A
a_range = load_ws.range('A1:A'+str(rows-4)) # range
# range
print('\t ……')
cell_list = []
for cell in a_range:
cell_list.append(cell)
cell_list.reverse()
# print(cell_list)
# 、 ,
print('\t ……')
load_ws.range('H3:J3').api.unmerge() #
load_ws.range('H3:I3').api.merge() #
load_ws.range('J3').value = 'xxx' #
# A ,
print('\t ……')
for cell in cell_list:
if cell.value is not None: #
find_flag = 0 #
for exist_value in exist_list:
if cell.value.find(exist_value) != -1:
find_flag = 1 # 1
break #
else:
continue #
if find_flag == 0: #
cell_to_del = cell.address
# print(cell_to_del)
load_ws.range(cell_to_del).api.EntireRow.Delete()
else: #
cell_to_del = cell.address
# print(cell_to_del)
load_ws.range(cell_to_del).api.EntireRow.Delete()
# , ( )
load_ws.api.columns('K').delete
load_ws.api.columns('G').delete
load_ws.api.columns('B').delete
# Excel
print('\t ……')
load_ws.range('A1:H24').columns.autofit()
# , 、 、 Excel
load_wb.save()
load_wb.close()
app.quit()
print(' ===>>>', file, '
')
if __name__ == '__main__':
file_copy(src_dir, dst_dir)
excel_modifier(dst_dir)
print(' , dst_dir !
')
os.system('pause')
四、運行状況:スクリプトテストが完了したら、pyinstaller-Fを使用します。 エクセル_converter.py-i icon.icoはexeファイルに包装します。
実行可能なプログラムを業務者のパソコンにコピーして直接実行し、元のファイルをsrcusにドラッグします。dir,処理後ファイルをdst_に出力します。dir
テストされたエクセル2013は正常に使用されています。エクセル2007は接続できません。
以上はPython+XlwingsでExcelの行と列の詳細を削除しました。pythonについてExcelの行と列の資料を削除します。他の関連記事に注目してください。