1. 程式人生 > 程式設計 >用python對excel查重

用python對excel查重

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

首先安裝xlwings庫

pip install xlwings

寫程式碼

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
            # 列印提示
            print("重複起始行:",row + 2,"重複行",subRow + 2)

# 儲存當前工作簿
wb.save()
# 關閉當前工作簿
wb.close()
# 退出excel程式
app.quit()
# 阻塞不退出
input("Press Any Key")

鑑於媳婦辦公電腦不方便安裝python環境,所以打包成exe可執行程式,使用pyinstaller工具
安裝

pip install pyinstaller

打包

# -F 打包為單檔案
# -i 指定圖示
pyinstaller -F *.py -i *.ico

以上就是用python對excel查重的詳細內容,更多關於python excel查重的資料請關注我們其它相關文章!