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

本贴最后更新于 4287 天前,其中的信息可能已经物是人非

先上几段代码,这个是用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():</pre> 


后面会陆续补充直到完成

  • Python

    Python 是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。

    557 引用 • 675 回帖
  • Excel
    31 引用 • 28 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • FFmpeg

    FFmpeg 是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。

    23 引用 • 32 回帖
  • 分享

    有什么新发现就分享给大家吧!

    248 引用 • 1794 回帖
  • 友情链接

    确认过眼神后的灵魂连接,站在链在!

    24 引用 • 373 回帖
  • sts
    2 引用 • 2 回帖 • 229 关注
  • Sym

    Sym 是一款用 Java 实现的现代化社区(论坛/BBS/社交网络/博客)系统平台。

    下一代的社区系统,为未来而构建

    524 引用 • 4601 回帖 • 706 关注
  • ngrok

    ngrok 是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道。

    7 引用 • 63 回帖 • 650 关注
  • Word
    13 引用 • 41 回帖 • 1 关注
  • Kafka

    Kafka 是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是现代系统中许多功能的基础。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。

    36 引用 • 35 回帖 • 2 关注
  • Angular

    AngularAngularJS 的新版本。

    26 引用 • 66 回帖 • 552 关注
  • Git

    Git 是 Linux Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

    211 引用 • 358 回帖 • 1 关注
  • 学习

    “梦想从学习开始,事业从实践起步” —— 习近平

    174 引用 • 540 回帖
  • OpenResty

    OpenResty 是一个基于 NGINX 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。

    17 引用 • 53 关注
  • Eclipse

    Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。

    76 引用 • 258 回帖 • 629 关注
  • 智能合约

    智能合约(Smart contract)是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。智能合约概念于 1994 年由 Nick Szabo 首次提出。

    1 引用 • 11 回帖 • 2 关注
  • 创业

    你比 99% 的人都优秀么?

    82 引用 • 1395 回帖 • 1 关注
  • 开源

    Open Source, Open Mind, Open Sight, Open Future!

    412 引用 • 3588 回帖
  • 招聘

    哪里都缺人,哪里都不缺人。

    188 引用 • 1057 回帖 • 1 关注
  • etcd

    etcd 是一个分布式、高可用的 key-value 数据存储,专门用于在分布式系统中保存关键数据。

    6 引用 • 26 回帖 • 543 关注
  • 资讯

    资讯是用户因为及时地获得它并利用它而能够在相对短的时间内给自己带来价值的信息,资讯有时效性和地域性。

    56 引用 • 85 回帖
  • Webswing

    Webswing 是一个能将任何 Swing 应用通过纯 HTML5 运行在浏览器中的 Web 服务器,详细介绍请看 将 Java Swing 应用变成 Web 应用

    1 引用 • 15 回帖 • 637 关注
  • ReactiveX

    ReactiveX 是一个专注于异步编程与控制可观察数据(或者事件)流的 API。它组合了观察者模式,迭代器模式和函数式编程的优秀思想。

    1 引用 • 2 回帖 • 181 关注
  • 面试

    面试造航母,上班拧螺丝。多面试,少加班。

    325 引用 • 1395 回帖
  • Electron

    Electron 基于 Chromium 和 Node.js,让你可以使用 HTML、CSS 和 JavaScript 构建应用。它是一个由 GitHub 及众多贡献者组成的活跃社区共同维护的开源项目,兼容 Mac、Windows 和 Linux,它构建的应用可在这三个操作系统上面运行。

    15 引用 • 136 回帖 • 4 关注
  • Maven

    Maven 是基于项目对象模型(POM)、通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。

    188 引用 • 319 回帖 • 252 关注
  • BookxNote

    BookxNote 是一款全新的电子书学习工具,助力您的学习与思考,让您的大脑更高效的记忆。

    笔记整理交给我,一心只读圣贤书。

    1 引用 • 1 回帖 • 1 关注
  • 小薇

    小薇是一个用 Java 写的 QQ 聊天机器人 Web 服务,可以用于社群互动。

    由于 Smart QQ 从 2019 年 1 月 1 日起停止服务,所以该项目也已经停止维护了!

    35 引用 • 468 回帖 • 763 关注
  • Shell

    Shell 脚本与 Windows/Dos 下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比 Windows 下的批处理更强大,比用其他编程程序编辑的程序效率更高,因为它使用了 Linux/Unix 下的命令。

    125 引用 • 74 回帖