python 合并表格详解

编程小白在线学习代码,前几天帮女朋友合并表格cv大佬在线泪目,想想之前合并表格也是一直cv,重复性且效率低下的操作完全可以用代码来实现。就用python写了一个自动合并表格的程序,并且已经打包成了.exe文件,不需要安装py环境就可以直接运行。算是在py下写的第一个程序。

遇到的几大问题

1. 开始pip install 库的时候提升要啥更新(一串英文我也没有看懂),又不影响我安装就没有管,一定要即使更新

2. xlrd这个库,它更新了以后竟然不支持打开.xrlx文件 解决办法为安装老版本pip install xlrd==1.2.0

3. 开始写的程序需要自己输入有几个表头,感觉还是麻烦,又写了自动识别表头的代码,在比对表头数据的时候一定要用一直定位到只剩值的列表比对(害我一个多小时)

4. 最后打包程序的时候,由于pip 没有更新不知道咋就是打包失败,照系统给的更新指令更新了一下就好了,还发现可以把图标一起打包进去,第一次做有图标的程序

程序很小,收获很大,下面打算写一个挂在服务器上用邮件定时给多人发送天气提醒的程序
合并表格的程序:

链接:https://pan.baidu.com/s/16xJU5UwoYALl_qcz3ThFjA提取码:q63u

源码如下

import xlrd
import xlsxwriter
import glob
biao_tou = []
# 获取要合并的所有exce表格
def get_exce():
    all_exce = glob.glob("*.xls*")
    print("该目录下有" + str(len(all_exce)) + "个exce文件:")
    if (len(all_exce) == 0):
        return 0
    else:
        for i in range(len(all_exce)):
            print(all_exce[i])
        return all_exce
# 打开Exce文件
def open_exce(name):
    fh = xlrd.open_workbook(name)
    return fh
# 获取exce文件下的所有sheet
def get_sheet(fh):
    sheets = fh.sheets()
    return sheets
# 获取sheet下有多少行数据
def get_sheetrow_num(sheet):
    return sheet.nrows
# 获取sheet下的数据
def get_sheet_data(sheet, row,biao_tou_num):
    for i in range(row):
        if (i <biao_tou_num):
            global biao_tou
            values= sheet.row_values(i)
            biao_tou.append(values)
            continue
        values = sheet.row_values(i)
        all_data1.append(values)
    return all_data1
#获取表头数量
def get_biao_tou_num(exce1,exce2):
    fh = open_exce(exce1)
    fhx= open_exce(exce2)
    sheet_1 = fh.sheet_by_index(0)
    sheet_2=fhx.sheet_by_index(0)
    row_sum_1 = sheet_1.nrows
    row_sum_2 = sheet_2.nrows
    # 获取第一张sheet表对象有效行数
    # 获取sheet表某一行所有数据类型及值
    for i in range(row_sum_1):
        # 获取sheet表对象某一行数据值
        if (i+1== row_sum_2):
            return i
        #row_0_value = sheet_1.row_values(0)
        row_content_1 = sheet_1.row_values(i)
        row_content_2=  sheet_2.row_values(i)
        if(row_content_1==row_content_2):
            continue
        else:
            return i
        #防止越界
if __name__ == '__main__':
    print("使用本程序只需要把程序放到需要合并表格同目录下")
    print("如发现bug,QQ联系作者:1916624867")
    print("作者:吃点饭饭\n\n\n")
    all_exce = get_exce()
    # 得到要合并的所有exce表格数据
    if (all_exce == 0):
        print("该目录下无.xlsx文件!请把程序移动到要合并的表格同目录下!")
        end = input("按Enter结束程序")
        exit()
    if (len(all_exce) ==1 ):
        print("该目录下只有一个.xlsx文件!无需合并")
        end = input("按Enter结束程序")
        exit()
    # 表头数
    print("自动检测表头中......")
    biao_tou_num=get_biao_tou_num(all_exce[0],all_exce[1])
    print("表头数为:",biao_tou_num,)
    guess=input("y/n?")
    if(guess=="n"):
        biao_tou_num=input("请输入表头数:")
        biao_tou_num=int(biao_tou_num)
    all_data1 = []
    # 用于保存合并的所有行的数据
    # 下面开始文件数据的获取
    for exce in all_exce:
        fh = open_exce(exce)
        # 打开文件
        sheets = get_sheet(fh)
        # 获取文件下的sheet数量
        for sheet in range(len(sheets)):
            row = get_sheetrow_num(sheets[sheet])
            # 获取一个sheet下的所有的数据的行数
            all_data2 = get_sheet_data(sheets[sheet], row,biao_tou_num)
            # 获取一个sheet下的所有行的数据
    for i in range(biao_tou_num):
        all_data2.insert(i, biao_tou[i])
    # 表头写入
    new_name=input("清输入新表的名称:")
    # 下面开始文件数据的写入
    new_exce = new_name+".xlsx"
    # 新建的exce文件名字
    fh1 = xlsxwriter.Workbook(new_exce)
    # 新建一个exce表
    new_sheet = fh1.add_worksheet()
    # 新建一个sheet表
    for i in range(len(all_data2)):
        for j in range(len(all_data2[i])):
            c = all_data2[i][j]
            new_sheet.write(i, j, c)
    fh1.close()
    # 关闭该exce表
    print("文件合并成功,请查看"+new_exce+"文件!")
    end=input("按Enter结束程序")

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!

