python中xlrd写操作_Python读写操作Excel模块_xlrd_xlwt_xlutils
Python 读写操作Excel —— 安装第三方库(xlrd、xlwt、xlutils、openpyxl)
如果仅仅是要以表单形式保存数据,可以借助 CSV 格式(一种以逗号分隔的表格数据格式)进行处理,Excel 也支持此格式。但标准的 Excel 文件(xls/xlsx)具有较复杂的格式,并不方便像普通文本文件一样直接进行读写,需要借助第三方库来实现。
常用的库是 python-excel 系列:
xlrd、xlwt、xlutils、openpyxl
• xlrd - 读取 Excel 文件
• xlwt - 写入 Excel 文件
• xlutils - 操作 Excel 文件的实用工具,如复制、分割、筛选等
• openpyxl - 操作xlsx后缀的excel,实践发现 xlrd、xlwt、xlutils 可以读写操作xlsx文件,但是实际保存后打不开,修改后缀为xls后方可正常打开,而程序是完成了正常的读写操作,只是人为不能正常打开文件,所以这里要增加一个新的模块。
本文仅对xlrd、xlwt、xlutils进行介绍。
安装excel处理模块
(以下属性或方法并非全部,需要更多属性请参看文档;建议先参考文末Demo,再深入了解)
xlrd
WorkBook(class) 由xlrd.open_work("example.xls")返回:获取工作薄
常用方法:
nsheets:返回sheets数量
sheet_names:返回sheet名称列表
sheets:返回sheet列表
sheet_by_index(sheetx):按工作薄索引索引号提取sheet
sheet_by_name(sheet_name):按工作薄名称名称提取sheet
Sheet(class) 由WorkBook相关方法返回:对获取的工作薄进行操作
常用方法:
name:返回sheet名
nrows:返回行数
ncols:返回列数
cell(rowx,colx):返回第rows行colx列的单元格
cell_type(rowx,colx):返回单元格数据类型
cell_value(rows,colx):返回单元格数值,如获取合并单元格的内容,rows为行开始索引,colx为列索引
col(colx):获取第colx列所有单元格组成的列表
col_slice(colx,start_rowx=0,end_rowx=None):返回第colx列指定单元格组成的列表
col_types(colx,start_rowx=0,end_rowx=None):返回第colx列指定单元格数值类型组成的列表
col_values(colx,start_rowx=0,end_rowx=None):返回第colx列指定单元格数值组成的列表
row同样有col的各项操作,此处略去
Cell(class) 由Sheet object(s)相关方法返回:对单元格进行操作
ctype:一个int型变量,对应不同的数值类型,0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error
value:单元格的值
xlwt
Workbook(class) 由xlwt.Workbook()返回:创建的临时工作表
常用方法:
encoding:编码方案
add_sheet(sheet_name):添加sheet,工作薄名称为sheet_name
get_sheet(Sheet_name):按名称选择对应sheet
save(file_name):保存,这个操作是必须的,否则表格不能被保存
Worksheet(class) 由Workbook object相关方法返回:对工作薄中单元格等操作
常用方法:
write(rows,colx,cell_value,style):编辑单元格,style表示单元格样式
write_merge(x, x + h, y, w + y, string, sytle):x表示行,y表示列,w表示跨列个数,h表示跨行个数,string表示要写入的单元格内容。
insert_bitmap(img, x, y, x1, y1, scale_x=0.8, scale_y=1):img表示要插入的图像地址,x表示行,y表示列,x1表示相对原来位置向下偏移的像素,y1表示相对原来位置向右偏移的像素,scale_x表示相对原图宽的比例,scale_y表示相对原图高的比例
row(rowx).write(colx,cell_value,style):编辑行
flush_row_data():减少内存压力,flush之前行不可再修改
col(colx),write(rows,cell_value,style):编辑列
easyxf(function):创建XFStyle instance,格式控制(xlwt.XFStyle())
(加粗为默认格式,以下所列并非全部)
element attribute value
font - bold - True or False
- colour - {colour}
- italic - True or False
- name - name of the font, Arial
- underline - True or False
alignment - direction - general, lr, rl
- horizontal - general, left, center, right, filled
- vertical - bottom, top, center, justified, distributed
- shrink_to_fit - True or False
bolders - left - an integer width between 0 and 13
- right - an integer width between 0 and 13
- top - an integer width between 0 and 13
- bottom - an integer width between 0 and 13
- diag - an integer width between 0 and 13
- left_colour - {colour}*, automatic colour
- right_colour - {colour}*, automatic colour
- ...
pattern - back_color - {colour}*, automatic colour
- fore_colour - {colour}*, automatic colour
- pattern - none, solid, fine_dots, sparse_dots
{colous}*: black, (dark_)(light_)blue, gold, (dark_)(light_)green, ivory, lavender,
(light_)orange, pink, (dark_)red, rose, violet, white, (dark_)(light_)yellow, ...
xlutils
常用方法:
copy:将xlrd.Book转为xlwt.Workbook
styles:读取xlrd.Workbook的每一个单元格的style
display:简单而安全地呈现xlrd读取的数据
filter:拆分与整合多个xls文件
margins:查看表格稀疏程度
save:列化xlrd.Book,转存为xls
实例:
一:xlrd读表数据模块
读取excel中数据有两种方法,假设有如下表格
要求:读取excel数据,取第2行以下的数据,然后取每行前13列的数据
方法一:
import xlrd
workbook = xlrd.open_workbook('city.xls')
sheet = workbook.sheets()[0] #因为只有一个工作薄,我这里就直接用所以为0的工作薄了
nrows = sheet.nrows #获取工作薄的行数
for i in range(nrows):
if i<2: #取第2行以下的数据
continue
print(sheet.row_values(i)[1:]) #打印行数据
方法二:
import xlrd
workbook = xlrd.open_workbook('city.xls')
sheet_names = workbook.sheet_names() ##抓取所有sheet页的名称
#print(sheet_names)
# workbook_sheet = workbook.sheet_by_name('sheet1') #通过工作薄名称获取工作薄
# workbook_sheet = workbook.sheet_by_index(0) #通过索引获取工作薄
workbook_sheet = workbook.sheets()[0] #通过索引获取工作薄
num_rows = workbook_sheet.nrows #获取工作薄的行数
for i in range(num_rows):
if i<2: #取第2行以下的数据
continue
print(workbook_sheet.row_values(i)[1:]) #打印行数据
num_cols = workbook_sheet.ncols #获取工作薄的列数
for j in range(num_cols): #遍历列数并打印列据
print(workbook_sheet.col_values(j))
#获取单元格数据
for rown in range(num_rows):
for coln in range(num_cols):
cell = workbook_sheet.cell_value(rown,coln)
print(cell)
'''#获取单元格数据的其他写法:(实际中多行注释不显示)
for rown in range(num_rows):
for coln in range(num_cols):
cell = workbook_sheet.cell(rown,coln).value #方法1
print(cell)
cell = workbook_sheet.row(rown)[coln].value #方法2
print(cell)
cell = workbook_sheet.col(coln)[rown].value #方法3
print(cell)
#获取单元格中值的类型,类型 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error
cell_type = workbook_sheet.cell_type(rown,coln)
print(cell_type)'''
二、xlwt写表数据模块
要求:新建excel文件并写入数据
import xlwt
#创建workbook和sheet对象
workbook = xlwt.Workbook() #注意Workbook的开头W要大写
sheet1 = workbook.add_sheet('sheet1')
sheet2 = workbook.add_sheet('sheet2')
#向sheet工作薄中写入数据
sheet1.write(0,0,'1') #单元格写数据
sheet1.write(0,1,'中国')
sheet1.write(0,2,'China')
#批量写数据
list1 = [[2,'澳大利亚','Australia'],[3,'比利时','Belgium'],[4,'保加利亚','Bulgaria']]
i = 1
for j in list1:
for x in range(len(j)):
sheet1.write(i,x,j[x])
i += 1
#设计样式,并应用样式
style = xlwt.XFStyle() #初始化样式
font = xlwt.Font()#为样式创建字体
font.name = 'Times New Roman'
font.bold = True
font.underline =True
style.font = font #设置样式的字体
sheet1.write(6,0,'some bold Times text',style)#使用样式
first_col = sheet1.col(0) #列的样式也可进行设置
first_col.width = 256*20
workbook.save('xlwt_t.xls') #保存该excel文件,有同名文件时直接覆盖
三、xlutils模块修改表格
向已有excel文件中写入数据
import xlrd
import xlutils.copy
rb = xlrd.open_workbook('xlwt_t.xls',formatting_info=True)#打开一个workbook,formatting_info为保留原样式
wb = xlutils.copy.copy(rb)
ws = wb.get_sheet(0) #获取sheet对象,通过sheet_by_index()获取的sheet对象没有write()方法
ws.write(8,0,'changed1!')
ws.write_merge(7,8,0,3,'changed2!') #写入数据,并合并单元格
wb.add_sheet('sheet6')#添加sheet页
wb.save('xlwt_t.xls')#利用保存时同名覆盖达到修改excel文件的目的,注意未被修改的内容保持不变
python中xlrd写操作_Python读写操作Excel模块_xlrd_xlwt_xlutils相关推荐
- python xlrd安装_详解python中xlrd包的安装与处理Excel表格
一.安装xlrd 地址 下载后,使用 pip install .whl安装即好. 查看帮助: >>> import xlrd >>> help(xlrd) Help ...
- python中怎么写注释_Python中注释的写法
Python中注释的写法 #:使用井号进行单行注释 Python中貌似没有提供多行注释,不过我们可以利用三引号的多行字符串来进行多行注释 """ 多行注释内容 多行注释内 ...
- python中pass的用法_python学习之getpass模块使用
我们登入linux时,输入密码是什么都不显示的,在python中也可以这样做,那就是getpass模块(在pycharm中无法使用) getpass模块中包含几个比较实用的功能: 1.getpass ...
- python中字典的用法_Python字典操作用法总结
基本语法: dict = {'ob1':'computer', 'ob2':'mouse', 'ob3':'printer'} 技巧: 字典中包含列表:dict={'yangrong':['23',' ...
- 用python的tkiner写计算器_Python(10)--利用tkinter模块实现一个简单的计算器功能
#引入相关模块(math模块和tkinter模块) importmathimporttkinterclassMyCalculator:#初始化对象 def __init__(self):#设置主界面 ...
- python中的所有功能_python – 是否可以列出模块中的所有功能?
参见英文答案 > listing all functions in a python module 12个答案 ...
- Python中xlrd操作excel单元格
学习目标 Python中xlrd操作excel单元格 学习内容 1.获取工作表 sheet=data.sheet_by_index(0) 2.返回单元格对象 sheet.cell(1,2) #返回第二 ...
- python 文档操作_Python 文件操作
一. Python 读写 创建文件 Python中对文件,文件夹(文件操作函数)的操作需要涉及到OS 模块和 shutil 模块 . 一) . OS模块 的基本操作 方法 功能 os.getcwd() ...
- Python对文件的创建和读写操作
Python对文件的创建和读写操作 Python提供了文件读写的方法,并且提供了内置的CSV模块,可以对文本文件和二进制文件方便的进行读写操作.除此之外,Python还提供了os模块和shutil模块 ...
最新文章
- 4MLinux 24.0 发布
- 【存储知识学习】第四章-七种RAID-《大话存储》阅读笔记
- c语言控制台数字键打地鼠,自己用C写的一个简单的打地鼠游戏代码出了个问题(鼠标和循环不能...
- koreader下载_koreader下载_koreader安装_koreader最新版_koreader安卓版下载_koreader app_易玩网...
- Multi GET API
- 安全扫描工具_固件级安全,微软安全工具新增UEFI扫描功能
- 【深入理解JVM】JVM的五大运行时数据区域
- 英特尓祭出开挖数据价值的“六脉神剑”!
- QT分析之QApplication的初始化
- 2023王道C语言训练营(线索二叉树)
- AD学习之旅(1)— Altium Designer 16 软件下载与安装
- 2021年高压电工模拟考试题及高压电工操作证考试
- 让Thinkpad USB键盘支持小红帽中键滚轮的方法(ThinkPad USB Keyboard with TrackPoint)
- So Far Away
- git:info: detecting host provider for ‘https://gitee.com/‘...
- 玩qq游戏提示计算机内存不足,Win8系统下玩lol提示关闭程序以防止信息丢失内存不足怎么办...
- iPhone访问Ubuntu网络共享文件夹
- 分图层加载CAD数据
- android 阅读模式吗,在Android或iOS上使用阅读模式来查看网页 | MOS86
- 如何度过8天长假?小灰推荐几部经典电影给大家!