應用Python解決報表日常對數問題

2021-06-30 16:08:53 字數 4440 閱讀 2161

一、準備工作

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...