整合Excel两个表的数据 - 2 | xlrd | xlwt | Python

# coding=utf-8

import os
import datetime
import xlrd
from xlwt import Workbook
from xlrd import xldate_as_tuple

agent_num = {
    "14": 1,
    "13": 1,
    "12": 1,
    "11": 1,
    "10": 1,
    "9": 1,
    "8": 1,
    "7": 1,
    "6": 1,
    "4": 1,
    "3": 1,
    "0": 1
}

def creat_agent_sheets(book):
    agent_data = {
        "14": "厦门吉事多",
        "13": "中财支付",
        "12": "内蒙古懒人网络科技有限公司",
        "11": "快汇支付",
        "10": "创富通002",
        "9": "星译付信息科技南通有限公司",
        "8": "云付泰",
        "7": "莘丽支付",
        "6": "一键联支付",
        "4": "创富通",
        "3": "闪银掌柜",
        "0": "首瀚"
    }
    agent_sheets = {}
    for a in agent_data:
        agent_sheets[a] = book.add_sheet(agent_data[a])

    return agent_sheets

def create_book():
    w = Workbook()
    w = Workbook(encoding=‘utf-8‘)
    return w

def open_book(path):
    data = xlrd.open_workbook(path)
    return data

def save_book(book):
    book.save("11fee.xlsx")
    print "-----ok-----"

if __name__ == "__main__":
    # 创建空表格
    book1 = create_book()
    # 创建工作组
    agent_sheets_dict = creat_agent_sheets(book1)

    # 打开账单表格
    path_bill = "11m.xlsx"
    data_bill = open_book(path_bill)

    # 费用
    table_fee = data_bill.sheets()[1]
    nrows_fee = table_fee.nrows

    # 打开用户表格
    path_reg = "reg.xlsx"
    data_reg = open_book(path_reg)
    table_reg = data_reg.sheets()[0]
    reg_nrows = table_reg.nrows
    # 分类
    m = 0
    for d in xrange(nrows_fee):
        if d == 0:
            continue
        row_fee = table_fee.row_values(d)
        for r in xrange(reg_nrows):
            if r == 0:
                continue
            row_reg = table_reg.row_values(r)
            if str(row_reg[3]) == str(row_fee[8]):
                reg_n = str(int(row_reg[6] if row_reg[6] else 0))
                if reg_n:
                    w_sheet = agent_sheets_dict[reg_n]
                    No = agent_num[reg_n]
                    w_sheet.write(No, 0, agent_num[reg_n])
                    w_sheet.write(No, 1, str(datetime.datetime(*xldate_as_tuple((row_fee[2]), 0))))
                    w_sheet.write(No, 2, str(row_fee[3]))
                    w_sheet.write(No, 3, str(row_fee[4]))
                    w_sheet.write(No, 4, str(row_fee[5]))
                    w_sheet.write(No, 5, str(row_fee[6]))
                    w_sheet.write(No, 6, str(row_fee[8]))
                    agent_num[reg_n] += 1
    save_book(book1)
时间: 2024-11-02 22:33:01

整合Excel两个表的数据 - 2 | xlrd | xlwt | Python的相关文章

Oracle 取两个表中数据的交集并集差异集合

Oracle 取两个表中数据的交集 关键字: Oracle 取两个表中数据的交集 INTERSECT Oracle 作为一个大型的关系数据库,日常应用中往往需要提取两个表的交集数据 例如现有如下表,要求找出工资2500(不含2500)以上并且是男性(M)的员工编号,那么就要利用这两个表的关系做一个交集了 employee CODE NAME GENDER 001 Tom M 002 Jerry M 003 Ana F salary CODE SALARY 001 2800 002 2500 00

TSql checksum 比较两个表的数据是否相同

CheckSum函数,用于计算一组表达式的校验和,这个校验和是int,并且对于相同的一组表达式,校验和是相同的,只在极少数情况下,不同的表达式有相同的校验和.CheckSum函数的这一特性,可以用于比较两个表的数据是否相同.如果表中的两列的CheckSum值相同,那么这两列的值是相同的,因此校验和和表达式是一对一的关系. if object_id('dbo.ta') is not null drop table dbo.ta if object_id('dbo.tb') is not null

