Python 進行excel查重

最近媳婦工做上遇到一個重複性勞動,excel表格查重,重複的標記起來,問我能不能寫個程序讓它自動查重標記
必須安排
第一次正兒八經寫python,邊上網查資料,邊寫
終於成功了
在此記錄一下
python

  1. 首先安裝xlwings
pip install xlwings
  1. 寫代碼
import xlwings as xw

# 輸入表名
title = input()

# 指定不顯示地打開Excel,讀取Excel文件
app = xw.App(visible=False, add_book=False)
wb = app.books.open(title)  # 打開Excel文件
sheet = wb.sheets[0]  # 選擇第0個表單

# 獲取錶行數
sheetInfo = sheet.used_range
maxRow = sheetInfo.last_cell.row
# maxColumn = sheetInfo.last_cell.column
# print('錶行數:',maxRow)

# 單據編號
num = []
# 報銷類型
baoxiaoType = []
# 部門
department = []
# 收款方
name = []
# 報銷金額
money = []

# 將須要的數據讀取保存
for row in range(2, maxRow):
    value = sheet.range("A" + str(row)).value
    num.append(value)

    value = sheet.range("C" + str(row)).value
    baoxiaoType.append(value)

    value = sheet.range("H" + str(row)).value
    department.append(value)

    value = sheet.range("N" + str(row)).value
    name.append(value)

    value = sheet.range("K" + str(row)).value
    money.append(value)

# print(num)
# print(baoxiaoType)
# print(department)
# print(name)
# print(money)

# 保存標記爲重複的行號
flag = []
# 判斷是否已經標記爲重複
# 重複返回Ture
# 不然返回False
def isRepeat(index):
    for num in flag:
        if num == index:
            return True
        else:
            continue
    return False


# 遍歷每一行,進行查重
for row in range(0, len(money)):
    # 判斷是否已經標記爲重複
    # 若是重複不作判斷,結束本次循環
    # 不然斷續向下執行
    if True == isRepeat(row + 2):
        continue
    elif False == isRepeat(row + 2):
        # 獲取當前行數據
        current = money[row]
        # 遍歷後面行是否和當前行數據重複
        for subRow in range(1, len(money)):
            # 獲取下一行數據
            subCur = money[subRow]
            # 判斷當前行內容和對比行內容是否相等
            if current == subCur:
                # 再判斷編號行內容是否相等
                if num[row] == num[subRow]:
                    continue
                else:
                    # 對比其它內容是否相等
                    if (
                        (department[row] == department[subRow])
                        and (baoxiaoType[row] == baoxiaoType[subRow])
                        and (name[row] == name[subRow])
                    ):
                        # 將重複行行號保存,表格的表頭,且表頭行號從1 開始,因此行號等於當前索引+2
                        flag.append(subRow + 2)
                        # 設置兩個重複行的首列單元格顏色
                        cell = sheet.range("A" + str(row + 2))
                        cell.color = 0, 255, 255
                        subcell = sheet.range("A" + str(subRow + 2))
                        subcell.color = 0, 255, 255
                        # 打印提示
                        print("重複起始行:", row + 2, "重複行", subRow + 2)

# 保存當前工做簿
wb.save()
# 關閉當前工做簿
wb.close()
# 退出excel程序
app.quit()
# 阻塞不退出
input("Press Any Key")
  1. 鑑於媳婦辦公電腦不方便安裝python環境,因此打包成exe可執行程序,使用pyinstaller工具

安裝shell

pip install pyinstaller

打包app

# -F 打包爲單文件
# -i 指定圖標
pyinstaller -F *.py -i *.ico

工具

相關文章
相關標籤/搜索