xlsx を シートで分割 (python3)


表示されているシートごとのファイルに xlsx を分割します。

split_xlsx.py
#! /usr/bin/python
# -*- coding: utf-8 -*-
#
#   split_xlsx.py
#
#                   Jan/24/2019
import  sys
from openpyxl import load_workbook
#
# ---------------------------------------------------------------
def sheet_pick_up_proc(wb,sheetnames,nn_sheet):
    sheet_target = sheetnames[nn_sheet]
    for sheet in sheetnames:
        if sheet != sheet_target:
            del wb[sheet]
        else:
            print(sheet_target)
#
    xlsx_out = "sheet_%d.xlsx" % nn_sheet
    wb.save(xlsx_out)
#
# ---------------------------------------------------------------
sys.stderr.write ("*** 開始 ***\n")
#
xlsx_file = sys.argv[1]
sys.stderr.write(xlsx_file + "\n")
#
wa = load_workbook (filename = xlsx_file)
#
sheetnames = wa.sheetnames
print(sheetnames)
#for sheet in sheetnames:
#   print(wa[sheet].sheet_state)
#
for icount in range(len(sheetnames)):
    sys.stderr.write("icount = %d\n" % icount)
    sheet = sheetnames[icount]
    wa = load_workbook(filename = xlsx_file)
    if wa[sheet].sheet_state == "visible":
        try:
            sheet_pick_up_proc(wa,sheetnames,icount)
        except Exception as ee:
            sys.stderr.write("*** error *** in sheet_pick_up_proc ***\n")
            sys.stderr.write(str(ee) + "\n")
#
sys.stderr.write ("*** 終了 ***\n")
# ---------------------------------------------------------------

実行方法

./split_xlsx.py in01.xlsx