python之操作excel:xlrd、xlwt、xlutiles、枚举函数enumerate()

一、读excel: xlrd-----只能读、不能写

import xlrd
book=xlrd.open_workbook(r'E:BestTest内容名单.xlsx')   #打开excel
sheet=book.sheet_by_index(0)  #通过索引定位是第一个sheet页
sheet2=book.sheet_by_name("作业") #通过名字定位sheet
sheet.row_values(0)   #获取某一行的数据,索引从0开始,0代表第一行

sheet.col_values(1)  #获取某一列的数据,索引从0开始

sheet.cell(0,1).value  #获取某个单元格的内容,索引从0开始,(行,列),(0,0)代表第1行,第1列

sheet.nrows  #获取总行数
sheet.ncols  #获取纵列数

二、写入excel:xlwt ——只能新建一个excel,往里面写内容,不是修改

book=xlwt.Workbook()
sheet=book.add_sheet('人员名单')
sheet.write(0,0,'姓名)
sheet.write(0,1,'学习形式')
sheet.write(1,0,'xiaohei')        #(行,列,内容)
sheet.write(1,1,'现场')
#写完要保存:
book.save('E:BestTest上课内容student.xls')
# 保存时,如果用的是微软的office,后缀要用.xls
# 如果是wps,就用.xls  .xlsx

练习:list中每个元素写进表格中

方法一:

list=[
    [1,'han','1361111111'],
    [2, 'xiaoming', '1361111111'],
    [3, 'xiaohei2', '1361111111'],
    [4, '小白', '1361111111']
      ]
row=1   #定义行号,空出表头,从第二行,第一列开始写
for row_data in list:
    col=0
    for col_data in row_data:
        sheet.write(row,col,col_data)
        col+=1
     row+=1
book.save('test.xls')

方法二:使用枚举函数:enumerate()

for row,row_data in enumerate(list,1)   #取list中下标和元素,下标定义初始索引是1
    print(row,row_data)  
    for col,col_data in enumerate(row_data)  #不传索引初始值,默认从0开始
        print(col,col_data)
        sheet.write(row,col,col_data)
book.save('test1.xls')

三、 修改excel

from xlutils import copy
import xlrd   #两个模块配合才能修改
#操作步骤:
#1打开一个excel
#2复制一份
#3修改
book=xlrd.open_workbook('test.xls')  #可写绝对路径
new_book=copy.copy(book)
print(dir(new_book))    #查看new_book可做的操作
sheet=new_book.get_sheet(0)  #定位sheet页,xlutils中的定位sheet的方法不同于xlrd
title=['id','name','phone']
for col,t in enumerate(title):
    sheet.write(0,col,t)
new_book.save('test.xls')     #运行是文件不能是打开的状态,否则会报错

 四、枚举函数:enumerate(list)

list=['xiaomingn','xiaohei','xiaobai']
num=1
for i in list:
    print("编号:%s-->%s"%(num,i))
    num+=1
#同下:
 #enumerate(list):循环时,同时循环下标和元素   enumerate(list,1)    #可指定从几开始,1,2,3,……如果不指定是默认从零开始,0,1,2,……
 for count,value in enumerate(list,1) print("编号:%s-->%s"%(count,value))
原文地址:https://www.cnblogs.com/hancece/p/11082369.html