总结xlwt,xlrd的使用

xlwt的使用

1. 下载导入模块
下载模块:pip install xlwt
导入模块:import xlwt

2. 基本使用
实例化一个book对象
book = xlwt.Workbook()
创建表单
sheet = book.add_sheet(‘sheet1’)
指定行列写入内容
sheet.write(0,0,‘此处写入内容’)
保存文件
book.save(‘test.xls’)

3. 设置字体

style = xlwt.XFStyle() # 初始化样式
font = xlwt.Font() # 为样式创建字体
font.name = ‘Times New Roman’
font.bold = True # 黑体
font.underline = True # 下划线
font.italic = True # 斜体字
style.font = font # 设定样式
sheet.write(1, 0, ‘Formatted value’, style) # 带样式的写入

4. 设置单元格宽度和高度

设置列宽度
sheet.col(0).width = 3333

xlwt中列宽的值表示方法:默认字体0的1/256为衡量单位。
xlwt创建时使用的默认宽度为2960,既11个字符0的宽度
所以我们在设置列宽时可以用如下方法:
width = 256 * 20 256为衡量单位,20表示20个字符宽度
设置行高度

first_col=sheet.col(0)
sec_col=sheet.col(1)

first_col.width=256*20
tall_style = xlwt.easyxf(‘font:height 720;’) # 36pt,类型小初的字号
first_row = sheet.row(0)
first_row.set_style(tall_style)
5. 写入超链接
sheet.write(0, 0, xlwt.Formula(‘HYPERLINK(“http://www.google.com”;“Google”)’)) #Outputs the text “Google” linking to http://www.google.com

6. 写入日期

import xlwt
import datetime

book= xlwt.Workbook()

sheet= workbook.add_sheet(‘My Sheet’)

style = xlwt.XFStyle()
style.num_format_str = ‘M/D/YY’ # Other options: D-MMM-YY, D-MMM, MMM-YY, h:mm, h:mm:ss, h:mm, h:mm:ss, M/D/YY h:mm, mm:ss, [h]:mm:ss, mm:ss.0

sheet.write(0, 0, datetime.datetime.now(), style)

book.save(‘Excel_Workbook.xls’)

7. 添加公式
sheet.write(0, 0, 5) # Outputs 5
sheet.write(0, 1, 2) # Outputs 2
sheet.write(1, 0, xlwt.Formula(‘A1*B1’)) # Should output “10” (A1[5] * A2[2])
sheet.write(1, 1, xlwt.Formula(‘SUM(A1,B1)’)) # Should output “7” (A1[5] + A2[2])

8. 合并行列

sheet.write_merge(1, 3, 0, 4, ‘Second Merge’)
合并行列

9. 设置单元格内容对齐方式
alignment = xlwt.Alignment() # Create Alignment

alignment.horz = xlwt.Alignment.HORZ_CENTER # May be: HORZ_GENERAL, HORZ_LEFT, HORZ_CENTER, HORZ_RIGHT, HORZ_FILLED, HORZ_JUSTIFIED, HORZ_CENTER_ACROSS_SEL, HORZ_DISTRIBUTED

alignment.vert = xlwt.Alignment.VERT_CENTER # May be: VERT_TOP, VERT_CENTER, VERT_BOTTOM, VERT_JUSTIFIED, VERT_DISTRIBUTED

style = xlwt.XFStyle() # Create Style
style.alignment = alignment # Add Alignment to Style

sheet.write(0, 0, ‘Cell Contents’, style)

10. 设置单元格背景色
pattern = xlwt.Pattern() # Create the Pattern

pattern.pattern = xlwt.Pattern.SOLID_PATTERN # May be: NO_PATTERN, SOLID_PATTERN, or 0x00 through 0x12

pattern.pattern_fore_colour = 5 # May be: 8 through 63. 0 = Black, 1 = White, 2 = Red, 3 = Green, 4 = Blue, 5 = Yellow, 6 = Magenta, 7 = Cyan, 16 = Maroon, 17 = Dark Green, 18 = Dark Blue, 19 = Dark Yellow , almost brown), 20 = Dark Magenta, 21 = Teal, 22 = Light Gray, 23 = Dark Gray, the list goes on…

style = xlwt.XFStyle() # Create the Pattern
style.pattern = pattern # Add Pattern to Style

sheet.write(0, 0, ‘Cell Contents’, style)

xlrd的使用

1. 下载导入模块
下载:pip install xlrd
导入:import xlrd

2. 基本使用
获取book对象
book = xlrd.open_workbook(‘test.xls’)
获取表单
a.获取所有表单对象,返回列表
sheets = book.sheets()

b.通过索引获取
sheet = book .sheet_by_index(sheetx) #索引从0开始

c.通过名字获取
sheet = book.sheet_by_name(name)

d.判断Book对象中某个sheet是否导入
book.sheet_loaded(sheet_name_or_index):通过sheet名称或索引判断该sheet是否导入成功
返回值为bool类型,若返回值为True表示已导入;若返回值为False表示未导入

3. 获取表单中的有效行数,有效列数
book.nrows:获取某sheet中的有效行数
book.ncols:获取某sheet中的有效列数

4. 获取表单某行或某列的值
sheet.row_values(rowx[, start_colx=0, end_colx=None]):获取sheet中第rowx+1行从start_colx列到end_colx列的数据,返回值为列表。
若rowx在索引范围内,以列表形式返回数据;
若rowx不在索引范围内,则报错IndexError

sheet.col_values(self, colx[, start_rowx=0, end_rowx=None]):获取sheet中第colx+1列从start_rowx行到end_rowx行的数据,返回值为列表。

5. 读取日期

python读取excel中单元格的内容返回的有5种类型,即上面例子中的ctype:

ctype : 0 empty,1 string,2 number, 3 date,4 boolean,5 error

即date的ctype=3,这时需要使用xlrd的xldate_as_tuple来处理为date格式,先判断表格的ctype=3时xldate才能开始操作。

import xlrd

from datetime import date,datetime

print(sheet.cell(1,2).ctype)

date_value = xlrd.xldate_as_tuple(sheet1.cell_value(1,2),wb.datemode)

print(date_value)

print(date(*date_value[:3]))

print(date(*date_value[:3]).strftime(’%Y/%m/%d’))

读取时间格式内容

6. 对合并单元格执行操作
(1) 获取合并的单元格
若表格为xls格式的,打开workbook时需将formatting_info设置为True,然后再获取sheet中的合并单元格;
若表格有xlsx格式的,打开workbook时保持formatting_info为默认值False,然后再获取sheet中的合并单元格;

SheetObject.merged_cells:获取sheet中合并单元格的信息,返回值为列表;
若sheet对象中无合并单元格,则返回值为空列表;
列表中每个单元格信息的格式为:(row_start, row_end, col_start, col_end)
row_start表示合并单元格的起始行;
row_end表示合并单元格的结束行;
col_start表示合并单元格的起始列;
col_end表示合并单元格的结束列;
合并单元格的行取值范围为[row_start, row_end),包括row_start,不包括row_end;
合并单元格的列取值范围为[col_start, col_end),包括col_start,不包括col_end;
如:(1, 3, 4, 6):表示从第1到2行合并,从第4到第5列合并;
(2)读取合并单元格的数据
读取合并单元格数据仅需merged_cells数据中的row_start和col_start这两个索引即可

SheetObject.cell_value(rowx=row_start, colx=col_start):获取合并单元格的数据

7. 对Sheet对象的单元格执行操作
ShellObeject.cell(rowx, colx):获取sheet对象中第rowx+1行,第colx+1列的单元对象,返回值为’xlrd.sheet.Cell’类型,返回值的格式为“单元类型:单元值”。

ShellObject.cell_value(rowx, colx):获取sheet对象中第rowx+1行,第colx+1列的单元数据,返回值为当前值的类型(如float、int、string…);

ShellObject.cell_type(rowx, colx):获取sheet对象中第rowx+1行,第colx+1列的单元数据类型值;
单元类型ctype:empty为0,string为1,number为2,date为3,boolean为4, error为5;

8. 对Sheet对象中的行操作
SheetObject.nrows:获取某sheet中的有效行数

SheetObject.row_values(rowx[, start_colx=0, end_colx=None]):获取sheet中第rowx+1行从start_colx列到end_colx列的数据,返回值为列表。
若rowx在索引范围内,以列表形式返回数据;
若rowx不在索引范围内,则报错IndexError

SheetObject.row(rowx):获取sheet中第rowx+1行单元,返回值为列表;
列表每个值内容为: 单元类型:单元数据

SheetObject.row_slice(rowx[, start_colx=0, end_colx=None]):以切片方式获取sheet中第rowx+1行从start_colx列到end_colx列的单元,返回值为列表;
列表每个值内容为: 单元类型:单元数据

SheetObject.row_types(rowx[, start_colx=0, end_colx=None]):获取sheet中第rowx+1行从start_colx列到end_colx列的单元类型,返回值为array.array类型。
单元类型ctype:empty为0,string为1,number为2,date为3,boolean为4, error为5(左边为类型,右边为类型对应的值);

SheetObject.row_len(rowx):获取sheet中第rowx+1行的长度

rowx:行标,行数从0开始计算(0表示第一行), 必填参数;
start_colx:起始列,表示从start_colx列开始取值,包括第start_colx的值;
end_colx:结束列,表示到end_colx列结束取值,不包括第end_colx的值;

start_colx默认为0,end_colx默认为None:表示取整行相关数据;

SheetObject.get_rows():获取某一sheet所有行的生成器

9. 对Sheet对象中的列操作
SheetObject.ncols:获取某sheet中的有效列数

SheetObject.col_values(self, colx[, start_rowx=0, end_rowx=None]):获取sheet中第colx+1列从start_rowx行到end_rowx行的数据,返回值为列表。

SheetObject.col_slice(colx[, start_rowx=0, end_rowx=None]):以切片方式获取sheet中第colx+1列从start_rowx行到end_rowx行的数据,返回值为列表。
列表每个值内容为: 单元类型:单元数据

SheetObject.col_types(colx[, start_rowx=0, end_rowx=None]):获取sheet中第colx+1列从start_rowx行到end_rowx行的单元类型,返回值为列表;

以上内容摘自:
https://blog.csdn.net/csdnsevenn/article/details/80863658?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.edu_weight&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.edu_weight

https://www.jianshu.com/p/f2c9dff344c6

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值