特色简介

xlrd主要用来读excel,针对.xls格式;

xlwt主要用来写excel,针对.xls格式,超出excel 的单格内容长度上限32767,就会报错;

xlutils结合xlrd可以达到修改excel文件目的,需要注意的是你必须同时安装这三个库;

openpyxl读写.xlsx格式的excel,无长度限制;

xlsxwriter可以写excel文件并加上图表,缺点是不能打开/修改已有文件,意味着使用 xlsxwriter 需要从零开始。

xlrd

import xlrd
#打开excel
data = xlrd.open_workbook('demo.xls') #注意这里的workbook首字母是小写
#查看文件中包含sheet的名称
data.sheet_names()
#得到第一个工作表,或者通过索引顺序 或 工作表名称
table = data.sheets()[0]
table = data.sheet_by_index(0)
table = data.sheet_by_name(u'Sheet1')
#获取行数和列数
nrows = table.nrows
ncols = table.ncols
#获取整行和整列的值(数组)
table.row_values(i)
table.col_values(i)
#循环行,得到索引的列表
for rownum in range(table.nrows):
print table.row_values(rownum)
#单元格
cell_A1 = table.cell(0,0).value
cell_C4 = table.cell(2,3).value
#分别使用行列索引
cell_A1 = table.row(0)[0].value
cell_A2 = table.col(1)[0].value

xlwt

import xlwt

#新建一个excel文件
file = xlwt.Workbook() #注意这里的Workbook首字母是大写 #新建一个sheet
table = file.add_sheet('sheet name') #写入数据table.write(行,列,value)
table.write(0,0,'test')
‘‘‘
如果对一个单元格重复操作,会引发
returns error:
Exception: Attempt to overwrite cell:
sheetname=u'sheet 1' rowx=0 colx=0
所以在打开时加cell_overwrite_ok=True解决
’’’
table = file.add_sheet('sheet name',cell_overwrite_ok=True) #保存文件
file.save('demo.xls')
#另外,使用style
style = xlwt.XFStyle() #初始化样式 font = xlwt.Font() #为样式创建字体
font.name = 'Times New Roman'
font.bold = True
style.font = font #为样式设置字体
table.write(0, 0, 'some bold Times text', style) # 使用样式

 

openpyxl

from openpyxl import Workbook
wb = Workbook() #取得当前有效的work sheet
ws = wb.active #直接根据位置进行赋值
ws['A1'] = 42 #也可以直接添加一行
ws.append([1, 2, 3]) #可以直接存储Python的时间类型变量
import datetime
ws['A2'] = datetime.datetime.now() #保存文件
wb.save("sample.xlsx")

https://www.missshi.cn/api/view/blog/5a001868e519f50d04000350

http://blog.51cto.com/daimalaobing/2089686

 

实例一

from openpyxl import load_workbook
class OperationExcel:
def __init__(self, file_name=None, sheet_id=None):
if file_name:
self.file_name = file_name
self.sheet_id = sheet_id
else:
self.xls = '../case/case.xlsx'
self.file_name = self.xls
self.sheet_id = 0
self.data = self.get_data() #获取sheets的内容
def get_data(self):
data = load_workbook(self.file_name)
sheetnames = data.get_sheet_names() #获取表单名字
tables = data.get_sheet_by_name(sheetnames[self.sheet_id]) #打开下标为x的表单
return tables #获取单元格的行数
def get_lines(self):
tables = self.data
return tables.max_row #获取某一个单元格的内容
def get_cell_value(self, row, col):
return self.data.cell(row=row, column=col).value #写入数据
def write_value(self, row, col, value):
data = load_workbook(self.file_name)
sheetnames = data.get_sheet_names() #获取表单名字
tables = data.get_sheet_by_name(sheetnames[self.sheet_id]) #打开下标为0的表单
tables.cell(row=row, column=col,value=value)
data.save(self.file_name) #根据对应的caseid 找到对应行的内容
def get_rows_data(self, case_id):
row_num = self.get_row_num(case_id)
rows_data = self.get_row_values(row_num)
return rows_data #根据对应的caseid找到对应的行号
def get_row_num(self, case_id):
num = 1
clols_data = self.get_cols_data()
for col_data in clols_data:
if case_id in col_data:
return num
num = num+1 #根据行号,找到该行的内容
def get_row_values(self, row):
tables = self.data
row_data = []
for cell in list(tables.rows)[row]:
row_data.append(cell.value)
return row_data #获取某一列的内容
def get_cols_data(self, col_id=None):
tables = self.data
col_data = []
if col_id != None:
for cell in list(tables.columns)[col_id]:
col_data.append(cell.value)
else:
for cell in list(tables.columns)[0]:
col_data.append(cell.value)
return col_data if __name__ == '__main__':
opers = OperationExcel()
opers.write_value(1, 3, 'nihaolllllll')
print(opers.get_cell_value(2,4))#单元格从1开始,非从0开始
print(opers.get_cols_data(1))
print(opers.get_row_values(1))
print(opers.get_data())
print(opers.get_lines())
print(opers.get_rows_data(''))