SQL如何查询两个表的数据

在进行查询操作时,我们通常需要查询两个关联表的数据,我们可以使用where语句进行查询,如: select Emp.E_Id,Company.C_OraName from Emp,Company where Companey.C_Id=Emp.C_Id 但是我们往往会碰到比较复杂的语句,这时候使用where就不太合适了,其实SQL可以用较为直接的形式进行连接操作,可以在From子句中以直接的形式指出: select top 10 E_Id,E_Name,C_Name from Emp join

excel两张表筛选取数据

为了保证两张表数据不重复,请确保你的原数据表参考的字段无重复(如表一中姓名无重复,那么表二中便可用姓名作为查找条件). 但你的表数据700条不可能出现不重复现象,所以,你的表里面最好能有一个可以作为唯一标识的字段,如工号.ID.编号等.你在自己表中操作时,将你参考的字段与本文档里我用的姓名替换即可. 表一:sheet1=700人总表 表二:sheet2=200人花名册表 需求:表一中的工资数据取到表二对应的人名工资列中 操作: 1.选择sheet2表中,第一行人名:张一 对应的工资一的第一个单元

【转】mysql 触发器实现两个表的数据同步

mysql通过触发器实现两个表的同步 目前,在本地测试成功. 假设本地的两个数据库a和b,a下有表table1(id, val) b下有表table2(id, val) 假设希望当table1中数据更新,table2中数据同步更新. 代码: DELIMITER $$ CREATE /*[DEFINER = { user | CURRENT_USER }]*/ TRIGGER `a`.`触发器名` BEFORE UPDATE ON `a`.`table1` FOR EACH ROW BEGIN I

excel两张表数据匹配数据(VLOOKUP)

最近项目中需要跨项目导入数据,现整理Excel的一个小技能,记录如下. 第一步:我们打开一个excel表,创建数据如下. 第二步:我们把光标定位在需要展示数据的单元格中,如下图所示. 第三步:我们可以看到,单元格中显示出完整的VLOOKUP函数. 第四步:填写函数的相应的值 原文地址:https://www.cnblogs.com/mr-wuxiansheng/p/10201887.html

Oracle将两张表的数据插入第三张表且第三张表中不存在

1.由于是先查再插所以不能使用insert into table1() values(), 要使用insert into table1() select * table2,不能使用values. 2.因为是多张表故查询和插入的时候需要指定是哪张表,否则会报错:指定列模糊. 3.三张表联查时可多次使用inner join等连接语法. 总结:在逻辑上SQL与Code实现基本一致,但是SQL的速度非常快,在具体实现上SQL需要非常强的逻辑性但是会省去很多写code的功夫. insert into SP

关于mysql当中给数据量特别大的两个表做关联查询的时候解决查询速度很慢的解决方法

今天碰到了两个表做关联查询的mysql,这两个表的数据量都是特别大的,有一个表的数据是上亿条的数据,有一个是几百万的数据, 查询的速度是特别慢,然后我看了一下执行计划,下面是执行执行计划: 看到上面这个图这个数据量是特别大的,这个查询起来的肯定是非常慢的,而且他的类型都是ALL类型,也就是都是全表进行扫描的.然后在网上找资料,然后发现我们可以给关联的字段建索引. 于是我给关联字段建立了索引,然后就发生了下面的变化: 整个的行数就成不知道多少个数量级的情况在下降,整个的查询速度也是加快了额很多,现

数据库中两张表之间的数据同步实现思路(增加、删除、更新)Mysql、sqlserver

分别创建增加.删除.更新的触发器(Trigger)来达到两张表之间数据同步的目的. 1:数据同步增加:如有两张表--A表和B表,创建触发器使当A表插入数据后B表也同步插入数据.其中B表插入数据的字段需要同A表中的字段相对应. CREATE TRIGGER 触发器名称 ON A表 AFTER INSERT AS BEGIN INSERT INTO B表(B表字段1,B表字段2,B表字段3) SELECT A表字段1,A表字段2,A表字段3 FROM INSERTED END 2.数据同步删除:如有