Python3读写Excel文件(使用xlrd,xlsxwriter,openpyxl3种方式读写实例与优劣)


Posted in Python onFebruary 13, 2020

Python中几种常用包比较

Python3读写Excel文件(使用xlrd,xlsxwriter,openpyxl3种方式读写实例与优劣)

2、用xlrd包读取Excel文件

引用包

import xlrd

打开文件

xlrd.open_workbook(r'/root/excel/chat.xls')

获取你要打开的sheet文件

# 获取所有sheet
sheet_name = workbook.sheet_names()[0]
# 根据sheet索引或者名称获取sheet内容
sheet = workbook.sheet_by_index(0) # sheet索引从0开始

获取指定单元格里面的值

sheet.cell_value(第几行,第几列)

获取某行或者某列的值

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

获取sheet的名称,行数,列数

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

源码示例

import xlrd
from datetime import date,datetime
arrayNum = 6
#array = {'L1':'','L2':'','L3':'','L4':'','Question':'','Answer':''}
tables = []
newTables = []
def read_excel():
 # 打开文件
 workbook = xlrd.open_workbook(r'/root/chat.xls')
 # 获取所有sheet
 sheet_name = workbook.sheet_names()[0]
 # 根据sheet索引或者名称获取sheet内容
 sheet = workbook.sheet_by_index(0) # sheet索引从0开始
 # sheet = workbook.sheet_by_name('Sheet1')
 #print (workboot.sheets()[0])
 # sheet的名称,行数,列数
 print (sheet.name,sheet.nrows,sheet.ncols)
 # 获取整行和整列的值(数组)
 rows = sheet.row_values(1) # 获取第2行内容
 # cols = sheet.col_values(2) # 获取第3列内容
 print (rows)
 # print (cols)
 for rown in range(sheet.nrows):
  array = {'L1':'','L2':'','L3':'','L4':'','Question':'','Answer':''}
  array['L1'] = sheet.cell_value(rown,0)
  array['L2'] = sheet.cell_value(rown,1)
  array['L3'] = sheet.cell_value(rown,2)
  array['L4'] = sheet.cell_value(rown,3)
  array['Question'] = sheet.cell_value(rown,4)
  array['Answer'] = sheet.cell_value(rown,5)
  tables.append(array)
 print (len(tables))
 #print (tables)
 #print (tables[5])
if __name__ == '__main__':
 # 读取Excel
 read_excel();
 print ('读取成功')

3、尽量不用xlwt包写入Excel文件

原因

在xlwt中生成的xls文件最多能支持65536行数据。如果写入过多,会报错

由于数据太多,会报这个错误:

ValueError: row index (65536)not an intin range(65536)错误

源码示例

# 1. 导入模块
import xlwt
def write_excel():
# 2. 创建Excel工作薄
myWorkbook = xlwt.Workbook()
# 3. 添加Excel工作表
mySheet = myWorkbook.add_sheet('A Test Sheet')
# 4. 写入数据
myStyle = xlwt.easyxf('font: name Times New Roman, color-index red, bold on', num_format_str='#,##0.00') #数据格式
mySheet.write(i, j, 1234.56, myStyle)
mySheet.write(2, 0, 1)       #写入A3,数值等于1
mySheet.write(2, 1, 1)       #写入B3,数值等于1
mySheet.write(2, 2, xlwt.Formula("A3+B3"))  #写入C3,数值等于2(A3+B3)
#5. 保存
myWorkbook.save('excelFile.xls')
if __name__ == '__main__':
 # 写入Excel
 write_excel();
 print ('写入成功')

4、用openpyxl包写入Excel文件

引用包

import openpyxl

创建工作簿

f = openpyxl.Workbook() #创建工作簿

创建sheet

sheet1 = f.create_sheet()

设置每个单元格里面的值

for jkey in range(len(newTables)):
 jk = 1
 for cT in range(arrayNum):
  jk = jkey + 1
  if cT == 0:
  sheet1.cell(row=jk,column=cT+1).value='1'
  else:
  sheet1.cell(row=jk,column=cT+1).value='2'

保存文件

f.save("chatPy.xlsx") #保存文件

源码示例

import openpyxl
#写excel
def write_excel():
 f = openpyxl.Workbook() #创建工作簿
 sheet1 = f.create_sheet()
 #sheet1 = f.add_sheet(u'sheet1',cell_overwrite_ok=True) #创建sheet
 row0 = [u'L1',u'L2',u'L3',u'L4',u'问题',u'答案']
 #生成第一行
 #for i in range(len(row0)):
 # sheet1.cell(column=i,row=0).value='L1')
 #生成后续
 for jkey in range(len(newTables)): 
  jk = 1
  for cT in range(arrayNum):
   jk = jkey + 1
   if cT == 0:
   sheet1.cell(row=jk,column=cT+1).value='1'
   else:
   sheet1.cell(row=jk,column=cT+1).value='2'
   
 f.save("chatPy.xlsx") #保存文件
if __name__ == '__main__':
 # 写入Excel
 write_excel();
 print ('写入成功')

5、用xlsxwriter包写入Excel文件

简介

由于xlwt最大只支持65536行数据于是我找到了xlsxwriter这个模块,它生成的文件后缀名为.xlsx,最大能够支持1048576行数据,16384列数据

引用包

import xlsxwriter

创建工作簿

workbook = xlsxwriter.Workbook('demo1.xlsx')#创建一个excel文件

创建sheet

worksheet = workbook.add_worksheet(u'sheet1')#在文件中创建一个名为TEST的sheet,不加名字默认为sheet1

