python操作excel(报表比对工具)

先上几段代码,这个是用python语言改写之前的  java POI读写excel(项目实际需求) 目的是为了更好的掌握python,新手请勿唾弃。呵呵

ReadXlsExcel

# -*- coding: utf-8 -*-

__author__ = 'Administrator'

import xlrd,time

from CompareExcel import *

from ireadexcel.IReadExcel import IReadExcel

class ReadXlsExcel(IReadExcel):

def __init__(self):

print 'readExcel------init----'

def readExcel(self,reportType='reportType'):

print '2222222'

def open_excel(file = 'file.xls'):

try :

data = xlrd.open_workbook(file)

return data

except Exception ,e:

print str(e)

#根据索引获取excel表格中的数据 参数:file:excel文件路径 comnameindex:表头列名所在行的所以 ,by——inde 表的索引

def excel_table_byindex(file = 'file.xls',colnameindex = 6,by_index =0,p='p'):

data = p.open_excel(file)

table = data.sheets()[by_index]

nrows = table.nrows #行数

ncols = table.ncols #列数

colnames = table.row_values(colnameindex) #某一行的数据

print colnames

list = [] #空的列表

for rownum in range(1,nrows) :

row = table.row_values(rownum)

if row :

app = {} #定义一个空的字典

for i in range(len(colnames)) : #如果你需要一个数值序列,内置函数range()可能会很有用,它生成一个等差级数链表

app[colnames[i]] = row[i]

list.append()

return list

#根据名称获取excel表格中的数据   参数file:excel文件路径 colnameindex:表头列名所在行的所以,by_name :sheet1名称

def excel_table_byname(file = 'file.xls',colnameindex = 3,by_name =u'Sheet1',p1='p'):

data = p1.open_excel(file)

table = data.sheet_by_name(by_name)

nrows = table.nrows #行数

#colnames = table.row_values(6) #某一行的数据

list =[]

for rownum in range(1,nrows):

row = table.row_values(rownum)

if row :

app = {}

for i in range(len(row)):

app[i] = row[i]

list.append(app)

#这里的数据结构类似于在java中的list里放了很多map,这里的map为key值为每一列的列数,value对应的列对应的值,一行对应一个map

return list

def mai():

#for i in range(1,73):

print time.time()

p2 = ReadXlsExcel()

tables = p2.excel_table_byname(file="e:\\report\\alipay.xls",colnameindex=3,p1=p2)

print time.time()

return tables

if __name__=="__main__":

list = ReadXlsExcel.mai()

com = CompareExcel()

com.compareExcel(alipaylist=list)

CompareExcel

# -*- coding: utf-8 -*-
__author__ = 'Administrator'
class CompareExcel:
    def __init__(self):
        print 'init------'
 
    def compareExcel(self,qlylist='listqlyDict',alipaylist ='listalipayDict'):
        '''这里的算法为,比较tp的票号,和qly的票号是否相同,如果相同,则比较他们的金额是否相同,然后将比对的结果计入到相同的数据结构中'''
        print 'compare'
        for alipay in alipaylist:
            #alipay业务流水号
            alipay_key = alipay[1]
            for qly in qlylist:
                #qly业务流水号
                qly_key = qly[16]
                print alipay_key
 
            #for q in qly.keys():

转载于:https://my.oschina.net/u/731676/blog/268281

武汉派先科技有限公司推出的<>专业版是市场上最为强大便捷的Excel比较工具。它为工作中经常需要进行数据比较的用户提供了完美的解决方案。无论你的数据是存放在Excel文件,还是存放在文本文件,或者存放在Access、Microsoft SQL数据库,<>专业版都可以提供快速比较,大量节省您的时间和精力,将您从枯燥冗长的数据海洋中解放出来,从而让您的工作变得轻松愉快。 <>专业版不同于其它同类产品。其它同类产品在比较时候,要么是一个插件,要么需要显式地在前台运行Excel程序。而百分百比较Excel完全独立运行,与后台的Excel程序协同完成工作,不需要来回切换程序。 本产品的主要特性点: 1、 支持对任意Excel内容的比较 • 比较整个工作簿(workbook),并且可以对工作簿中的每个工作表进行单独的比较设置 • 比较整个工作表(worksheet),并允许多种比较设置 • 比较工作表中的已命名区域(named range),并允许多种比较设置 • 比较工作表中用户运行时自由选定的任何区域(range),并允许多种比较设置 2、 支持对远程数据的比较 • 支持从文本文件(Text/CSV)中导入数据比较 • 支持从Access数据库中导入数据比较 • 支持从微软SQL数据库中导入数据比较 3、支持灵活的多种比较设置 • 支持按第一行名字配对比较 • 支持按Excel所在列位置配对比较 • 支持按范围(range)内的单元坐标配对比较 (同一坐标的单元配对比较) • 支持用户自由定义的列映射配对比较 • 支持值和公式的比较 • 支持大小写区分 • 所有的比较设置均可保存供下次调用 4、自动生成XML格式的比较结果报表 • XML格式保留对差异单元的加亮显示 • XML格式使您的生意伙伴对比较结果的自动再处理(程序处理)成为可能 • XML格式允许没有安装微软Excel的生意伙伴用互联网浏览器进行显示比对 • XML格式也允许你在Excel中对比较结果进行显式和分析 5、原始Excel文件和比较结果显示在同一个程序窗口中,无需切换 6、可一键快速定位比较结果对应的原始Excel单元 7、独特的比较算法,即使大量的数据也可快速比较 8、友好的用户界面,让你的操作轻松自如.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值