Excel文件处理之xlrd、xlwt、xlutils、openpyxl

 

1读excel要用到xlrd模块(支持xls、xlsx)
import xlrd
filename="C:/Users/11/Desktop/2.xlsx"
book = xlrd.open_workbook(filename) #打开Excel文件读取数据
sheet =book.sheets()[0] #指定工作表
print book.nsheets #获取sheet总数
print sheet.nrows  #获取行数
print sheet.ncols   #获取列数
print(sheet.cell(1,2)) #获取单元格2行3列的值
print(sheet.row_values(0))   #获取第1行的值(返回数组)
print(sheet.col_values(0))    #获取第1列的值(返回数组)
 
指定工作表的三种方式:
sheet = book.sheets()[0]  
sheet = book.sheet_by_index(0)
sheet = book.sheet_by_name('Sheet1') #有的资料显示(u'Sheet1'),测试两种均可
 
 
 
2写excel要用到xlwt模块(支持xls)
import xlwt
book = xlwt.Workbook(encoding = 'ascii')  #创建workbook
sheet = book.add_sheet('sheet1')   #创建表
sheet.write(1, 2, label = 'hello') #往单元格2行3列写入内容
book.save("C:/Users/11/Desktop/temp/3/3.xls") #保存
 
encoding和label要对应:
比如encoding = 'utf8' 对应 label = '你好',encoding = 'ascii' 对应 label = 'hello'。
如果encoding = 'ascii' 对应 label = '你好' 则会报错: 'ascii' codec can't decode byte 0xe5 in position ......
 
文件保存路径:
可以是相对路径,也可以是绝对路径。
如果路径中的文件夹不存在则报错: No such file or directory......
如果文件不存在会自动创建,已存在会覆盖处理(覆盖整个文件,不仅仅是sheet或者单元格)。
 
 
 
3修改excel可以用xlutils、openpyxl模块
3.1xlutils(支持xls)
import  xlrd
from xlutils.copy import copy
workbook=xlrd.open_workbook('3.xls')  
workbooknew=copy(workbook) #copy:将xlrd.Book转为xlwt.Workbook。
ws=workbooknew.get_sheet(0)  #注意此处用的是get_sheet,不同于xlrd模块指定工作表的三种方式。
ws.write(0,1,"changed12345")
workbooknew.save("3copy.xls")
 
xlutils是一个工具模块,一般只用到copy模块,用于修改另存Excel文件。具体实现步骤是:将需要更改的excel文件打开,用xlutils包的copy将excel文件拷贝一份,然后进行修改操作,最后保存。实际是在xlrd.Book和xlwt.Workbook之间建立了一个管道而已。
所以,xlutils修改当前文件的方法就是,最后保存的时候文件名同原名,即替换原文件:workbooknew.save("3.xls")。
 
xlutils也可以对xlsx格式进行操作,但是最后保存只支持xls格式。
 
3.2openpyxl(支持xlsx)
from openpyxl import load_workbook
book = load_workbook('333.xlsx')
sheet=book.get_sheet_by_name('Sheet2')
sheet['A1']='hello'
sheet['A5']=123
book.save('333.xlsx')
 
同xlutils相比好像只是少了copy环节,语法稍有不同,最后也是保存为同名文件才达到修改当前文件的目的。
 
如果load_workbook('3.xls')程序报错:InvalidFileException: openpyxl does not support the old .xls file format, please use xlrd to read this file, or convert it to the more recent .xlsx file format.
 
 
 
 
注意
现在已经Office2019了,如果还只支持2003版的xls格式就会被人抛弃。后面还有更便利的库推出。
 
在Excel中内容尾部存在若干个空格时,可能是人为产生,VBA会自动去重尾部空格,Python不会,需要strip()处理。
 
https://cloud.tencent.com/developer/article/1191080 **
 
 
posted @ 2019-10-29 10:05  数之美  阅读(5144)  评论(0编辑  收藏  举报