Python办公自动化

一、xlrd模块

xlrd为python第三方模块,用来读取excel表格数据。

安装:pip install xlrd

导入:import xlrd

# -*- coding:utf-8 -*-
import xlrd
filename = "E:\\untitled3\\test.xlsx"
data = xlrd.open_workbook(filename)

说明:

运行python文件报SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: tr,原因:python字符串中\有转义的含义,目前有3个解决方案:

1、在路径前面加r,即保持字符原始值的意思。

data = xlrd.open_workbook( r"E:\untitled3\test.xlsx")

2、替换为双反斜杠

data = xlrd.open_workbook( "E:\\untitled3\\test.xlsx")

3、替换为正斜杠

data = xlrd.open_workbook( "E:/untitled3/test.xlsx")

初始运行报错xlrd.biffh.XLRDError: Excel xlsx file; not supported,原因是最近xlrd更新到了2.0.1版本,只支持.xls文件,不支持xlsx

安装旧版xlrd,在cmd中运行:

pip uninstall xlrd
pip install xlrd==1.2.0

安装后运行正确

1.xlrd常用函数

data = xlrd.open_workbook( "E:/untitled3/test.xlsx")
print(data.sheets())#获取全部sheet
print(data.sheets()[0])#获取全部sheet
print(data.sheet_by_index(0))#获取索引0的sheet
print(data.sheet_by_name("设备需求"))#获取sheet名为“设备需求”的sheet,区分大小写
print(data.sheet_names())#获取全部sheet的名字
print(data.sheet_loaded(0))#sheet索引为0的是否加载
print(data.nsheets)#获取sheet的数量
print(data.unload_sheet(0))#sheet索引为0的取消加载

2.xlrd读取excel行列

sheet1=data.sheet_by_index(0)#获取索引0的sheet
print(sheet1.name)#获取sheet1的名字

print(sheet1.ncols)#获取sheet1的有效行数
print(sheet1.ncols)#获取sheet1的有效列数

print(sheet1.row(1))#返回该行单元格所组成的列表
print(sheet1.col(1))#返回该列单元格所组成的列表

print(sheet1.row_types(2))#返回该行单元格的数据类型,0为空,1表示String,2表示number,3表示日期
print(sheet1.row(2)[1])#返回该行第2个单元格对象
print(sheet1.row(2)[1].value)#返回该行第2个单元格对象的值
print(sheet1.row_values(1))#返回该行所有单元格对象的值
print(sheet1.row_len(1))#返回该行单元格的个数

3.xlrd读取excel单元格

print(sheet1.cell(1,1))#获取单元格对象
print(sheet1.cell_type(1,1))#获取单元格数据类型
print(sheet1.cell(1,1).ctype)#获取单元格数据类型
print(sheet1.cell(1,1).value)#获取单元格值
print(sheet1.cell_value(1,1))#获取单元格值

二、xlwt模块

xlrd为python第三方模块,用来写入excel表格数据。只支持xls格式,不支持xlsx格式。

安装:pip install xlwt

导入:import xlwt

1.创建工作簿——2.创建工作表——3.写入工作表数据

import xlwt
#1
创建工作簿 xl=xlwt.Workbook() #2创建工作表 ws=xl.add_sheet("2010年度账单") #合并单元格1-2行,1-6列 ws.write_merge(0,1,0,5,"2010年度账单") data=(("Eqptype Model","68","Hynix","IT","新购","总计"), ("Backside", "xp","", ,"", 2, 2) ) #3for循环写入数据 for i,item in enumerate(data): for j,val in enumerate(item): ws.write(i+2,j,val) #导入图片 wsimage=xl.add_sheet("wsimage") wsimage.insert_bitmap("11.bmp",0,0) xl.save("E:\\untitled3\\2010年度账单.xls")

 

posted @ 2021-01-03 21:27  bellin124  阅读(368)  评论(0编辑  收藏  举报