1、基本概念
在openpyxl中,主要用到三个概念:Workbooks,Sheets,Cells。Workbook就是一个excel工作表;Sheet是工作表中的一张表页;Cell就是简单的一个格。openpyxl就是围绕着这三个概念进行的,不管读写都是“三板斧”:打开Workbook,定位Sheet,操作Cell。下面分读和写分别介绍几个常见的方法。
2、新建一个xlsx文件
from openpyxl import Workbook
wb = Workbook()
sheet = wb.active
sheet.title = "New Shit"
sheet['C3'] = 'Hello world!'
for i in range(10):
sheet["A%d" % (i+1)].value = i + 1
sheet["E1"].value = "=SUM(A:A)"
wb.save('保存一个新的excel.xlsx')
print("成功保存一个xlsx表格") #重复操作会将原来的表格内容重复代替
3、打印xlsx中有的所有表格名字;读取表格中的数据,并打印出来(列表)
import xlrd
#打开Excel文件
workbook = xlrd.open_workbook('k0907.xlsx') #当前运行程序根目录下有文件k0907.xlsx
print(workbook.sheet_names()) #打印出文件中所有表格的名字
Data_sheet = workbook.sheets()[0] #以列表?的方式获取表格对象?
Charts_sheet = workbook.sheet_by_name(u'Sheet3_my') #以表格名字检索的方式获取表格对象?
nrows = Data_sheet.nrows #获取行数
ncols = Data_sheet.ncols #获取列数
print("行数:%d\n列数:%d"%(nrows,ncols))
rows = Data_sheet.row_values(0)
cols = Data_sheet.col_values(0)
print("rows:%s\ncols:%s"%(rows,cols))
print('结束')
4、将数据以添加的形式添加进入test.xls文件中
#关键函数: addto_xls_data
#获取表格内容的方式也是关键
需要import的库:
import xlrd
import xlutils.copy
#导入特定的excel表格
data = xlrd.open_workbook('test.xls') #通过追加功能向xls表格中追加数据
ws = xlutils.copy.copy(data)
table=ws.get_sheet(0)
addto_xls_data(table) #调用保存数据
ws.save('test.xls')
函数 addto_xls_data() :
def addto_xls_data(sheet): #通过新建一个表格并向里面补充数据
#这里定义一些变量方便调试:
max_imgname_cell_num_rows = 5 #定义图片编号的cell
max_imgname_cell_num_cols = 0
name_cell_rows = max_imgname_cell_num_rows - 1 #定义name标签名字所在单元格
name_cell_cols = max_imgname_cell_num_cols + 1
score_cell_rows = max_imgname_cell_num_rows - 1 #定义score标签名字所在单元格
score_cell_cols = max_imgname_cell_num_cols + 2
name_cell_num_rows = max_imgname_cell_num_rows #定义name标签变量所在单元格
name_cell_num_cols = max_imgname_cell_num_cols + 1
score_cell_num_rows = max_imgname_cell_num_rows #定义score标签变量所在单元格
score_cell_num_cols = max_imgname_cell_num_cols + 2
#新建一个表格并写数据
sheet.write(max_imgname_cell_num_rows, max_imgname_cell_num_cols, each) #这里填入图片的编号
sheet.write(name_cell_rows, name_cell_cols, "['name'][0]") #最高认可度的种类编号
sheet.write(score_cell_rows, score_cell_cols, "['score'][0]") #该编号的分值
name = content_list[0]['name'] #调用
sheet.write(name_cell_num_rows, name_cell_num_cols, name)
score = content_list[0]['score']
sheet.write(score_cell_num_rows, score_cell_num_cols, score)
print("成功保存一个xls表格")