python操作excel表格(xlrd/xlwt)

1、什么是xlrd模块?

  • python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库。

  • 今天就先来说一下xlrd模块:

安装模块

使用介绍

  • ①、常用单元格中的数据类型
    • 0 empty(空的),1 string(text), 2 number, 3 date, 4 boolean, 5 error, 6 blank(空白表格)
  • ②、导入模块
    import xlrd
  • ③、打开Excel文件读取数据
# 文件名以及路径,如果路径或者文件名有中文给前面加一个r转义原生字符。
data = xlrd.open_workbook('2017graduation_project.xls')
  • ④、常用的函数
    • Excel中最重要的方法就是booksheet的操作
  • 1)获取book中的一个工作表
table = data.sheets()[0]  # 通过索引顺序获取
# data.sheets()[0] 返回是对象
print(data.sheets()[0])  # <xlrd.sheet.Sheet object at 0x000001888CD0B3C8>
print(data.sheet_by_index(0))  # <xlrd.sheet.Sheet object at 0x000001888CD0B3C8>
# .name属性 获取表sheet名字
print(data.sheet_by_name('Sheet1').name)  # Sheet1
# 返回book中所有工作表的名字
print(data.sheet_names())  # ['Sheet1', 'Sheet2', 'Sheet3']
data.sheet_loaded(sheet_name or indx)   # 检查某个sheet是否导入完毕
  • 2)行的操作
# 获取行数
nrows = table.nrows
# 获取整行值,其中i为行号
row_values = table.row_values(i)
  • 3)列操作
# 获取列数
ncols = table.ncols
# 获取整列的值,其中j是列号
col_values = table.col_values(j)
  • 3)获取指定单元格的数据
# i行号,j列号,若出现编码问题,编码成utf-8
value = table.cell(i, j).value
# eg: 获取第一行、第一列数据(行、列数从0开始计数)
value = table.cell(0, 0).value
  • 4)循环遍历列表数据
# 先获取行数
nrows = table.nrows
# 遍历所有行数据
for row in range(nrows):
	print(table.row_values(row))

同样也可以遍历列内所有数据,一般不用这种方式读取数据

  • 5)获取单元格内容为日期类型的数据
    • 使用xlrdxlrdate_as_tuple处理为date格式,先判断表格的ctype=3xlrd才能执行操作
>>> from datetime import datetime,date
>>> table.cell(1,5).ctype
3
>>> table.cell(1,5).value
42129.0
>>> xlrd.xldate_as_tuple(sheet1.cell_value(1,5),workbook.datemode)
(2015, 5, 5, 0, 0, 0)
>>> date_value = xlrd.xldate_as_tuple(table.cell_value(1,5),workbook.datemode)
>>> date(*date_value[:3])
datetime.date(2015, 5, 5)
>>> date(*date_value[:3]).strftime('%Y/%m/%d')
'2015/05/05'
  • 那么如果是在脚本中需要获取并显示单元格内容为日期类型的,可以先做一个判断。判断ctype是否等于3,如果等于3,则用时间格式处理:
if (table.cell(row,col).ctype == 3):
  date_value = xlrd.xldate_as_tuple(table.cell_value(row,col),book.datemode)
  date_tmp = date(*date_value[:3]).strftime('%Y/%m/%d')
  • 6)获取合并单元格数据
# 获取第16行到19行合并,第2列 的数据
table.cell(15, 1).value
# 获取第20行,第2列到5列合并的数据
table.cell(19, 1)

2、xlwt写入Excel

import xlwt

def set_style(name, height, bold=False):
    style = xlwt.XFStyle()  # 初始化样式

    font = xlwt.Font()  # 为样式创建字体
    font.name = name  # 'Times New Roman'
    font.bold = bold  # 加粗
    font.color_index = 4
    font.height = height

    style.font = font

    return style

f = xlwt.Workbook() #创建工作簿
sheet1 = f.add_sheet(u'sheet2', cell_overwrite_ok=True)  # 创建sheet1
row0 = [u'姓名', u'年龄', u'出生日期', u'特长', u'其他']
column0 = [u'python', u'Java', u'c#', u'c++', u'JS', u'Go', u'VB']

# 生成第一行
for i in range(0, len(row0)):
    sheet1.write(0, i, row0[i], set_style('Times New Roman', 220, True))

# 生成第一列
for i in range(0, len(column0)):
    sheet1.write(i + 1, 0, column0[i], set_style('Times New Roman', 220))

sheet1.write(1, 2, '2018/10/10')
# 合并列单元格 合并第6行的第2列到第6列
sheet1.write_merge(5, 5, 1, 5, u'hello python')
# 合并列单元格 合并 第5列中第2行到第4行
sheet1.write_merge(1, 3, 4, 4, u'hello world')  # 合并行单元格

f.save('test.xls')  # 保存文件

在这里插入图片描述
xlwt模块保存的xlsx格式的Excel无法正常打开,只能保存xls格式如需要保存xlsx格式的Excel需要用到xlsxwriter或者openpyxl这两个模块或者pandas模块,后续文章会写到这几个模块的应用

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值