python使用xlwt,xlrd,xlutils模块操作Excel
1.xlrd,xlwt,xlutilsc.copy模块概述
开发者:Simplistix
项目地址:https://www.python-excel.org/
GitHub开源:https://github.com/python-excel
2.xlrd模块
2.1 Note
xlrd模块是Python用来读取".xls"和“.xlsx”格式的Excel文件的模块库。
我们主要用到的API是xlrd.open_workbook(filename):用来打开我们的Excel工作簿文件[也就是workbook对象]
主要用到的对象/类有:xlrd.book.Book 、xlrd.sheet.Sheet、xlrd.sheet.Cell
分别对应Excel当中的:workbook、worksheet[sheet]、cell
xlrd.book.Book对象主要用到了1个属性和4个方法:具体见2.3部分
xlrd.sheet.Sheet对象主要用到了3个属性和6个方法:具体见2.4部分
xlrd.sheet.Cell对象主要用到了2个属性和1个方法:具体见2.5部分
2.2 wb=xlrd.open_workbook(‘filename’,on_demand=True)
filename 指定打开文件的文件路径
on_demand——True 按需加载表单/False 直接加载所有表单[可省略]
2.3 Class xlrd.book.Book
Property
Property | Description |
---|
wb.nsheet | workbook对象包含的sheet对象的个数 |
Function
Functions | Description |
---|
sheetlist[ ]=wb.sheets() | 返回一个包含所有sheet对象的列表 |
sheetnamelist[ ]=wb.sheet_names() | 返回所有表单的名称 |
sheet = wb.sheet_by_index(0) | 使用序号索引sheet对象 |
sheet = wb.sheet_by_name(name) | 根据名称索引sheet对象 |
2.4 Class xlrd sheet.Sheet
Property
Property | Description |
---|
sheet.name | 表单名称 |
sheet.nrows | 表单的最大行数 |
sheet.ncols | 表单的最大列数 |
Function
Function | Description |
---|
cell= sheet.cell(n,m) | 返回第n行第m列的单元格对象 |
sheet.cell_value(n,m) | 返回第n行第m列的单元格对象的值 |
sheet.cell_type(n,m) | 返回第n行第m列的单元格对象的类型 |
cell_list[ ] = sheet.row(n) | 返回第n行整行的Cell对象组成的列表 |
sheet.row_value() | 返回指定行内若干列的Cell对象的值 |
sheet.row_type() | 返回指定行内若干列的Cell对象的类型 |
cell_list[ ] = sheet.col(n) | 返回第n列整列的Cell对象组成的列表 |
sheet.col_value() | 返回指定列内若干行的Cell对象的值 |
sheet.col_type() | 返回指定列内若干行的Cell对象的类型 |
2.5 Class xlrd.sheet.Cell
Property
Property | Description |
---|
cell.value | 返回单元格的值 |
cell.ctype | 返回单元格的类型 |
Function
function | Description |
---|
cell.dump() | 打印单元格的信息 |
2.6 example
import xlrd
wb = xlrd.open_workbook("workbookname.xlsx")
print(f'workbook有{wb.nsheets}个sheet')
print(f'Excel中sheet的名字为:{wb.sheet_names()}')
print(wb.sheets())
sh1 = wb.sheet_by_index(0)
sh2 = wb.sheet_by_name('sheetname')
sh3 = wb.sheets()[0]
print(sh1)
print(sh2)
print(sh3)
print(f'sheet的名称为{sh1.name}')
print(f'sheet有{sh1.nrows}行')
print(f'sheet有{sh1.ncols}列')
print(f'第一行第三列的数据是{sh1.cell_value(0,2)}')
print(f'第一行第三列的数据是{sh1.cell(0,2).value}')
print(f'第一行第三列的单元格类型是{sh1.cell_type(0,2)}')
print(sh1.row_values(0))
print(sh1.col_values(1))
print(f'第一行的单元格类型是{sh1.row_types(0)}')
print(f'第二列的单元格类型是{sh1.col_types(1)}')
for r in range(sh1.nrows):
for c in range(sh1.ncols):
print(f'第{r}行第{c}列的数据为{sh1.cell(r,c)}')
3.xlutils.copy模块
nwb = copy(wb)
将xlrd.book.Book对象转换成xlwt.workbook.Workbook对象
example
import xlrd
from xlutils.copy import copy
wb = xlrd.open_workbook('workbookname.xlsx')
print(f"xlrd的workbook的对象类型是:{type(wb)}")
nwb = copy(wb)
print(f"转换后newworkbook的对象类型是:{type(nwb)}")
输出结果如下图:
4.xlwt模块
4.1 Note
xlwt是Python用来创建和写入‘.xls’格式的Excel文档的。
主要的API是xlwt.Workbook()用来创建一个workbook对象。
主要用xlwt.XFStyle()来设置单元格的格式、字体、边框、对齐方式、背景和保护,具体见4.5
主要用到的对象/类有:xlwt.Workbook.Workbook 、xlrd.Worksheet.Worksheet
分别对应Excel当中的:workbook、worksheet[sheet]
xlrd.book.Book对象主要用到了3个方法:具体见4.3部分
xlrd.sheet.Sheet对象主要用到了1个方法:具体见4.4部分
4.2 xlwt.Workbook()
wb= xlwt.Workbook() #创建一个新的workbook对象
4.3 Class xlwt.workbook.Workbook
function | Description |
---|
wb.save(Filename) | 保存workbook对象 |
wb.add_sheet(sheetname,cell_overwrite_ok=False) | 新建一个sheet对象-cell_overwrite_ok=False[可省略] |
sheet=wb.get_sheet(index/sheetname) | 根据索引或表名获取sheet对象 |
4.4 Calss xlwt.worksheet.Worksheet
sheet.write(r,c,label='',style=<xlwt.style.xFstyleobject>)
r-单元格的行号
c-单元格的列号
label-要写入的数据值
style-应用于单元格的格式[可省略]
4.5 xlwt.XFStyle()
sh.row(3).height_mismatch = True
sh.row(3).height = 10*256
sh.col(3).width = 20*256
font = xlwt.Font()
font.name = '微软雅黑'
font.colour_index= 4
font.height = 12*20
font.bold = True
font.underline = True
font.italic= True
style = xlwt.XFStyle()
style.font = font
Alig=xlwt.Alignment()
Alig.horz = 2
Alig.vert = 1
style1 = xlwt.XFStyle()
style1.alignment = Alig
border = xlwt.Borders()
border.left = 1
border.right = 1
border.top = 1
border.bottom= 1
border.left_colour = 1
border.right_colour = 2
border.top_colour = 3
border.bottom_colour= 4
style2 = xlwt.XFStyle()
style2.borders = border