首頁>Club>
每個月從ERP系統中匯出很多張結構相同的Excel表,都有進行許多相同的操作,怎樣可以同步操作多個Excel表。求大神幫幫忙
3
回覆列表
  • 1 # 汽車仁Video

    兩個Excel表實現同步。

    1、開啟我們需要設定的 Excel表格(主動表),選中我們需要同步的資料單元格,右擊滑鼠選擇“複製”。

    2、右擊滑鼠開啟需要資料同步的 Excel表格(從動表),選中我們需要貼上的單元格,右擊在“貼上選項”中選擇“連結”。

    3、驗證“主動表”與“從動表”資料是否同步,以內蒙古人口為例,當“主動表”單元格中資料為“0”時,“從動表”相應的單元格中資料為“0”。

    4、兩個Excel表實現資料同步。

    注意事項

    資料同步關鍵在於兩個表要建立一個連結的關係。

    主動表中的資料改變,從動表的資料才會改變,反之不行。

  • 2 # 運維架構師之路

    you"re not kidding?同步操作是那麼的麻煩,直接把它自動化不香嗎?看我分解

    謹記以自動化工具為榮、人肉操作為恥。注意:要被操作的表,在下文中稱為源Excel表

    一、你需求提出的同步操作缺點

    同步操作雖然可以一次操作多個Excel的目的,但那仍然屬於人肉操作,因為你要手動去操作一次,還得每個Excel都去ctrl+s一次,1000個Excel操作完累不累

    手動操作就意味著可能會發生操作失誤

    根據你的描述得出以下兩點(滿足自動化基本要求):

    你的這個操作是規律性、重複性的

    你的Excel原表和輸出表的結構也有規律(結構是一致的)

    ERP系統估計你這沒辦法修改匯出功能原始碼,所以以下方案都是從你這端作為出發點

    二:自動化方案(一次編寫,一勞永逸)

    將下載到本地的源Excel統一放到一個目錄,雙擊exe程式,就將修改完成後的Excel按1-

    20.xlsx統一

    輸出到另外一個目錄了(這樣夠不夠香?),並在當前路徑下生成一個日誌檔案,標識源Excel-->目標Excel的對應關係,便於以後查詢or排錯

    詳細技術方案:

    Python+pandas庫輕鬆解決,下面是一個我之前批次修改excel的指令碼案例(原始碼在最後,但是得根據你的Excel結構和操作單獨編寫指令碼):

    將源Excel存在在指令碼目錄中的MAC目錄下,如圖

    執行 Excel操作指令碼

    .py

    (可以打包為exe)後生成了一個新目錄new_mac,

    run.log中記錄和轉換對應關係,源表-->新名字

    開啟Excel驗證轉換是否成功,源Excel結構:

    修改後的結構:

    原始碼:

    import os

    import pandas as pd

    import logging

    logging.basicConfig(filename="run.log", format="[%(levelname)s%(asctime)s]%(message)s",

    datefmt="%Y-%m-%d%H:%M:%S", level=logging.INFO, filemode="w")

    def formar_excel(current_mac_path, new_name):

    # 讀取excel資料

    data = pd.read_excel(current_mac_path)

    # d定義列更改後的名字

    rename = {

    "資料表格列序號": "No",

    "SN": "SN",

    "MAC": "MAC"

    }

    new_dic = {}

    # 獲取excel指定列

    dic = data.loc[:, [x for x in rename]].to_dict()

    # 生成pandas使用的dataframe

    for key in dic:

    test_list = []

    for k, v in dic[key].items():

    test_list.append(v)

    new_dic[rename[key]] = test_list

    # 生成新excel

    writeer = pd.ExcelWriter(f"{new_name}.xlsx")

    df1 = pd.DataFrame(new_dic)

    df1 = df1.astype("str")

    df1.to_excel(writeer, index=False)

    # 儲存

    writeer.save()

    # 獲取路徑

    new_excel_path = "./new_mac/"

    mac_path = os.path.abspath("./mac")

    try:

    if os.path.exists(new_excel_path):

    old_file = os.listdir(new_excel_path)

    for old_file in old_file:

    old_file = os.path.join(new_excel_path, old_file)

    os.remove(old_file)

    os.rmdir(new_excel_path)

    except Exception as e:

    finally:

    os.mkdir(new_excel_path)

    try:

    logging.info("開始轉換Excel")

    if os.path.exists(mac_path):

    excel_list = os.listdir(mac_path)

    new_name = 0

    for excel in excel_list:

    new_name += 1

    current_mac_path = os.path.join(mac_path, excel)

    formar_excel(current_mac_path, f"{new_excel_path}{new_name}")

    logging.info(f"{ excel } ------------> { new_name }.xlsx")

    logging.info("Excel 轉換完成")

    else:

    logging.error(f"讀取{mac_path}目錄失敗,已自動建立目錄,已經Excel表新增到此目錄中")

    os.mkdir(mac_path)

    except Exception as e:

    logging.error(f"ERROR:{e}")

  • 中秋節和大豐收的關聯?
  • 《海賊王》中路飛、艾斯、薩博三個人帶著不同的帽子,各自有何含義呢?