实例二

import xlrd,xlwt
import openpyxl def write03(path):
wb = xlwt.Workbook()
sheet = wb.add_sheet("2003测试表")
value = [["名称", "价格", "出版社", "语言"],
["如何高效读懂一本书", "22.3", "机械工业出版社", "中文"],
["暗时间", "32.4", "人民邮电出版社", "中文"],
["拆掉思维里的墙", "26.7", "机械工业出版社", "中文"]]
for i in range(0,4):
for j in range(0,len(value[i])):
sheet.write(i,j,value[i][j])
wb.save(path)
print("2003写入数据成功!") def read03(path):
workbook = xlrd.open_workbook(path)
sheets = workbook.sheet_names()
worksheet = workbook.sheet_by_name(sheets[0])
for i in range(0, worksheet.nrows):
row = worksheet.row(i)
for j in range(0, worksheet.ncols):
print(worksheet.cell_value(i,j),"\t",end="")
print() def write07(path):
wb = openpyxl.Workbook()
sheet = wb.active
sheet.title = '2007测试表'
value = [["名称", "价格", "出版社", "语言"],
["如何高效读懂一本书", "22.3", "机械工业出版社", "中文"],
["暗时间", "32.4", "人民邮电出版社", "中文"],
["拆掉思维里的墙", "26.7", "机械工业出版社", "中文"]]
for i in range(0,4):
for j in range(0,len(value[i])):
sheet.cell(row=i+1, column=j+1, value=str(value[i][j]))
wb.save(path)
print("2007写入数据成功!") def read07(path):
wb = openpyxl.load_workbook(path)
sheet = wb.get_sheet_by_name('2007测试表')
for row in sheet.rows:
for cell in row:
print(cell.value,"\t",end="")
print() file_2003 = '../data/2003.xls'
file_2007 = '../data/2007.xlsx' write03(file_2003)
read03(file_2003)
write07(file_2007)
read07(file_2007)

  

