python操作Excel,一般只需要引入两个模块。
xlrd
读取
xlwt
写入
两个模块均可以通过pip下载。
读取
第一步,引入xlrd模块。填写正确的路径,读取文件。
第二步,可通过index或者sheet表名获取sheet表。获取到的对象为:<xlrd.sheet.Sheet object at 0x031B9690>
。
第三步,由sheet表对象得到行和列数。可通过for循环遍历出需要的内容。
import xlrd
read_xls = xlrd.open_workbook("数据源.xlsx") # 填写需要读取的文件正确的路径。
sheet1_obj = read_xls.sheet_by_index(0) # 通过下标索引获取sheet表。
sheet1_object = read_xls.sheet_by_name(sheet_name="数据") # 或者通过sheet表名获取。
# 取到行数和列数。
coNum = sheet1_obj.nrows # 行
noNum = sheet1_obj.ncols # 列
写入
第一步,引入xlwt,创建需要的Excel文件。
第二步,创建sheet表。
第三步,写入内容。第一个参数表示行号,第二个参数表示列号。只能一个一个写入。
第四部,保存。
import xlwt
new1_xls = xlwt.Workbook(encoding='utf-8')
# 新建sheet表
sheet1 = new1_xls.add_sheet('数据')
# 写入内容
sheet1.write(row,i,label =('xxx')
# 保存
new1_xls.save('数据源01.xls')
下面是一个完整例子。读取目标数据源文件,把数据拆分成三个表。
import xlrd, xlwt
# 读取文件,选定sheet表。
try:
read_xls = xlrd.open_workbook("数据源.xlsx")
sheet1_obj = read_xls.sheet_by_index(0)
# 取到行数和列数。
coNum = sheet1_obj.nrows # 7行
noNum = sheet1_obj.ncols # 4列
# 新建三个列表暂时存放数据
alist = []
blist = []
clist = []
# 新建三个表
new1_xls = xlwt.Workbook(encoding='utf-8')
new2_xls = xlwt.Workbook(encoding='utf-8')
new3_xls = xlwt.Workbook(encoding='utf-8')
# 新建sheet表
sheet1 = new1_xls.add_sheet('数据')
sheet2 = new2_xls.add_sheet('数据')
sheet3 = new3_xls.add_sheet('数据')
# 把每行数据分到三个不同的列表
for i in range(coNum):
aNum = sheet1_obj.row_values(i)
if aNum not in alist:
alist.append(aNum)
elif aNum not in blist:
blist.append(aNum)
else:
clist.append(aNum)
try:
# 给每个表都添加列名。
for row in range(len(alist)):
if row == 0:
for i in range(4):
sheet1.write(row,i,label =(alist[row][i]))
sheet2.write(row,i,label =(alist[row][i]))
sheet3.write(row,i,label =(alist[row][i]))
else:
# 添加剩余数据
for co in range(len(alist)):
sheet1.write(row,co,label =(alist[row][co]))
for row in range(len(blist)):
for co in range(4):
sheet2.write(row+1,co,label =(blist[row][co]))
for row in range(len(clist)):
for co in range(4):
sheet3.write(row+1,co,label =(clist[row][co]))
except Exception as e:
print("Exception: {0}".format(e))
# 保存
new1_xls.save('数据源01.xls')
new2_xls.save('数据源02.xls')
new3_xls.save('数据源03.xls')
except FileNotFoundError as e:
print("FileNotFoundError: {0}".format(e))
推荐一篇详细的博客:
https://blog.csdn.net/weixin_43158056/article/details/105454319?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522160698226519725222474496%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=160698226519725222474496&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_click~default-1-105454319.first_rank_v2_rank_v28p2&utm_term=xlrd&spm=1018.2118.3001.4449