**python 通过openpyxl模块操作excel,将我们想要的数据写入excel。**
大概的过程:
1.加载工作簿,这里用到的是load_workbook方法。
2.通过sheetnames获取工作簿中所有工作表的表名,返回工作表对象。
3.获取工作表中的单元格,并向单元格中写入数据。
代码:
import openpyxl as op
import pandas as pd
import numpy as np
#加载工作簿
wb = op.load_workbook('F:/文件/python练习文件/20190918/'+'demo.xlsx')
##创建excel写入函数,其中result是要写入的数据,sheet是要写入的工作表
def to_excel(result,sheet):
list=result.tolist()
for i in range(len(list)):
for j in range(result.shape[1]):
if result[i][j] is not np.inf:
#操作单元格循环写入列表中的数据
sheet.cell(row=i + 1, column=j + 1).value = list[i][j]
else:
sheet.cell(row=i + 1, column=j + 1).value=''
return sheet
#获取所有工作表的表名
sheet_name=wb.sheetnames
#创建数据data
d1=np.array([[1,2,3],[3,4,5]])
d2=np.array([[6,7,8],[9,12,13]])
data=np.array([d1,d2])
#遍历工作表将data中的数据写入相应的工作表
for k in range(len(data)):
to_excel(data[k],wb[sheet_name[k]])
print('导入完成')
#最后别忘了保存
wb.save('F:/文件/python练习文件/20190918/'+'demo.xlsx')
遇到的坑:
之前获取工作表时用的是get_sheet_names()方法
sheet_name=wb.get_sheet_names()
结果警告:
DeprecationWarning: Call to deprecated function get_sheet_names (Use wb.sheetnames).
sheet_name=wb.get_sheet_names()
翻译一下是这个意思:
警告:调用已弃用的函数get_sheet_names(使用wb.sheetnames)。sheet_name = wb.get_sheet_names ()
所以说这个函数已经弃用了,改成用sheetnames就ok了。
最后要注意要导的如数据格式,这里导入的是数组,如果要导入的数据是一个list类型的话的就不用写result.tolist()了,并且list的类型没有shape属性,所以要注意自己的数据类型。