简介


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


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<span style="font-family: 'courier new', courier;">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)
</span>

Reference


1. The xlrd Module

2. The xlwt Module

3. Working with Excel files in Python

最新文章

  1. MySQL学习记录--操作时间数据
  2. jquery性能
  3. AttributeError: type object &#39;_io.StringIO&#39; has no attribute &#39;StringIO&#39;
  4. Java中synchronized详解
  5. java语句练习1
  6. [Weblogic]startWebLogic.cmd配置JAVA_OPTIONS无效的解决思路与方案
  7. leetcode 137. Single Number II ----- java
  8. 提供给开发者 10 款最好的 Python IDE
  9. Debian 6解决中文乱码
  10. Cracking the coding interview--Q1.8
  11. HDU 2675 Equation Again
  12. JS中 事件冒泡与事件捕获
  13. 新更新,又是一年了。这次记录下关于android版的WeiboDemo的问题
  14. 关于Java多线程的线程同步和线程通信的一些小问题(顺便分享几篇高质量的博文)
  15. TIME_WAIT
  16. git 创建删除分支
  17. [转载]理解 Git 分支管理最佳实践
  18. [C语言]进阶|程序结构
  19. python常用模块之re模块(正则)
  20. CRM 2016 刷新 Iframe

热门文章

  1. JavaScript 编写多线程代码引用Concurrent.Thread.js(转)
  2. 382. Linked List Random Node
  3. sublime text3 本地化
  4. Java获得文件的创建时间(精确到秒)
  5. PHP部分---字符串处理(文中例子不断更新);
  6. 黑马程序员——JAVA基础之简述 类的继承、覆写
  7. java多线程:并发包中ReentrantReadWriteLock读写锁的锁降级模板
  8. java DecimalFormat
  9. PHP- 深入PHP、Redis连接
  10. Linux-lsof命令