python3使用xlrd、xlwt、xlutils、openpyxl、xlsxwriter操作excel的更多相关文章

  1. Python常用的数据文件存储的4种格式(txt/json/csv/excel)及操作Excel相关的第三方库(xlrd/xlwt/pandas/openpyxl)(2021最新版)

    序言:保存数据的方式各种各样,最简单的方式是直接保存为文本文件,如TXT.JSON.CSV等,除此之外Excel也是现在比较流行的存储格式,通过这篇文章你也将掌握通过一些第三方库(xlrd/xlwt/ ...

  2. Python操作Excel——win32com模块和xlrd+xlwt+xlutils组合

    今天,接到一个任务,要生成大约两百个excel文件,从2006年到2013年,每个月两个文件,这些文件中除了几个关于日期的单元格不同外,其他数据都相同,所以就想到可以用python写一个小脚本,自动生 ...

  3. Python -- xlrd,xlwt,xlutils 读写同一个Excel

    最近开始学习python,想做做简单的自动化测试,需要读写excel,然后就找到了xlrd来读取Excel文件,使用xlwt来生成Excel文件(可以控制Excel中单元格的格式),需要注意的是,用x ...

  4. 转 Python - openpyxl 读写操作Excel

    Python - openpyxl 读写操作Excel   openpyxl特点   openpyxl(可读写excel表)专门处理Excel2007及以上版本产生的xlsx文件,xls和xlsx之间 ...

  5. 【python】操作excel——xlrd xlwt xlutils

    from xlutils.copy import copy import xlrd # import xlutils #打开已存在的excel rb=xlrd.open_workbook('D:\\1 ...

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

    简介 xlrd,xlwt和xlutils是用Python处理Excel文档(*.xls)的高效率工具.其中,xlrd只能读取xls,xlwt只能新建xls(不可以修改),xlutils能将xlrd.B ...

  7. openpyxl python操作Excel表格,

    这里openpyxl只支持xlsx格式的Excel,openpyxl使用起来会更方便一些,所以如果只操作小流水线文件的话,那么可以优先选择openpyxl,如果要兼容xls的话,就使用xlrd/xlw ...

  8. Python - openpyxl 读写操作Excel

    openpyxl特点   openpyxl(可读写excel表)专门处理Excel2007及以上版本产生的xlsx文件,xls和xlsx之间转换容易 注意:如果文字编码是“gb2312” 读取后就会显 ...

  9. 自动化办公:xlsxwriter操作Excel

    转载原链接:https://www.jianshu.com/p/d685cfaaeef7 1.安装 pip install xlsxwriter 2.操作一个简单的Excel文档 # 引入依赖模块 i ...

随机推荐

  1. RT-thread内核之信号量

    一.信号量控制块:在include/rtdef.h中 #ifdef RT_USING_SEMAPHORE /** * Semaphore structure */ struct rt_semaphor ...

  2. (转)Ubuntu 12.04 LTS安装VMware Tools实现linux和window 互相复制:无法找到kernel header path的问题

    Ubuntu 12.04 LTS安装VMware Tools无法找到kernel header path的问题   ubuntuvmware Ubuntu 12.04 安装 VMware Tools, ...

  3. 【转】c# 类反射简单操作

    转:http://www.jb51.net/article/25863.htm 首先建立一个测试的类  复制代码代码如下: public class MyClass { public int one ...

  4. [洛谷P4168][Violet]蒲公英

    题目大意:有$n(n\leqslant4\times10^4)$个数,$m(m\leqslant5\times10^4)$个询问,每次问区间$[l,r]$内的众数,若相同输出最小的,强制在线. 题解: ...

  5. BZOJ2038:[2009国家集训队]小Z的袜子——题解

    http://www.lydsy.com/JudgeOnline/problem.php?id=2038 Description 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找 ...

  6. Static全局变量与普通的全局变量有什么区别?static函数与普通函数有什么区别?

    Static全局变量与普通的全局变量有什么区别? 答: 全局变量(外部变量)的说明之前再冠以static就构成了静态的全局变量.全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式. 这两者 ...

  7. IE下textarea去除回车换行符

    在textarea中回车,会产生转义字符\r\n,有些时候我们不需要这两个转移字符,也就是清空textarea.下面的方法并不是清空,但是能够起到差不多的效果. 如果在textarea中按回车,内容提 ...

  8. 一篇博文将JavaScript尽收眼底

    简介 这篇文章是为专业程序员介绍的JavaScript语言的,它是一种小巧的语言,如果你熟悉其他的编程语言,那么这篇文章对你来讲不是那么难以理解. JavaScript不是Java,他们是两门完全不同 ...

  9. printf函数用法小记

    By francis_hao    Aug 26,2017   C语言中printf函数是一个比较常用的函数,但是常用并不代表完全了解,本文翻译了printf的man手册,介绍了其全部功能(不包括ma ...

  10. 洛谷:P3809 【模板】后缀排序(后缀数组模板)

    P3809 [模板]后缀排序 题目链接:https://www.luogu.org/problemnew/show/P3809 题目背景 这是一道模板题. 题目描述 读入一个长度为 nn 的由大小写英 ...