用xlwt对xls文件进行写入
from xlwt import Workbookfrom random import randint
注意:不要奢求xlwt能够对一个已经存在的文件进行写操作,要打开已经存在的文件
先做加载,加载操作等价于读操作,但是xlwt模块只能写,没有任何读写能力.
所以说,xlwt只能从0到1进行文件的创建写操作
1.创建工作簿:Workbook()
wb = Workbook()
2.创建工作表:add_sheet()
注意:xlwt模块理解为你创建了某个表就是为这个表写内容
ws = wb.add_sheet('期末成绩')
3.写入内容
title = ['姓名', '数学', '语文', '英语']write(行号,列号,内容) --> 行号和列号从0开始for i in range(len(title)):ws.write(0, i, title[i])names = ['关羽', '张飞', '赵云', '马超', '黄忠']for nameIndex in range(len(names)):ws.write(nameIndex + 1, 0, names[nameIndex])for colIndex in range(1, 4):ws.write(nameIndex + 1, colIndex, randint(0, 100))
保存工作簿
确保工作簿中存在至少一个工作表,xlwt模块默认不会生成,需要自己创建
wb.save('一年级一班考试成绩.xls')
用xlrd对xls文件进行读取
from xlrd import open_workbook
1.加载已存在工作簿:open_workbook()
wb = open_workbook('一年级一班考试成绩.xls')
2.获取所有工作表的名字:sheet_names()
sheetList = wb.sheet_names()print(sheetList)
3.指定工作表
方式一:通过工作表名指定:sheet_by_name
sheet1 = wb.sheet_by_name('期末成绩')
方式二:通过下标指定:sheet_by_index
sheet2 = wb.sheet_by_index(0)print(sheet1 == sheet2)print(sheet1, sheet2)
4.读数据:
cell(行号,列号) --> 行列号下标是从0开始
value:获取指定单元格的值
print(sheet1.cell(0, 0)) # text:‘姓名’
print(sheet1.cell(0, 0).value) # 姓名
5.获取总的行列数:nrows、ncols
rows = sheet1.nrowscols = sheet1.ncolsprint(rows, cols)
6.读取所有信息
for row in range(rows):for col in range(cols):print(sheet1.cell(row, col).value)
注意:xls文件使用xlrd读取数据时整型会变为浮点型
注意:
一般在文件读操作后都需要关闭文件;写操作后需要保存关闭文件;
因为在文件被操作时是出于占用状态。除非执行关闭操作或者程序结束,
否则文件不会被关闭。
一般关闭文件使用close方法,保存关闭使用save方法