毫无疑问,现在网上有很多关于用python操作Excel表格的例子,但是python更新很快,有些库也会跟着跟新,这就导致了之前发布的一些代码就不能再使用了。
在python3.7中已经不支持打开.xls的文件了,但是截止到2020年3月27日网上相关的操作代码中还是充斥着用python打开.xls文件的例子。在这里,就稍微的总结一下如何使用代码操作excel表格:合并多个表格中的全部数据到新的表格中。
相关版本
python 版本:3.7.0 xlrd库:1.2.0 xlsxwriter库:1.1.0
具体代码
import xlrd
import xlsxwriter
#打开Excel文件
def open_xlsx(file):
try:
fh = xlrd.open_workbook(file)
return fh
except exception as err:
print(str("error open:" + e))
#获取sheet表
def getsheet(fh):
return fh.sheets()
#获取sheet表中的行数
def getnrows(fh, sheet):
table = fh.sheets()[sheet]
content = table.nrows
return content
#读取文件内容并返回行内容
def getFilect(file, shnum):
fh = open_xlsx(file)
table = fh.sheets()[shnum]
num = table.nrows
for row in range(num):
rdata = table.row_values(row)
datavalue.append(rdata)
return datavalue
#获取sheet表个数
def getshnum(fh):
x = 0
sh = getsheet(fh)
for sheet in sh:
x += 1
return x
#主程序
if __name__ == '__main__':
allxlsx = ['E:/python/edit/program/sudoku/try01.xlsx',
'E:/python/edit/program/sudoku/try02.xlsx']
datavalue = []
for fl in allxlsx:
fh = open_xlsx(fl)
x = getshnum(fh)
for shnum in range(x):
print("正在读取文件:" + str(fl) + "的第" + str(shnum) + "个sheet表的内容.....")
rvalue = getFilect(fl, shnum)
endfile = 'E:/python/edit/program/sudoku/test01.xlsx'
wb1 = xlsxwriter.Workbook(endfile)
ws = wb1.add_worksheet()
for a in range(len(rvalue)):
for b in range(len(rvalue[a])):
c = rvalue[a][b]
ws.write(a, b, c)
wb1.close()
print("文件合并完成")
一般情况下运行以上代码就可以实现,但是博主在与运行的时候出现了找不到xlrd与xlsxwrier库的问题。
在检查、安装以上两个库之后还是没有解决问题,这个时候就需要找到这两个库的位置,之后复制到运行这个python脚本的同一个文件架中,之后在运行就可以了。
本文参考:https://blog.csdn.net/d1240673769/article/details/74513206