合并Excel中的sheet表
背景:系统导出来的的excel三年数据百万条,但是只有一个子类的是明细数据。其余数据都是按照子类的长度进行合并行处理过的;所以在进行数据清洗的时候要拆分这些合并单元格的处理:
- 合并同一个表格中的不同sheet页到同一个sheet中;
- 合并不同的表格:制定sheet名合并表格内容;
- 对除明细的子类外所有类进行向前填充(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()