python:操作excel

需要pip安装xlrd,xlwt,xlutils模块,分别是读取excel,写入excel,修改excel的

xlrd模块:
import xlrd
book=xlrd.open_workbook(r'students.xlsx') #打开一个Excel文件;括号里文件不指定绝对路径的话,就是指当前目录下的excel文件
print(book.sheet_names()) #获取所有sheet的名字
sheet=book.sheet_by_index(0) #根据sheet页的第几个位置去取sheet
sheet=book.sheet_by_name('sheet2') #根据sheet页的名字获取sheet页
print(sheet.nrows) #获取该指定sheet页的所有行数,获取的是数字
print(sheet.ncols) #获取该指定sheet页的所有列数,获取的是数字
print(sheet.row_values(0)) #根据行号获取整行的数据,获取出来的是list
print(sheet.col_values(0)) #根据列号获取整列的数据,获取出来的是list
print(sheet.cell(2,1).value) #获取第3行第2列单元格里的内容;加上value获取出来的是字符串类型

eg1:读表格,并把读出的数据放在列表里,列表里的元素是字典,字典里key是id,name,sex
import xlrd
book=xlrd.open_workbook(r'students.xlsx')
sheet=book.sheet_by_index(0) #打开第一个sheet表
n=sheet.nrows #求该sheet表中所有的行数
all_list=[] #定义一个空列表,放取出来的数据
for i in range(1,n): #按表格里所有的行数循环
dic = {}
lis=sheet.row_values(i)
dic['id']=lis[0]
dic['name']=lis[1]
dic['sex']=lis[2]
all_list.append(dic)
print(all_list)

xlwt模块
import xlwt
book=xlwt.Workbook() #新建一个excel对象
sheet=book.add_sheet('student') #增加一个sheet页,命名为student
sheet.write(0,0,'编号') #给第一行第一列的单元格写上“编号”
book.save('stu.xls') #保存,文件名保存为stu.xls。保存在当前目录下(或者写绝对路径)
#PS:读excel的时候,xls xlsx的都可以读;但写excel的时候,保存的文件名必须是xls

eg2:给出lis和title,写一个表格
import xlwt
lis=[{'姓名': '小名', '性别': '女', 'id': 1.0}, {'姓名': '小李', '性别': '中', 'id': 2.0}, {'姓名': '小王', '性别': '男', 'id': 3.0},
{'姓名': '校长', '性别': '女', 'id': 4.0}]
title=['编号','姓名','性别']
book=xlwt.Workbook()
sheet=book.add_sheet('test')
for i in range(len(title)): #循环列表的长度
sheet.write(0,i,title[i]) #写表头
for i in range(len(lis)):
sheet.write(i+1,0,lis[i]['id'])
sheet.write(i+1,1,lis[i]['姓名'])
sheet.write(i+1,2,lis[i]['性别']) #写每一个元素
book.save('test.xls')

xlutils模块
import xlrd,xlutils
from xlutils.copy import copy #引用xlutils模块里的copy
book=xlrd.open_workbook(r'stu.xls') #打开原来的excel
new_book=copy(book) #通过xlutils里面的copy复制一个excel对象
sheet=new_book.get_sheet(0) #获取第一个sheet页;拷贝的新对象没有sheet_by_index()方法,只有get_sheet()方法
sheet.write(0,0,'id') #把第一行第一列的单元格修改掉
new_book.save('stu_1.xls') #保存为一个新文件

 eg:修改excel:

import xlrd,xlutils

from xlutils import copy
book1=xlrd.open_workbook('hn.xls') #打开原来的excel
new_book=copy.copy(book1) #拷贝一个新的excel
sheet=new_book.get_sheet(0) #获取第一个sheet页
sheet.write(0,1,'13')
sheet.write(2,1,'hhh')
new_book.save('hn.xls')  #保存excel

posted @ 2017-10-18 22:08  hesperid  阅读(193)  评论(0编辑  收藏  举报