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实现类的静态变量用法实例
May 08 Python
Python文件右键找不到IDLE打开项解决办法
Jun 08 Python
python 简单的多线程链接实现代码
Aug 28 Python
django开发之settings.py中变量的全局引用详解
Mar 29 Python
Python3.5集合及其常见运算实例详解
May 01 Python
python 实现将Numpy数组保存为图像
Jan 09 Python
python GUI库图形界面开发之PyQt5表格控件QTableView详细使用方法与实例
Mar 01 Python
使用Django搭建网站实现商品分页功能
May 22 Python
python安装后的目录在哪里
Jun 21 Python
matplotlib部件之套索Lasso的使用
Feb 24 Python
python3+PyQt5+Qt Designer实现界面可视化
Jun 10 Python
Python实现老照片修复之上色小技巧
Oct 16 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
PHILIPS D1835/D1875的电路分析与打理
2021/03/02 无线电
PHP Pear 安装及使用
2009/03/19 PHP
phpMyAdmin 安装及问题总结
2009/05/28 PHP
windows7下php开发环境搭建图文教程
2015/01/06 PHP
PHP magento后台无法登录问题解决方法
2016/11/24 PHP
php使用fullcalendar日历插件详解
2019/03/06 PHP
javascript 获取表单file全路径
2009/12/31 Javascript
JS关键字球状旋转效果的实例代码
2013/11/29 Javascript
js关于字符长度限制的问题示例探讨
2014/01/24 Javascript
js与jquery回车提交的方法
2015/02/03 Javascript
JS实现跟随鼠标闪烁转动色块的方法
2015/02/26 Javascript
jQuery获得包含margin的outerWidth和outerHeight的方法
2015/03/25 Javascript
jquery实现在网页指定区域显示自定义右键菜单效果
2015/08/25 Javascript
浅析JS中对函数function的理解(基础篇)
2016/10/14 Javascript
面试常见的js算法题
2017/03/23 Javascript
深入理解Vue 单向数据流的原理
2017/11/09 Javascript
详解Vue如何支持JSX语法
2017/11/10 Javascript
Vue项目中跨域问题解决方案
2018/06/05 Javascript
JavaScript设计模式之代理模式简单实例教程
2018/07/03 Javascript
KnockoutJS数组比较算法实例详解
2019/11/25 Javascript
利用webpack理解CommonJS和ES Modules的差异区别
2020/06/16 Javascript
[00:32]2018DOTA2亚洲邀请赛VG出场
2018/04/03 DOTA
浅谈python jieba分词模块的基本用法
2017/11/09 Python
Python将多份excel表格整理成一份表格
2018/01/03 Python
如何优雅地改进Django中的模板碎片缓存详解
2018/07/04 Python
设置python3为默认python的方法
2018/10/31 Python
使用Python正则表达式操作文本数据的方法
2019/05/14 Python
Python爬取豆瓣视频信息代码实例
2019/11/16 Python
Python编译为二进制so可执行文件实例
2019/12/23 Python
Python 自由定制表格的实现示例
2020/03/20 Python
Python sqlalchemy时间戳及密码管理实现代码详解
2020/08/01 Python
PyQt5中QSpinBox计数器的实现
2021/01/18 Python
玩具反斗城美国官网:Toys"R"Us
2016/09/17 全球购物
乌克兰网上珠宝商店:GoldSoveren
2020/03/31 全球购物
先进事迹报告会主持词
2014/04/02 职场文书
党员四风自我剖析材料
2014/10/07 职场文书