python 读 excel 模块: xlrd

主要来自:[ python中使用xlrd、xlwt操作excel表格详解 ]

为了方便阅读, 我将原文两个模块拆分为两篇博文:

[ python 读 excel 模块: xlrd ]

[ python 写 excel 模块: xlwt ]

xlrd 基本操作

这个过程有几个比较麻烦的问题,比如读取日期、读合并单元格内容。

读一个有2个 sheet 的 excel 文件, 读入sheet2的内容, 内容如下:

使用 python 读入

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# - read_excel.py
#

import xlrd
import xlwt
from datetime import date,datetime

def read_excel():
  # 打开文件
  workbook = xlrd.open_workbook(r‘/tmp/demo.xlsx‘)
  # 获取所有sheet
  print workbook.sheet_names() # [u‘sheet1‘, u‘sheet2‘]
  sheet2_name = workbook.sheet_names()[1]

  # 根据sheet索引或者名称获取sheet内容
  sheet2 = workbook.sheet_by_index(1) # sheet索引从0开始
  sheet2 = workbook.sheet_by_name(‘sheet2‘)

  # sheet的名称,行数,列数
  print sheet2.name,sheet2.nrows,sheet2.ncols

  # 获取整行和整列的值(数组)
  rows = sheet2.row_values(3) # 获取第四行内容
  cols = sheet2.col_values(2) # 获取第三列内容
  print rows
  print cols

  # 获取单元格内容
  print sheet2.cell(1,0).value.encode(‘utf-8‘)
  print sheet2.cell_value(1,0).encode(‘utf-8‘)
  print sheet2.row(1)[0].value.encode(‘utf-8‘)

  # 获取单元格内容的数据类型
  print sheet2.cell(1,0).ctype

if __name__ == ‘__main__‘:
  read_excel()

运行结果如下:

可以看到, 红框中的内容本应该是生日, 但是现实的浮点数. 接下来解决日期的问题.

xlrd 读取单元格日期内容

python读取excel中单元格的内容返回的有5种类型,即上面例子中的ctype:

0 empty
1 string
2 number
3 date
4 boolean
5 error

所以, 对于日期的处理,可以先判断其 ctype, 如果为 date, 则需要使用 xlrd 的 xldate_as_tuple 来处理.

>>> sheet2.cell(2,2).value #1990/2/22
33656.0
>>> date_value = xlrd.xldate_as_tuple(sheet2.cell_value(2,2),workbook.datemode)
>>> date_value
(1992, 2, 22, 0, 0, 0)
if (sheet.cell(row,col).ctype == 3):
    date_value = xlrd.xldate_as_tuple(sheet.cell_value(rows,3),book.datemode)
    date_tmp = date(*date_value[:3]).strftime(‘%Y/%m/%d‘)

xlrd 处理合并单元的值问题

对于合并单元格的数据, xlrd 的处理结果是, 只有第一个单元格的有值,其它的为空.

获取单元格值得思路是: 获取合并的单元格 --> 获取合并单元格的内容.

获取合并的单元格

读取文件的时候需要将formatting_info参数设置为True,默认是False.

>>> workbook = xlrd.open_workbook(r‘/tmp/demo.xlsx‘,formatting_info=True)
>>> sheet2 = workbook.sheet_by_name(‘sheet2‘)
>>> sheet2.merged_cells
[(7, 8, 2, 5), (1, 3, 4, 5), (3, 6, 4, 5)] 

merged_cells返回的这四个参数的含义是:(row,row_range,col,col_range). 取值范围和 list 切换相同, 包含 start, 不包含 stop.

利用这个,可以分别获取合并的三个单元格的内容:

>>> print sheet2.cell_value(1,4)  #(1, 3, 4, 5)
好朋友
>>> print sheet2.cell_value(3,4)  #(3, 6, 4, 5)
同学
>>> print sheet2.cell_value(7,2)  #(7, 8, 2, 5)
暂无 

可以看到, 获取 merge_cells 返回的 row 和 col 低位的索引即可.

>>> merge = []
>>> for (rlow,rhigh,clow,chigh) in sheet2.merged_cells:
  merge.append([rlow,clow])

>>> merge
[[7, 2], [1, 4], [3, 4]]
>>> for index in merge:
  print sheet2.cell_value(index[0],index[1])

