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

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

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

    556 引用 • 675 回帖
  • Excel
    31 引用 • 28 回帖 • 2 关注

相关帖子

欢迎来到这里!

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

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

推荐标签 标签

  • 房星科技

    房星网,我们不和没有钱的程序员谈理想,我们要让程序员又有理想又有钱。我们有雄厚的房地产行业线下资源,遍布昆明全城的 100 家门店、四千地产经纪人是我们坚实的后盾。

    6 引用 • 141 回帖 • 617 关注
  • 负能量

    上帝为你关上了一扇门,然后就去睡觉了....努力不一定能成功,但不努力一定很轻松 (° ー °〃)

    89 引用 • 1251 回帖 • 385 关注
  • wolai

    我来 wolai:不仅仅是未来的云端笔记!

    2 引用 • 14 回帖 • 4 关注
  • OpenCV
    15 引用 • 36 回帖 • 4 关注
  • jsoup

    jsoup 是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址、HTML 文本内容。它提供了一套非常省力的 API,可通过 DOM,CSS 以及类似于 jQuery 的操作方法来取出和操作数据。

    6 引用 • 1 回帖 • 510 关注
  • 服务器

    服务器,也称伺服器,是提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。

    125 引用 • 585 回帖 • 1 关注
  • TextBundle

    TextBundle 文件格式旨在应用程序之间交换 Markdown 或 Fountain 之类的纯文本文件时,提供更无缝的用户体验。

    1 引用 • 2 回帖 • 82 关注
  • GitBook

    GitBook 使您的团队可以轻松编写和维护高质量的文档。 分享知识,提高团队的工作效率,让用户满意。

    3 引用 • 8 回帖
  • 开源

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

    415 引用 • 3602 回帖
  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    27061 引用 • 113095 回帖 • 2 关注
  • MongoDB

    MongoDB(来自于英文单词“Humongous”,中文含义为“庞大”)是一个基于分布式文件存储的数据库,由 C++ 语言编写。旨在为应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似 JSON 的 BSON 格式,因此可以存储比较复杂的数据类型。

    91 引用 • 59 回帖 • 2 关注
  • RabbitMQ

    RabbitMQ 是一个开源的 AMQP 实现,服务器端用 Erlang 语言编写,支持多种语言客户端,如:Python、Ruby、.NET、Java、C、PHP、ActionScript 等。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。

    49 引用 • 60 回帖 • 349 关注
  • IBM

    IBM(国际商业机器公司)或万国商业机器公司,简称 IBM(International Business Machines Corporation),总公司在纽约州阿蒙克市。1911 年托马斯·沃森创立于美国,是全球最大的信息技术和业务解决方案公司,拥有全球雇员 30 多万人,业务遍及 160 多个国家和地区。

    17 引用 • 53 回帖 • 150 关注
  • Jenkins

    Jenkins 是一套开源的持续集成工具。它提供了非常丰富的插件,让构建、部署、自动化集成项目变得简单易用。

    54 引用 • 37 回帖 • 3 关注
  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    959 引用 • 946 回帖
  • Swift

    Swift 是苹果于 2014 年 WWDC(苹果开发者大会)发布的开发语言,可与 Objective-C 共同运行于 Mac OS 和 iOS 平台,用于搭建基于苹果平台的应用程序。

    34 引用 • 37 回帖 • 552 关注
  • Ruby

    Ruby 是一种开源的面向对象程序设计的服务器端脚本语言,在 20 世纪 90 年代中期由日本的松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)设计并开发。在 Ruby 社区,松本也被称为马茨(Matz)。

    7 引用 • 31 回帖 • 275 关注
  • LaTeX

    LaTeX(音译“拉泰赫”)是一种基于 ΤΕΧ 的排版系统,由美国计算机学家莱斯利·兰伯特(Leslie Lamport)在 20 世纪 80 年代初期开发,利用这种格式,即使使用者没有排版和程序设计的知识也可以充分发挥由 TeX 所提供的强大功能,能在几天,甚至几小时内生成很多具有书籍质量的印刷品。对于生成复杂表格和数学公式,这一点表现得尤为突出。因此它非常适用于生成高印刷质量的科技和数学类文档。

    12 引用 • 59 回帖
  • SOHO

    为成为自由职业者在家办公而努力吧!

    7 引用 • 55 回帖
  • Elasticsearch

    Elasticsearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful 接口。Elasticsearch 是用 Java 开发的,并作为 Apache 许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

    117 引用 • 99 回帖 • 198 关注
  • 禅道

    禅道是一款国产的开源项目管理软件,她的核心管理思想基于敏捷方法 scrum,内置了产品管理和项目管理,同时又根据国内研发现状补充了测试管理、计划管理、发布管理、文档管理、事务管理等功能,在一个软件中就可以将软件研发中的需求、任务、bug、用例、计划、发布等要素有序的跟踪管理起来,完整地覆盖了项目管理的核心流程。

    10 引用 • 15 回帖 • 1 关注
  • Telegram

    Telegram 是一个非盈利性、基于云端的即时消息服务。它提供了支持各大操作系统平台的开源的客户端,也提供了很多强大的 APIs 给开发者创建自己的客户端和机器人。

    5 引用 • 35 回帖 • 3 关注
  • 链滴

    链滴是一个记录生活的地方。

    记录生活,连接点滴

    191 引用 • 3957 回帖
  • Gitea

    Gitea 是一个开源社区驱动的轻量级代码托管解决方案,后端采用 Go 编写,采用 MIT 许可证。

    5 引用 • 16 回帖 • 3 关注
  • gRpc
    11 引用 • 9 回帖 • 103 关注
  • 印象笔记
    3 引用 • 20 回帖
  • BAE

    百度应用引擎(Baidu App Engine)提供了 PHP、Java、Python 的执行环境,以及云存储、消息服务、云数据库等全面的云服务。它可以让开发者实现自动地部署和管理应用,并且提供动态扩容和负载均衡的运行环境,让开发者不用考虑高成本的运维工作,只需专注于业务逻辑,大大降低了开发者学习和迁移的成本。

    19 引用 • 75 回帖 • 687 关注