(0)

相关推荐

  • Python将多个excel表格合并为一个表格

    生活中经常会碰到多个excel表格汇总成一个表格的情况,比如你发放了一份表格让班级所有同学填写,而你负责将大家的结果合并成一个.诸如此类的问题有很多.除了人工将所有表格的内容一个一个复制到汇总表格里,那么如何用Python自动实现这些工作呢~ 我不知道有没有其他更方便的合并方法,先用Python实现这个功能,自己用就很方便了. 比如,在文件夹下有如下7个表格(想象一下有100个或更多的表格需要合并) 作为样例,每个表格的内容均为 运行程序,将7个表格合并成了test.xls 打开test.xls

  • python 操作excel表格的方法

    说明:由于公司oa暂缺,人事妹子在做考勤的时候,需要通过几个excel表格去交叉比对员工是否有旷工或迟到,工作量大而且容易出错. 这时候it屌丝的机会来啦,花了一天时间给妹子撸了一个自动化脚本. 1. 下载相关python包 python操作excel表格可以使用以下三个包 xlrd - 读excel文件 xlwt - 写excel文件,这个不能修改已有的excel文件,只能写新的文件 xlutils - 修改excel文件,其实就是通过xlrd拷贝一份记录,再进行修改.保存为老的名字就替换了原

  • Python实现合并excel表格的方法分析

    本文实例讲述了Python实现合并excel表格的方法.分享给大家供大家参考,具体如下: 需求 将一个文件夹中的excel表格合并成我们想要的形式,主要要pandas中的concat()函数 思路 用os库将所需要处理的表格放到同一个列表中,然后遍历列表,依次把所有文件纵向连接起来. 最开始的第一种思路是先拿一个文件出来,然后让这个文件依次去和列表中的剩余文件合并: 第二种是用文件夹中第一个文件和剩余的文件合并,使用range(1,len(file)),可以省去单独取第一个文件的步骤. 遇到的问

  • Python读写Excel表格的方法

    本文实例为大家分享了Python读写Excel表格的具体代码,供大家参考,具体内容如下 python读取Excel表格: import xlrd def read_excel(): # 打开文件 wb = xlrd.open_workbook(r'test.xls') # 获取所有sheet的名字 print(wb.sheet_names()) # 获取第二个sheet的表名 sheet2 = wb.sheet_names()[1] print("sheet2 = {}".format

  • python合并同类型excel表格的方法

    本文实例为大家分享了python合并同类型excel表格的具体代码,供大家参考,具体内容如下 python脚本如下,验证有效. #!/usr/bin/env python # -*- coding: UTF-8 -*- import os, csv class CSVTopoIreator: def __init__(self, filename): self.infile = open(filename, 'rb') self.reader = csv.reader(self.infile)

  • python 合并表格详解

    编程小白在线学习代码,前几天帮女朋友合并表格cv大佬在线泪目,想想之前合并表格也是一直cv,重复性且效率低下的操作完全可以用代码来实现.就用python写了一个自动合并表格的程序,并且已经打包成了.exe文件,不需要安装py环境就可以直接运行.算是在py下写的第一个程序. 遇到的几大问题 1. 开始pip install 库的时候提升要啥更新(一串英文我也没有看懂),又不影响我安装就没有管,一定要即使更新 2. xlrd这个库,它更新了以后竟然不支持打开.xrlx文件 解决办法为安装老版本pip

  • python实现读取excel表格详解方法

    目录 一.python读取excel表格数据 1.读取excel表格数据常用操作 2.xlrd模块主要操作 3.读取单元格内容为日期时间的方式 4.读取合并单元格的数据 二.python写入excel表格数据 一.python读取excel表格数据 1.读取excel表格数据常用操作 import xlrd # 打开excel表格 data_excel = xlrd.open_workbook('data/dataset.xlsx') # 获取所有sheet名称 names = data_exc

  • element表格行列的动态合并示例详解

    目录 效果图 代码详解 数据结构 行合并 列合并 完整代码+注释 效果图 合并行 合并列 element的table提供了合并行或者列的方法,并且有一个示例,传送入口:element.eleme.cn/#/zh-CN/com… 但是实际应用中,后台数据的返回格式和指定合并肯定是动态且没有规律的.element的示例过于简单,并且也没有什么太多的解释.实操中就碰到了这个问题.现在记录下来. 代码详解 实操中,需要合并的代码通常就是子数据需要进行合并,因为后台返回的格式都是父数据中包裹着子数据,这种

  • Python.append()与Python.expand()用法详解

    如下所示: alist=[1,2]] >>>[1,2] alist.append([3,4]) >>>[1, 2, [3, 4]] alist.extend([3,4]) >>>[1, 2, 3, 4] 结论: list.apend(arg1) 参数类型任意,可以往已有列表中添加元素,若添加的是列表,就该列表被当成一个元素存在原列表中,只使list长度增加1. list.extend(list1) 参数必须是列表类型,可以将参数中的列表合并到原列表的末

  • python flask框架详解

    Flask是一个Python编写的Web 微框架,让我们可以使用Python语言快速实现一个网站或Web服务.本文参考自Flask官方文档, 英文不好的同学也可以参考中文文档 1.安装flask pip install flask 2.简单上手 一个最小的 Flask 应用如下: from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello World' if __na

  • vue开发table数据合并实现详解

    目录 前言 思路梳理 方案一 Element 官方 Table 组件数据合并 注意 方案二 Table-column Scoped Slot 注意 前言 项目中的某个模块,一个勾选表格数据,里面的行数据由于有关联关系,需要多行数据合并,然后勾选时选中一条数据,方便进行下一步业务操作,然后产品经理就指着原型上的表格,说:这里,这里, 数据需要合并...... 功能需求有了,里面有个技术实现点 —— 表格数据合并,下面我们就来分析一下这个表格数据合并的实现 思路梳理 方案一 Element 官方 T

  • Element中table组件按照属性执行合并操作详解

    在实际开发中,要求使用elementUI的table组件对表格数据上下行相邻相同的数据进行合并,在elem官网上查看到是有对应的组件和合并方法 <el-table :data="tableData" :span-method="objectSpanMethod"> <el-table-column prop="id" label="ID" width="180"> </el-t

  • Python网络编程详解

    1.服务器就是一系列硬件或软件,为一个或多个客户端(服务的用户)提供所需的"服务".它存在唯一目的就是等待客户端的请求,并响应它们(提供服务),然后等待更多请求. 2.客户端/服务器架构既可以应用于计算机硬件,也可以应用于计算机软件. 3.在服务器响应客户端之前,首先会创建一个通信节点,它能够使服务器监听请求. 一.套接字:通信端点 1.套接字 套接字是计算机网络数据结构,它体现了上节中所描述的"通信端点"的概念.在任何类型的通信开始之前,网络应用程序必须创建套接字

  • Python 多线程实例详解

    Python 多线程实例详解 多线程通常是新开一个后台线程去处理比较耗时的操作,Python做后台线程处理也是很简单的,今天从官方文档中找到了一个Demo. 实例代码: import threading, zipfile class AsyncZip(threading.Thread): def __init__(self, infile, outfile): threading.Thread.__init__(self) self.infile = infile self.outfile =

  • Docker 打包python的命令详解

    最近用Python写了一段爬虫程序,为了隔离其运行环境,易于分发,把项目打包成Docker镜像 Dockerfile FROM python:2.7.12-alpine ADD ./src /job CMD ["python", "/job/main.py"] 构建命令 $ docker build -t job . 运行 $ docker run -d --name job job 比较简单 以上所述是小编给大家介绍的Docker 打包python的命令详解,希望

随机推荐