python

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

33

319 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 56.

前のページ 次のページ



[添付ファイル]


お問い合わせ

プロフィール

マッスル

自己紹介

本サイトの作成者。
趣味:プログラム/水耕栽培/仮想通貨/激辛好き
プログラムは趣味と勉強を兼ねて、のんびり本サイトを作っています。
フレームワークはdjango。
仮想通貨はNEMが好き。
水耕栽培は激辛好きが高じて、キャロライナ・リーパーの栽培にチャレンジ中。

サイト/ブログ

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

ツイッター

@darkimpact0626