本文介绍如何读写操作Excel表格
首先我们需要下载第三方包:xlwt和xlrd(下载方法:打开cmd,输入pip install 包名),这两个模块很强的,xlwt负责写入Excel,xlrd负责读出Excel。
下面我们先介绍xlwt写入Excel操作
代码如下:
import xlwt #首先导入xlwt模块
#自定义字体样式,根据自己需要调整,也可以不要
def set_style():
style = xlwt.XFStyle() #初始化样式
font = xlwt.Font() #为样式创建字体
font.name = 'Times New Roman'
font.bold = True #黑体
font.underline = True #下划线
font.height = 220 #大小
font.italic = True #斜字体
style.font = font #设定样式
return style
#写入Excel参数对应 行,列,值
def write_excel():
workbook = xlwt.Workbook(encoding='utf-8') #创建一个workbook,设置编码
worksheet = workbook.add_sheet('学生名单',
cell_overwrite_ok=True) #创建一个worksheet,设置sheet名称
#写入第一行title
row = ['编号', '班级', '名字', '成绩']
for i in range(0, len(row)):
worksheet.write(0, i, row[i], set_style())
#写入第一列编号
# column = [] #由于列为数字,因此可不设置
for i in range(8): #编号8代表列1-8
worksheet.write(i+1, 0, i+1)
#写入班级
clas = '二班'
for i in range(5):
worksheet.write(i+1, 1, clas)
#写入姓名
name = ['小明', '小红', '小王', '张三', '李四']
for i in range(0, len(name)):
worksheet.write(i+1, 2, name[i])
#写入成绩
grade = [90, 92, 94, 96, 98]
for i in range(0, len(grade)):
worksheet.write(i+1, 3, grade[i])
#合并行单单元格
worksheet.write_merge(6, 6, 1, 3, '一班王五')
#合并列单元格
worksheet.write_merge(7, 8, 1, 1, '一班')
try:
# 保存
workbook.save('Excel_test.xls')
except Exception as e:
print(e)
print("文件已打开,访问被拒绝,请先关闭!")
write_excel() #执行
执行以后,Excel表格已建好,图示如下:
接着介绍xlrd读出Excel表格内容
代码如下:
import xlrd #首先导入xlrd模块
def read_excel():
workbook = xlrd.open_workbook('Excel_test.xls')
#获取所有sheet名称
print(workbook.sheet_names())
#获取表格sheet内容
readbook = workbook.sheet_by_index(0) #0表示索引第一个sheet
# readbook = workbook.sheet_by_name('学生名单') #也可通过sheet名称获取
#获取sheet名称,列数和行数
print('sheet名称:%s\n表格列数:%d\n表格行数:%d'
% (readbook.name, readbook.nrows, readbook.ncols))
#row_values()获取行内容
print(readbook.row_values(1)) #1表示第二行内容
#col_values()获取列内容
print(readbook.col_values(2)) #2表示第三列内容
# 三种获取表格第三行第三列数据
print(readbook.cell(2, 2).value)
print(readbook.cell_value(2, 2))
print(readbook.row(2)[2].value)
#获取数据类型
print(type(readbook.cell(1, 0)))
read_excel() #执行
执行结果如下:
['学生名单']
sheet名称:学生名单
表格列数:9
表格行数:4
[1.0, '二班', '小明', 90.0]
['名字', '小明', '小红', '小王', '张三', '李四', '', '', '']
小红
小红
小红
<class 'xlrd.sheet.Cell'>