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的主要内容,如果未能解决你的问题,请参考以下文章

Python办公自动化之操作Excel(一)

自动化办公:python操作Excel

Python操作excel之xlrd和xlwt简介

python中的xlrd和xlwt模块

Python中xlrd和xlwt模块使用方法

100天精通Python——第41天:自动化操作Excel(xlrd和xlwt)文末送书三本