一、準備工作
1). 安裝python,installed version:2.7.9 in window.
2). 安裝pip(可選)
3). excel文件規範化
4). 安裝xlrd
二、編寫指令碼
總結:# -*- coding: cp936 -*-
import xlrd
class datacomparison():
compare_result = ''
f_dir = r''
datasrc = ''
datadst = ''
f1 = ''
f2 = ''
col_sets_sheet1 =
col_sets_sheet2 =
f1_sheet_index = 0
f2_sheet_index = 0
if_with_title = '1'
def __init__(self, datalist):
############### set parameters #############
compare_result = datalist[0]
datasrc = datalist[1]
datadst = datalist[2]
# read the 2 excel files to be compared.
# set data file name
f1 = datalist[3]
f2 = datalist[4]
# set col numbers in the 1st sheet
col_sets_sheet1 = datalist[5] #
col_sets_sheet2 = datalist[6] #
# set sheet in files to be compared.
# the 1st sheet as default
f1_sheet_index = datalist[7]
f2_sheet_index = datalist[8]
# set if excel sheet has title(only 1st row as title)
if_with_title = datalist[9]
############### load data & compare #############
print "start loading..."
book1 = xlrd.open_workbook(f1)
book2 = xlrd.open_workbook(f2)
print "loading files ok!"
b1sheet = book1.sheet_by_index(f1_sheet_index)
b2sheet = book2.sheet_by_index(f2_sheet_index)
print "ranging data"
col_1_b1sheet = b1sheet.col_values(col_sets_sheet1[0])
col_2_b1sheet = b1sheet.col_values(col_sets_sheet1[1])
col_1_b2sheet = b2sheet.col_values(col_sets_sheet2[0])
col_2_b2sheet = b2sheet.col_values(col_sets_sheet2[1])
if if_with_title == '1':
print "removing titles"
col1_b1sheet = col_1_b1sheet[1:]
col2_b1sheet = col_2_b1sheet[1:]
col1_b2sheet = col_1_b2sheet[1:]
col2_b2sheet = col_2_b2sheet[1:]
print "round columns with number type"
for i, val in enumerate(col2_b1sheet):
col2_b1sheet[i] = round(val,2)
for i, val in enumerate(col2_b2sheet):
col2_b2sheet[i] = round(val,2)
# get sum value of number cols
sum1 = sum(col2_b1sheet)
sum2 = sum(col2_b2sheet)
print "do zipping..."
zip1 = zip(col1_b1sheet, col2_b1sheet)
zip2 = zip(col1_b2sheet, col2_b2sheet)
print "sort ziped list"
zip1.sort()
zip2.sort()
print "compare rows in summary"
len1 = len(zip1)
len2 = len(zip2)
print len1, '--', len2
compare_result = compare_result+":\n 總數比對:"
if len1 == len2:
print "記錄總數比較一致!"
compare_result = compare_result+"結果一致,均為"+str(len1)+"條;"
else:
print "記錄總數不一致!"
compare_result = compare_result+"結果不一致,"+ datasrc +"為"+str(len1)+"條,"+datadst +"為"+str(len2)+"條;"
print sum1, '--', sum2
if round(sum1,2) == round(sum2,2):
print "總金額比較一致!"
compare_result = compare_result+"總金額比較一致,"+"均為"+str(sum1)+";\n"
else:
print "總金額不一致!"
compare_result = compare_result+"總金額不一致,"+datasrc +"為"+str(sum1)+","+datadst +"為"+str(sum2)+";\n"
print "get different rows in detail"
cnt = 0
for c in range(len(zip1)):
if zip1[c] != zip2[c]:
cnt += 1
print zip1[c], '--', zip2[c]
if cnt >0:
print cnt, "行比較有差異!"
compare_result = compare_result + " 明細比對:存在"+str(cnt)+"條差異。"
else:
print "未發現明細差異資料"
compare_result = compare_result + " 明細比對:無差異。"
print compare_result
self.compare_result = compare_result
print "finished!"
def getresult(self):
return self.compare_result
datasrc = "源資料1"
datadst = "源資料2"
f1_sheet_index = 0
f2_sheet_index = 0
if_with_title = '1'
compare_result = "比對結果:"
f1 = r'd:\tmp\src001.xlsx'
f2 = r'd:\tmp\tmp001.xlsx'
col_sets_sheet1 = [2,4] #取第3、5列
col_sets_sheet2 = [1,2] #取第2、3列
# 組裝datalist
datalist = [compare_result, datasrc, datadst, f1, f2, col_sets_sheet1, col_sets_sheet2, f1_sheet_index, f2_sheet_index, if_with_title]
dc1 = datacomparison(datalist)
# 列印比較結果
print dc1.getresult()
應用日常生活對 的理解
常聽朋友說起相關erp,總是不太理解,以下面方式一聽明白多了 呵呵 妻子 當然可以,來幾個人,幾點來,想吃什麼菜 丈夫 6個人,我們7點左右回來,準備些酒,烤鴨,番茄炒蛋,冷盤,蛋花湯 你看可以嗎 商務溝通 妻子 沒問題,我會準備好的.訂單確認 妻子記錄下需要做的選單 mps計畫 具體要準備的東西 ...
python專題我對json的日常操作
本篇文章將會闡述對json的日常操作,如何讀取json檔案,將json檔案轉為字典 如何將字典轉為json,將字典寫入檔案等 json對於初學者可以理解是一種資料儲存格式,比如像xml json的資料儲存格式是kev 鍵 value 值 形式,每個key都是唯一,並且有對應唯一的value,他們用冒...
對python生成業務報表的例項詳解
本文介紹乙個用python結合xlsxwriter自動生成業務報表的程式。這裡的業務資料採用的是指定的值,真實情況下需要其他程式來接入資料。coding utf 8 import xlsxwriter workbook xlsxwriter.workbook chart.xlsx worksheet...