暂无
好朋友
同学

原文地址:https://www.cnblogs.com/tiantiandas/p/python_module_xlrd.html

时间: 2024-10-07 15:31:24

python 读 excel 模块: xlrd的相关文章

python 写 excel 模块 : xlwt

主要来自:[ python中使用xlrd.xlwt操作excel表格详解 ] 为了方便阅读, 我将原文两个模块拆分为两篇博文: [ python 读 excel 模块: xlrd ] [ python 写 excel 模块: xlwt ] xlwt 写excel的难点可能不在构造一个workbook的本身,而是填充的数据,不过这不在范围内.在写excel的操作中也有棘手的问题,比如写入合并的单元格就是比较麻烦的,另外写入还有不同的样式. 现在完成如下一个 excel 的表格 : python c

【转】python操作excel表格(xlrd/xlwt)

[转]python操作excel表格(xlrd/xlwt) 最近遇到一个情景,就是定期生成并发送服务器使用情况报表,按照不同维度统计,涉及python对excel的操作,上网搜罗了一番,大多大同小异,而且不太能满足需求,不过经过一番对源码的"研究"(用此一词让我觉得颇有成就感)之后,基本解决了日常所需.主要记录使用过程的常见问题及解决. python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库.可从这里下载https://pyp

用python读写excel(xlrd、xlwt)

最近需要从多个excel表里面用各种方式整理一些数据,虽然说原来用过java做这类事情,但是由于最近在学python,所以当然就决定用python尝试一下了.发现python果然简洁很多.这里简单记录一下.(由于是用到什么学什么,所以不算太深入,高手勿喷,欢迎指导) 一.读excel表 读excel要用到xlrd模块,官网安装(http://pypi.python.org/pypi/xlrd).然后就可以跟着里面的例子稍微试一下就知道怎么用了.大概的流程是这样的: 1.导入模块 import x

Python 操作excel 模块

在python 中操作excel表格,读取excel 模块常使用的是 xlrd,写excel 模块使用的是xlwt #读取excel 表 import xlrd #打开excel myWorkbook = xlrd.open_workbook('example.xls') #获取sheet 页内容 mySheets = myWorkbook.sheets() #打印sheets 页 print(mySheets,type(mySheets)) 执行后结果 [<xlrd.sheet.Sheet o

Python 读Excel数据

一.读取Excel数据的步骤及方式: 1.打开Excel文件 data = xlrd.open_workbook(r'D:\Interface_test\test_data\测试用例.xlsx') 2.选取一个工作表进行读取 sheet = data.sheey_by_name('alldata') 3.整行的读取工作表中每一行的数据(sheet.row_value()返回的是列表形式) info = sheet.row_value(rownum) 该步骤中需要遍历循环Excel表中每一行数据:

python操作excel之xlrd

xlrd是专门用来在python中读取微软execel的模块,可以自己直接下载安装,也可以通过包管理器安装.组件的官网地址:http://www.python-excel.org/ 基本操作: #-*-encoding:utf-8-*-       #设置编码方式 import xlrd                    #导入xlrd模块 #打开指定文件路径的excel文件 xlsfile = r'D:\AutoPlan\apisnew.xls' book = xlrd.open_work

Python处理excel模块

0xlrd:读取excel文件数据 XlsxWriter:写excel文件 ====================安装模块 1:安装xlrd:pip install xlrd 2:安装XlsxWriter:pip install XlsxWriter

python操作Excel模块openpyxl

1. 安装 pip install openpyxl 想要在文件中插入图片文件,需要安装pillow,安装文件:PIL-fork-1.1.7.win-amd64-py2.7.exe · font(字体类):字号.字体颜色.下划线等 · fill(填充类):颜色等 · border(边框类):设置单元格边框 · alignment(位置类):对齐方式 · number_format(格式类):数据格式 · protection(保护类):写保护 2. 创建一个excel 文件,并写入不同类的内容

python读Excel

import xlrd def open_excel(fileName="TransInfo.xlsx"): try: fileHandler = xlrd.open_workbook(fileName) return fileHandler except Exception as e: print( str(e) ) def scan_excel(sheet_name1=u'Sheet1'): handler = open_excel() page = handler.sheet_b