美文网首页
用Python操作Excel同表格下面多sheet合并成一个sh

用Python操作Excel同表格下面多sheet合并成一个sh

作者: overad | 来源:发表于2018-09-03 10:29 被阅读0次

合并Excel中的sheet表

背景:系统导出来的的excel三年数据百万条,但是只有一个子类的是明细数据。其余数据都是按照子类的长度进行合并行处理过的;所以在进行数据清洗的时候要拆分这些合并单元格的处理:

  1. 合并同一个表格中的不同sheet页到同一个sheet中;
  2. 合并不同的表格:制定sheet名合并表格内容;
  3. 对除明细的子类外所有类进行向前填充(ffill)
#! /usr/bin/python3
# -*- coding: utf-8 -*-
# @Time : 2018/8/31 15:35
# @File : operationexcel
# @Software: PyCharm
"""========================
1. 将同一个Excel中的不同的sheet页,汇总到一个新的表格中
================================"""


import xlrd
import xlsxwriter
import xlwt

#源文件
filename = 'd:/python_excel.xlsx'
# filename = 'D:/overad/abc.xlsx'
#目标文件
tarfile = 'd:/tarexcel.xlsx'

#读文件
data = xlrd.open_workbook(filename)

#获取sheet页名称;
sheet_names = data.sheet_names()
print(sheet_names)

#新建目标文件
wh = xlsxwriter.Workbook(tarfile)
wadd = wh.add_worksheet('total')


#预设标题加粗
bold = wh.add_format({'bold':1})

tar = []

#读取源文件数据
for sheet_name in sheet_names:
    #获取sheet页的名称
    sheet = data.sheet_by_name(sheet_name)
    #获取表头
    sh_title = data.sheet_by_index(0).row_values(0)
    wadd.write_row('A1',sh_title,bold)
    #获取表的行数
    nrows = sheet.nrows
    #循环打印
    for i in range(nrows):
        #跳过第一行
        if i == 0:
            continue
        # print(sheet.row_values(i))
        tar.append(sheet.row_values(i))

for row_num,row_data in enumerate(tar):
    wadd.write_row(row_num+1,0,row_data)


wh.close()

相关文章

网友评论

      本文标题:用Python操作Excel同表格下面多sheet合并成一个sh

      本文链接:https://www.haomeiwen.com/subject/czkbwftx.html