溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

利用python怎么對excel表格進行查重

發(fā)布時間:2020-12-07 14:24:23 來源:億速云 閱讀:307 作者:Leah 欄目:開發(fā)技術(shù)

這期內(nèi)容當中小編將會給大家?guī)碛嘘P(guān)利用python怎么對excel表格進行查重,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

在此記錄一下

首先安裝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個表單

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

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

# 將需要的數(shù)據(jù)讀取保存
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 = []
# 判斷是否已經(jīng)標記為重復
# 重復返回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)):
  # 判斷是否已經(jīng)標記為重復
  # 如果重復不做判斷,結(jié)束本次循環(huán)
  # 否則斷續(xù)向下執(zhí)行
  if True == isRepeat(row + 2):
    continue
  elif False == isRepeat(row + 2):
    # 獲取當前行數(shù)據(jù)
    current = money[row]
    # 遍歷后面行是否和當前行數(shù)據(jù)重復
    for subRow in range(1, len(money)):
      # 獲取下一行數(shù)據(jù)
      subCur = money[subRow]
      # 判斷當前行內(nèi)容和對比行內(nèi)容是否相等
      if current == subCur:
        # 再判斷編號行內(nèi)容是否相等
        if num[row] == num[subRow]:
          continue
        else:
          # 對比其它內(nèi)容是否相等
          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()
# 關(guān)閉當前工作簿
wb.close()
# 退出excel程序
app.quit()
# 阻塞不退出
input("Press Any Key")

鑒于媳婦辦公電腦不方便安裝python環(huán)境,所以打包成exe可執(zhí)行程序,使用pyinstaller工具
安裝

pip install pyinstaller

打包

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

上述就是小編為大家分享的利用python怎么對excel表格進行查重了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI