python excel合并单元格_Python批量合并Excel文件

aac32128c971ab938903edeb643355a3.gif 更多精彩,请点击上方蓝字关注我们!

前言

Python可以很方便地对Excel进行处理。本篇文章主要介绍xlrd包,高效灵活读取Excel的包。

主要包含读取工作表名称,对工作名称的索引,查看单元格内容,获取单元格内容的数据类型(ctype : 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error)

xlrd基本操作

import xlrd
import pandas as pd
import numpy as np
path = r'C:\Users\Administrator\Desktop\excelDemo\book.xlsm'

###打开工作簿
xlsx = xlrd.open_workbook(path)

###查看所有工作表名称
all_shtnames = xlsx.sheet_names()

###根据下标对工作表进行索引
sheet1 = xlsx.sheets()[0]
sheet1.name
Out[1]: 'home'

### 根据sheet索引或者名称获取sheet内容
sheet2 = xlsx.sheet_by_index(1)
print(sheet2.name + ' ' + str(sheet2.nrows) + ' ' + str(sheet2.ncols))
Out[2]: 'N1 21 3'

sheet3 = xlsx.sheet_by_name('N2')
print(sheet3.name + ' ' + str(sheet3.nrows) + ' ' + str(sheet3.ncols))

#查看sheet2的特定切片数据、整行整列,单个单元格数值(索引从0开始)
sheet1_nrow5 = sheet2.row_values(4) #查看第5行数据
sheet1_ncol3 = sheet2.col_values(2) #查看第3列数据


cell11 = sheet2.cell(0,0).value ###.encode('utf-8')
cell12 = sheet2.cell_value(0,1) ###.encode('utf-8')
cell13 = sheet2.row(0)[2].value #查看第1行第3列的数据

###获取单元格内容的数据类型
###说明:ctype : 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error
sheet1.cell(0,0).ctype #第1行第1列:class 为string类型
sheet1.cell(1,1).ctype #第2行第2列: 为string类型
sheet1.cell(1,2).ctype #第2行第3列: 为number类型

合并规律表名的工作簿(N1.xlsx....N10.xlsx)

#要求:1)合并10个工作簿,表名具有规律性 (N1.xlsx,N2.xlsx...N10.xlsx)
import os
import xlrd
#from openpyxl import Workbook
import pandas as pd

path = 'C:\\Users\\Administrator\\Desktop\\excelDemo\\union_wk'
data = []
for i in range(1,11):
wk_n = path + '\\N' + str(i) + '.xlsx'
xlsx = xlrd.open_workbook(wk_n)
sht1 = xlsx.sheet_by_index(0) #第一个工作表
nrow = sht1.nrows
title = sht1.row_values(0) #查看第一行数据
for j in range(1,nrow):
data.append(sht1.row_values(j))

content= pd.DataFrame(data)
#修改标题
content.columns= title
#写入csv文件
#content.to_csv(path+'\\py_union.csv', sep=',', header=True, index=False)
#写入excel文件
content.to_excel(path+'\\py_union.xlsx', header=True, index=False)

合并无规律表名的工作簿(北京.xlsx,上海.xlsx...郑州.xlsx)

#要求:1)合并10个工作簿,表名不具有规律性 (北京.xlsx,上海.xlsx...郑州.xlsx)
import os
import xlrd
import pandas as pd

#获取所有需要合并的工作簿路径,生成list
def file_name(file_dir):
list=[]
for file in os.listdir(file_dir):
if os.path.splitext(file)[1] == '.xlsx':
list.append(file)
return list

path = r'C:\Users\Administrator\Desktop\excelDemo'
wks = file_name(path)

data = [] #定义一个空list
for i in range(len(wks)):
read_xlsx = xlrd.open_workbook(path + '\\' + wks[i])
sheet1 = read_xlsx.sheets()[0] #查看sheet1的数据
nrow = sheet1.nrows
title = sheet1.row_values(0) #查看第1行数据
for j in range(1,nrow): #逐行打印
data.append(sheet1.row_values(j))

content= pd.DataFrame(data)
#修改标题
content.columns= title
#写入文件
#写入csv文件
#content.to_csv(path+'\\py_union.xlsx', sep=',', header=True, index=False)
#写入excel文件
content.to_excel(path+'\\py_union2.xlsx', header=True, index=False)

总结

本文主要是利用xlrd对Excel工作簿来进行合并。当工作簿名字有规律的时候我们采用path拼凑的方法,当工作簿名字不具有规律的时候,我们采用遍历文件夹的方法进行读取,然后进行文件合并。

64ae143323743a3a2ce6313598becce8.png

你与数据世界

只差一个

公众号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值