python

しょっちゅう忘れることを書いておく。

66

705 views

エクセルファイル中にオートシェイプが含まれているかをチェックするツール

ディレクトリにエクセル(.xlsx、.xls)を置いて、本ツールを実行すると各エクセルファイルにオートシェイプが含まれているかをチェックします。
パスは36行目のC:\excel_filesを変更すればOK。

# coding: UTF-8
import win32com.client
import glob
import os


def get_abs_xlsx_path(dir_name):
    xlsx_list = []
    merge_list = []
    new_list = glob.glob(os.path.join(dir_name, "*.xlsx"))
    old_list = glob.glob(os.path.join(dir_name, "*.xls"))
    merge_list.extend(old_list)
    merge_list.extend(new_list)
    for file_name in merge_list:
        xlsx_list.append(os.path.abspath(file_name))
    return xlsx_list


def is_autoshape_exists(xlsx_file_name):
    ret = False
    excel = win32com.client.Dispatch("Excel.Application")
    #excel.Visible = True
    book = excel.WorkBooks.Open(xlsx_file_name)
    sheets = book.WorkSheets
    for sheet in sheets:
        if len(sheet.shapes) > 0:
            ret = True
            break

    excel.Quit()
    return ret


def main():
    # エクセルファイルを検索する
    xlsx_list = get_abs_xlsx_path(r"C:\excel_files")
    f = open("result.csv", "w", encoding="utf-8")

    for xlsx_file in xlsx_list:
        file_name = xlsx_file.split(os.sep)[-1]
        if is_autoshape_exists(xlsx_file):
            print(f"{xlsx_file} オートシェイプがあります")
            f.write(f"{file_name}, あり\n")
        else:
            print(f"{xlsx_file} オートシェイプがありません")
            f.write(f"{file_name}, なし\n")
        f.flush()
    f.close()


if __name__ == '__main__':
    main()

Page 52 of 69.

前のページ 次のページ



[添付ファイル]


お問い合わせ

プロフィール

すぺぺぺ

自己紹介

本サイトの作成者。
プログラムは趣味と勉強を兼ねて、のんびり本サイトを作っています。
フレームワークはdjango。
ChatGPTで自動プログラム作成に取り組み中。

サイト/ブログ

https://www.osumoi-stdio.com/novel/

ツイッター

@darkimpact0626