设置每个单元格里面的值

worksheet.write(3,0,35.5)#第4行的第1列设置值为35.5

关闭工作簿

workbook.close()

源码示例

import xlsxwriter
#写excel
def write_excel(): 
 workbook = xlsxwriter.Workbook('chat.xlsx')#创建一个excel文件
 worksheet = workbook.add_worksheet(u'sheet1')#在文件中创建一个名为TEST的sheet,不加名字默认为sheet1
 
 worksheet.set_column('A:A',20)#设置第一列宽度为20像素
 bold= workbook.add_format({'bold':True})#设置一个加粗的格式对象
 
 worksheet.write('A1','HELLO')#在A1单元格写上HELLO
 worksheet.write('A2','WORLD',bold)#在A2上写上WORLD,并且设置为加粗
 worksheet.write('B2',U'中文测试',bold)#在B2上写上中文加粗
 
 worksheet.write(2,0,32)#使用行列的方式写上数字32,35,5
 worksheet.write(3,0,35.5)#使用行列的时候第一行起始为0,所以2,0代表着第三行的第一列,等价于A4
 worksheet.write(4,0,'=SUM(A3:A4)')#写上excel公式
 workbook.close()
if __name__ == '__main__':
 # 写入Excel
 write_excel();
 print ('写入成功')

更多关于Python3读写Excel文件方法请查看下面的相关链接

Python 相关文章推荐
Python的内存泄漏及gc模块的使用分析
Jul 16 Python
python单例模式实例分析
Apr 08 Python
Python实现的多线程同步与互斥锁功能示例
Nov 30 Python
python中判断文件编码的chardet(实例讲解)
Dec 21 Python
Python cookbook(数据结构与算法)实现优先级队列的方法示例
Feb 18 Python
Python实现网站表单提交和模板
Jan 15 Python
安装PyInstaller失败问题解决
Dec 14 Python
Python使用进程Process模块管理资源
Mar 05 Python
10款最佳Python开发工具推荐,每一款都是神器
Oct 15 Python
详解BeautifulSoup获取特定标签下内容的方法
Dec 07 Python
Pyecharts 中Geo函数常用参数的用法说明
Feb 01 Python
如何用 Python 制作 GitHub 消息助手
Feb 20 Python
python输出pdf文档的实例
Feb 13 #Python
python打印文件的前几行或最后几行教程
Feb 13 #Python
Python创建空列表的字典2种方法详解
Feb 13 #Python
python-docx文件定位读取过程(尝试替换)
Feb 13 #Python
Python 实现向word(docx)中输出
Feb 13 #Python
Python如何把多个PDF文件合并代码实例
Feb 13 #Python
python读取csv文件指定行的2种方法详解
Feb 13 #Python
You might like
php 删除记录同时删除图片文件的实现代码
2010/05/12 PHP
PHP数据集构建JSON格式及新数组的方法
2012/11/07 PHP
php上传apk后自动提取apk包信息的使用(示例下载)
2013/04/26 PHP
PHP实现的下载远程图片自定义函数分享
2015/01/28 PHP
javascript 常用代码技巧大收集
2009/02/25 Javascript
原创javascript小游戏实现代码
2010/08/19 Javascript
jquery利用event.which方法获取键盘输入值的代码
2011/10/09 Javascript
JS在TextArea光标位置插入文字并实现移动光标到文字末尾
2013/06/21 Javascript
jsonp原理及使用
2013/10/28 Javascript
javascript函数作用域学习示例(js作用域)
2014/01/13 Javascript
JQUERY 设置SELECT选中项代码
2014/02/07 Javascript
Jquery ajax基础教程
2015/11/20 Javascript
JS+Canvas 实现下雨下雪效果
2016/05/18 Javascript
jQuery解析与处理服务器端返回xml格式数据的方法详解
2016/07/04 Javascript
动态JavaScript所造成一些你不知道的危害
2016/09/25 Javascript
JS与jQuery实现子窗口获取父窗口元素值的方法
2017/04/17 jQuery
JavaScript基础之流程控制语句的用法
2017/08/31 Javascript
使用Node搭建reactSSR服务端渲染架构
2018/08/30 Javascript
简单了解JavaScript中常见的反模式
2019/06/21 Javascript
Vue实现购物车基本功能
2020/11/08 Javascript
python解决字典中的值是列表问题的方法
2013/03/04 Python
举例讲解Python面相对象编程中对象的属性与类的方法
2016/01/19 Python
Python向日志输出中添加上下文信息
2017/05/24 Python
Python实现导出数据生成excel报表的方法示例
2017/07/12 Python
python 动态生成变量名以及动态获取变量的变量名方法
2019/01/20 Python
python使用pymongo操作mongo的完整步骤
2019/04/13 Python
浅谈Pycharm最有必要改的几个默认设置项
2020/02/14 Python
Pytorch对Himmelblau函数的优化详解
2020/02/29 Python
加拿大时尚少女服装品牌:Garage
2016/10/10 全球购物
介绍一下EJB的分类及其各自的功能及应用
2016/08/23 面试题
博士学位自我鉴定范文
2013/12/26 职场文书
教师职业道德事迹材料
2014/08/18 职场文书
工伤事故处理协议书怎么写
2014/10/15 职场文书
2016大学自主招生推荐信范文
2015/03/23 职场文书
英语专业毕业论文答辩开场白
2015/05/27 职场文书
观看安全警示教育片心得体会
2016/01/15 职场文书