Python处理Excel文档(xlrd, xlwt, xlutils)

简介



xlrd,xlwt和xlutils是用Python处理Excel文档(*.xls)的高效率工具。其中,xlrd只能读取xls,xlwt只能新建xls(不可以修改),xlutils能将xlrd.Book转为xlwt.Workbook,从而得以在现有xls的基础上修改数据,并创建一个新的xls,实现修改。

(以下属性或方法并非全部,需要更多属性请参看文档;建议先参考文末Demo,再深入了解)

xlrd


Book(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) 由Book object相关方法返回

name:                         sheet名
nrows:                                          行数
ncols:                                          列数
cell(rowx,colx):                                第rows行colx列的单元格
cell_type(rowx,colx):                           数据类型
cell_value(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型变量,对应不同的数值类型
value:    单元格的值

xlwt


Workbook(class) 由xlwt.Workbook()返回

encoding:                 编码方案
add_sheet(sheet_name):    添加sheet
get_sheet(Sheet_name):    选择sheet
save(file_name):          保存

Worksheet(class) 由Workbook object相关方法返回

write(rows,colx,cell_value,style):         编辑单元格
row(rowx).write(colx,cell_value,style):    编辑行
flush_row_data():                          减少内存压力,flush之前行不可再修改
col(colx),write(rows,cell_value,style):    编辑列

easyxf(function) 创建XFStyle instance,格式控制

expression syntax: (<element>:(<attribute> <value>,)+;)+
<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,转存为binary xls或stream

Tips


  1. xlrd.open_workbook(fomatting_info=):当formatting_info=Ture,读取workbook并保留格式
  2. xlrd.open_workbook(on_demand=): 当on_demand=True,只有被要求时才将worksheet载入内存,读取大文件时使用
  3. xlwt.Worksheet.flush_row_data(): 减少内存占用,被刷新的行不能再访问或修改,建议每1000行刷新一次(若列很多当调整)
  4. xlwt.Workbook(encoding=): 选择创建的workbook的编码

Demo


import xlrd
import xlwt
from xlutils.copy import copy

# xlrd
book = xlrd.open_workbook("example.xls", formatting_info=True, on_demand=True)
sheet = book.sheet_by_index(0)
cell = sheet.cell(0,0)

# xlwt
workbook = xlwt.Workbook()
workbook.encoding = "utf-8" # Equals to workbook = xlwt.Workbook(encoding="utf-8")
sheet = workbook.add_sheet("Sheet1", cell_overwrite_ok=True)
style = xlwt.easyxf(
    "font: name Arial;"
    "pattern: pattern solid, fore_colour red;"
    )
sheet.write(0, 0, "content of this cell", style)
sheet.row(0).set_style(style)
workbook.save("example.xls")

#xlutils
workbook = copy(book)

Reference


  1. The xlrd Module
  2. The xlwt Module
  3. Working with Excel files in Python

Python处理Excel文档(xlrd, xlwt, xlutils),布布扣,bubuko.com

时间: 2024-12-18 19:23:29

Python处理Excel文档(xlrd, xlwt, xlutils)的相关文章

利用xlrd模块实现Python读取Excel文档

# -*- coding: cp936 -*- #python读取excel import xlrd def main(): xls=xlrd.open_workbook("d:\\11.xls") try: mysheet=xls.sheet_by_name("Sheet1")#找到名为Sheet1的工作表.区分大小写 except: print("没有此工作表") return print("共有 %d 行, %d 列."

【Python】excel读写操作 xlrd &amp; xlwt

xlrd ■ xlrd xlrd模块用于读取excel文件内容 基本用法: workbook = xlrd.open_workbook('文件路径') workbook.sheet_names() #返回所有sheet的列表 workbook.sheet_by_index(...) #通过index来获得一个sheet对象,index从0开始算起 workbook.sheet_by_name(...) #根据sheet名获得相应的那个sheet对象 在得到sheet对象之后,就可以用它的一些方法

服务器巡检shell脚本,python生成excel文档并邮件发出

背景及思路: 五一小长假之前,公司要求我做一次服务器巡检. 1.写了一个简单的脚本获取服务器的各种基础信息:cpu,内存,swap分区使用情况,磁盘,网卡信息种种,具体见脚本,将这些信息追加到一个文件中,然后在监控机上做一次汇总,汇总方式就不详谈,我用的是for循环ssh追加 2.然后利用python的xlsxwriter模块生成excel 3.最后利用python发带附件为excel的邮件到指定邮箱 获取服务器信息部分脚本: #取所需要的内网IP Int_ip=`ifconfig|awk '/

Python处理Excel文档之openpyxl

openpyxl 可以很好的处理 2010版本以上的表格. 示例: 1 #coding:utf8 2 ''' 3 Created on 2018年8月18日 4 5 @author: Administrator 6 ''' 7 from openpyxl import Workbook 8 import datetime 9 wb = Workbook() 10 11 # grab the active worksheet 12 ws = wb.active 13 14 # Data can b

Python3正则表达式清洗Excel文档

本项目中虽然数据量不大,用Excel自带的替换功能也能实现,但是针对上几千条字段去匹配数据的话,Python就明显高效的多,现在开始讲解: 要清洗的是Excel文档中所有字段的地名, 需要清洗数据: 首先,需要导入xlrd和re包,前者是用来读写Excel文档,后者是正则表达式的包 1 #-*- coding:gbk -*- 2 import xlrd 3 import re 4 5 #打开一个Excel表 6 data = xlrd.open_workbook('/home/kin/compa

python+selenium自动化软件测试(第12章):Python读写XML文档

XML 即可扩展标记语言,它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进 行定义的源语言.xml 有如下特征: 首先,它是有标签对组成:<aa></aa> 标签可以有属性: <aa id=’123’></aa> 标签对可以嵌入数据: <aa>abc</aa>Python对XML文档读写常用有几个模块: (1) xml.etree.ElementTree ElementTree就像一个轻量级的DOM,具有方便友好的A

Go 语言读写 Excel 文档

Excelize 是 Golang 编写的一个用来操作 Office Excel 文档类库,基于微软的 Office OpenXML 标准.可以使用它来读取.写入 XLSX 文件.相比较其他的开源类库,Excelize 支持写入原本带有图片(表)的文档,还支持向 Excel 中插入图片,并且在保存后不会丢失图表样式. 项目主页 github.com/Luxurioust/excelize 安装 go get github.com/Luxurioust/excelize 创建 XLSX packa

java读取WORD/EXCEL模板转换生成新WORD/EXCEL文档

原文:java读取WORD/EXCEL模板转换生成新WORD/EXCEL文档 代码下载地址:http://www.zuidaima.com/share/1550463239670784.htm 可以通过预先设置指定的excel和word模板,通过替换文档里面指定的标志来生成新的excel和word文档.excel的部分只是实现了简单的方法.word部分可以支持word2003和word2007格式.建议word使用07及其以上. 其实excel部分标签和jstl很像,而且支持循环等.word就支

支持将数据导出到Excel文档的时候设置单元格格式的.NET控件Spire.DataExport

Spire.DataExport for .NET是e-iceblue公司推出的一款数据导出类.NET控件.作为一款专业的数据导出控件,Spire.DataExport for .NET可以帮助开发人员轻松快速的从各种主流数据库中导出数据并存储于各种文件格式中.他支持从SQL Command, DataTable,ListView中导出数据并存储于MS Excel,MS Word, HTML, XML, PDF, MS Access, DBF, SQL Script, SYLK, DIF, CS