Python办公自动化之xlrd,xlwt
Posted 程序员唐丁
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python办公自动化之xlrd,xlwt相关的知识,希望对你有一定的参考价值。
一、安装
pip3 install xlrd==1.2.0
目前最新版本为2.0.1,不支持处理xls文件
二、各类函数详解
import xlrd as rd
1、打开excel文件,返回类型(<class ‘xlrd.book.Book’>)
rd.open_workbook(
filename=None,
logfile=<_io.TextIOWrapper name='<stdout>' mode='w' encoding='UTF-8'>,
verbosity=0,
use_mmap=1,
file_contents=None,
encoding_override=None,
formatting_info=False,
on_demand=False,
ragged_rows=False
)
- filename - 待打开的Excel文件路径
- logfile - 向一个文件输出日志,默认sys.stdout
- verbosity - 增加日志输出详细程度
- use_mmap - 是否开启mmap模块
- file_contents - 传入字符串或者mmap对象来覆盖filename参数
- encoding_override - 处理老版本的Excel文件(Excel 97)时,并且内部记录的"代码页"丢失或不正确时使用,新版本Excel该参数不生效
- formatting_info - 默认为False,可以节省内存,在这个情况下,空的单元格,存在格式信息但是没有数据,将会被当成空来对待,将会裁剪掉任何底部,右边的“边缘”空的表格,只有cell_value()和cell_type是有效的;当取值为True时,会读取各种格式的信息,当与xlsx文件一起使用时,将引发NotImplementedError异常
- on_demand - 控制sheet表是在初始化时全部加载(False)还是调用时加载(True)
- ragged_rows - 默认False,表示所有行都用空单元格填充,所有行的大小都与 ncol 相同;若设置True,表示行的末尾没有空单元格,如果行的大小变化很大,这可以节省大量内存,参见 row_len() 方法
2、获得excel内所有sheet表的对象列表
book.sheets()
3、获得excel内所有sheet表的名称列表
book.sheet_names()
4、获取excel中的单个sheet对象,获取方式有两种(通过索引、通过sheet名称)
#通过索引
book.sheet_by_index(0)
#通过sheet名称
book.sheet_by_name(sheet_name)
5、获取excel中sheet表数,返回类型:int
book.nsheets
6、获取sheet表的行数和列数,返回类型:int
sheet1 = book.sheet_by_index(0)
print(sheet1.nrows,sheet1.ncols)
7、按行打印表中数据,返回类型:list
for index in range(sheet1.nrows): print(sheet1.row_values(index))
8、按列打印表中数据,返回类型:list
for index in range(sheet1.ncols): print(sheet1.col_values(index))
9、打印某个单元格信息
#返回类型<class 'xlrd.sheet.Cell'>sheet1.cell(3,4)#返回单元格的类型sheet1.cell_type(3,4)#返回单元格的值sheet1.cell_value(3,4)
一、安装
pip3 install xlwt
二、各类函数详解
import xlwt as wt
1、创建excel文件,返回类型(<class ‘xlwt.Workbook.Workbook’>)
book = wt.Workbook(encoding='utf-8')
2、添加sheet表
book.add_sheet('程序员唐丁')
3、在某行某列的单元格中添加值
style = wt.XFStyle() # 初始化样式
font = wt.Font() # 为样式创建字体
font.name = '宋体'
font.bold = True # 加粗
font.underline = True # 下划线
font.italic = True # 斜体字
style.font = font # 设定样式
sheet.write(1, 0, '程序员唐丁', style) # 带样式的写入
sheet.write(0,0,'程序员唐丁') # 不带样式的写入
book.save('test.xlsx') #保存
4、在单元输入公式计算
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])
workbook.save('test.xlsx')
5、在单元格添加超链接
sheet.write(0, 0, wt.Formula('HYPERLINK("http://www.baidu.com";"baidu")'))
6、单元格合并,并填入值
#将0行的1列到3列合并,并填入程序员唐丁
sheet.write_merge(0, 0, 0, 3, '程序员唐丁')
7、设置单元格对齐方式
alignment = wt.Alignment() # Create Alignment
alignment.horz = wt.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 = wt.Alignment.VERT_CENTER # May be: VERT_TOP, VERT_CENTER, VERT_BOTTOM, VERT_JUSTIFIED, VERT_DISTRIBUTED
style = wt.XFStyle() # Create Style
style.alignment = alignment # Add Alignment to Style
sheet.write_merge(0, 0, 0, 3, 'First Merge' ,style)
8、添加边框
borders = wt.Borders() # Create Bordersborders.left = wt.Borders.THINborders.right = wt.Borders.THINborders.top = wt.Borders.THINborders.bottom = wt.Borders.THINborders.left_colour = 0x40borders.right_colour = 0x40borders.top_colour = 0x40borders.bottom_colour = 0x40style = wt.XFStyle() # Create Stylestyle.borders = borders # Add Borders to Stylesheet.write_merge(0, 0, 0, 7, 'First Merge',style)
以上是关于Python办公自动化之xlrd,xlwt的主要内容,如果未能解决你的问题,请参考以下文章