1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢(xún)
      選擇下列產(chǎn)品馬上在線(xiàn)溝通
      服務(wù)時(shí)間:8:30-17:00
      你可能遇到了下面的問(wèn)題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
      Python3實(shí)現(xiàn)兩個(gè)Excel文件內(nèi)容比對(duì)-創(chuàng)新互聯(lián)

      最近在工作中,需要人工比對(duì)大量的excel格式報(bào)表,剛好剛學(xué)了Pyhon入門(mén)基礎(chǔ)知識(shí),想著寫(xiě)個(gè)東西練練手,不但能提高代碼編寫(xiě)能力,還能減輕工作量,提高工作效率。說(shuō)干就干,簡(jiǎn)單的理了邏輯。首先,將目標(biāo)表和源表的內(nèi)容分別寫(xiě)入到字典中,Excel表中不確定有沒(méi)有字段是唯一值,所以選擇了行號(hào)作為key值,一行的內(nèi)容放到list中,然后從源表中取一行去目標(biāo)表中遍歷。想好之后開(kāi)始敲代碼了,在代碼編寫(xiě)過(guò)程中遇到很多的問(wèn)題,都是遇到一個(gè)查一個(gè)。基本的比對(duì)功能實(shí)現(xiàn)后,就想著在加個(gè)日志記錄下比對(duì)結(jié)果。寫(xiě)下此文記錄下,just do it.
      下面是全部代碼

      我們提供的服務(wù)有:網(wǎng)站設(shè)計(jì)制作、網(wǎng)站設(shè)計(jì)、微信公眾號(hào)開(kāi)發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、建德ssl等。為成百上千企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢(xún)和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的建德網(wǎng)站制作公司
      #-*- coding: utf-8 -*-
      
      #比對(duì)兩個(gè)Excel文件內(nèi)容的差異
      #---------------------假設(shè)條件----------------
      #1、源表和目標(biāo)表格式一致
      #2、不存在合并單元格
      #3、第2行開(kāi)始比對(duì)
      #---------------------------------------------
      
      import xlrd
      import xlwt
      import os
      import time;  # 引入time模塊
      
      #往日志文件中追加內(nèi)容函數(shù)
      def writeappend_logfile(filename,content):
          file=open(filename,'a') #以追加方式打開(kāi)日志文件
          time_now= time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())  #系統(tǒng)時(shí)間格式化
          file.writelines(time_now+':'+content+'\n')      #寫(xiě)入內(nèi)容
          file.close() #關(guān)閉文件
      
      def read_excel(ori_path,tar_path,sub_name):#
          success=0        #匹配一致數(shù)量
          fail=0           #匹配不一致數(shù)量
          origin_xls={} #存儲(chǔ)源xls文件
          target_xls={} #比對(duì)的xls文件
         wb_ori=xlrd.open_workbook(ori_path) #打開(kāi)原始文件
         wb_tar=xlrd.open_workbook(tar_path) #打開(kāi)目標(biāo)文件
          sheet_num = len(wb_ori.sheets()) #源表子表數(shù)量
      ##    for sheet_i in range(sheet_num):  #excel中子頁(yè)面數(shù)量
      ##        sheet_ori=wb_ori.sheet_by_index(sheet_i) #通過(guò)索引值獲取源表名
      ##        sheet_tar=wb_tar.sheet_by_index(sheet_i) #通過(guò)索引值獲取源表名
      
          startime=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())    #獲取系統(tǒng)當(dāng)前時(shí)間并格式化為格式
          print (startime,' 開(kāi)始比對(duì)...')
          logname='log_'+startime[0:10]+'.log'               #截取日期年月日構(gòu)成日志文件名
      
          logfile=open(logname,'w')    #創(chuàng)建日志文件,如果文件存在則清空內(nèi)容,不存在則創(chuàng)建,如果需要同時(shí)批量比對(duì)多張表,可以考慮將日志文件名作為參數(shù)傳入
          logfile.writelines(startime+':【開(kāi)始比對(duì)】...'+'\n')       #寫(xiě)入開(kāi)始時(shí)間
          logfile.close()            #關(guān)閉日志文件
      
          try:
              sheet_ori=wb_ori.sheet_by_name(sub_name)
              sheet_tar=wb_tar.sheet_by_name(sub_name)
              if sheet_ori.name==sheet_tar.name:
                  #sheet表名
                  if sheet_ori.name==sub_name:
                  #先將數(shù)存入dictionary中dictionary(rows:list)
                  #第一行存儲(chǔ)表頭
                  #源表取一行數(shù)據(jù)與目標(biāo)表全表進(jìn)行比對(duì)如果表中存在主鍵可以用主鍵進(jìn)行索引
                  #數(shù)據(jù)從excel第3行開(kāi)始
                      for rows in range(1,sheet_ori.nrows):
                          orign_list=sheet_ori.row_values(rows) #源表i行數(shù)據(jù)
                          target_list=sheet_tar.row_values(rows) #目標(biāo)表i行數(shù)據(jù)
                          origin_xls[rows]=orign_list     #源表寫(xiě)入字典
                          target_xls[rows]=target_list    #目標(biāo)表寫(xiě)入字典
      
                      if origin_xls[1]  == target_xls[1]:
                          print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())+' 表頭一致')
                      for ori_num in origin_xls:
                          flag='false'          #判斷是否一致標(biāo)志
                          for tar_num in target_xls:
                              if origin_xls[ori_num]==target_xls[tar_num]:
                                  flag='true'
                                  break              #如果匹配到結(jié)果退出循環(huán)
                          if flag=='true':           #匹配上結(jié)果輸出后臺(tái)日志
                              print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())+' row:%d is ok'%ori_num)
                              success+=1
                          else:                      #匹配不上將源表中行記錄寫(xiě)入txt
                              print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())+' row:%d is different'%ori_num)
                              fail+=1
                              data=origin_xls[ori_num]
                              logstr='【不一致】row<'+str(ori_num)+'>:'+str(data)
                             writeappend_logfile(logname,logstr)
                     # logstr='【比對(duì)完成】總記錄數(shù):'+str(ori_num)+'條,一致:'+str(success)+'條,不一致:'+str(fail)+'條'
                      logstr='【比對(duì)完成】總記錄數(shù):{:d}條,一致:{:d}條,不一致:{:d}條'.format(ori_num,success,fail)
                      print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())+' 【%s】比對(duì)結(jié)束'%sheet_ori.name)
                      print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())+' 總記錄數(shù):%d條,一致:%d條,不一致:%d條'%(ori_num,success,fail))
                     writeappend_logfile(logname,logstr)
      
              else:
                  errmsg='【'+sub_name+'】子表名不一致'
                 writeappend_logfile(logname,errmsg)
          except Exception as err:
            writeappend_logfile(logname,str(err)) #輸出異常
      
      def main():
          pass
      
      if __name__ == '__main__':
      
          read_excel(r'2.xls',1.xls','sheet1')
      

      另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線(xiàn),公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿(mǎn)足用戶(hù)豐富、多元化的應(yīng)用場(chǎng)景需求。


      文章名稱(chēng):Python3實(shí)現(xiàn)兩個(gè)Excel文件內(nèi)容比對(duì)-創(chuàng)新互聯(lián)
      路徑分享:http://www.ef60e0e.cn/article/dicphg.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        寿光市| 武邑县| 嘉荫县| 雷山县| 专栏| 麻城市| 沾益县| 青冈县| 银川市| 奎屯市| 黄石市| 华阴市| 松桃| 湖州市| 绵竹市| 高陵县| 洛浦县| 道孚县| 浦县| 延寿县| 公安县| 乐至县| 云南省| 枣强县| 马公市| 长泰县| 象山县| 信宜市| 乐平市| 南安市| 广饶县| 香河县| 延寿县| 景东| 荃湾区| 扶风县| 莲花县| 南澳县| 山东| 来凤县| 秦皇岛市|