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 测试实现方法
Dec 24 Python
Python subprocess模块学习总结
Mar 13 Python
Python实现PS滤镜特效之扇形变换效果示例
Jan 26 Python
pycharm重置设置,恢复默认设置的方法
Oct 22 Python
Python小进度条显示代码
Mar 05 Python
12个Python程序员面试必备问题与答案(小结)
Jun 24 Python
使用python的pyplot绘制函数实例
Feb 13 Python
浅谈Python中re.match()和re.search()的使用及区别
Apr 14 Python
matplotlib之多边形选区(PolygonSelector)的使用
Feb 24 Python
Python基础之进程详解
May 21 Python
浅谈Python实现opencv之图片色素的数值运算和逻辑运算
Jun 23 Python
Python pyecharts绘制条形图详解
Apr 02 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
vBulletin Forum 2.3.xx SQL Injection
2006/10/09 PHP
php实现Session存储到Redis
2015/11/11 PHP
PHP面向对象五大原则之依赖倒置原则(DIP)详解
2018/04/08 PHP
对JavaScript的eval()中使用函数的进一步讨论
2008/07/26 Javascript
CSS+Table图文混排中实现文本自适应图片宽度(超简单+跨所有浏览器)
2009/02/14 Javascript
一句话JavaScript表单验证代码
2009/08/02 Javascript
javascript在myeclipse中报错的解决方法
2013/10/29 Javascript
JavaScript代码应该放在HTML代码哪个位置比较好?
2014/10/16 Javascript
innerHTML属性,outerHTML属性,textContent属性,innerText属性区别详解
2015/03/13 Javascript
使用AngularJS制作一个简单的RSS阅读器的教程
2015/06/18 Javascript
jQuery插件cxSelect多级联动下拉菜单实例解析
2016/06/24 Javascript
AngularJS 实现弹性盒子布局的方法
2016/08/30 Javascript
JS实现仿PS的调色板效果完整实例
2016/12/21 Javascript
微信小程序五星评分效果实现代码
2017/04/06 Javascript
vue.js单页面应用实例的简单实现
2017/04/10 Javascript
基于vue的换肤功能的示例代码
2017/10/10 Javascript
vue+axios实现文件下载及vue中使用axios的实例
2018/09/21 Javascript
JavaScript设计模式之代理模式实例分析
2019/01/16 Javascript
vue element实现表格合并行数据
2020/11/30 Vue.js
python生成指定尺寸缩略图的示例
2014/05/07 Python
Python之pandas读写文件乱码的解决方法
2018/04/20 Python
python 标准差计算的实现(std)
2019/07/29 Python
python使用pip安装模块出现ReadTimeoutError: HTTPSConnectionPool的解决方法
2019/10/04 Python
python3的UnicodeDecodeError解决方法
2019/12/20 Python
浅谈Python 函数式编程
2020/06/20 Python
利用HTML5 Canvas制作一个简单的打飞机游戏
2015/05/11 HTML / CSS
深入解析HTML5使用SVG图像时的viewBox属性用法
2015/09/02 HTML / CSS
意大利在线眼镜精品店:Ottica Lipari
2019/11/11 全球购物
科室工作的个人自我评价
2013/10/30 职场文书
小学红领巾中秋节广播稿
2014/01/13 职场文书
设计专业自荐信
2014/06/19 职场文书
《学会看病》教学反思
2016/02/17 职场文书
干货:企业内部人才推荐奖励方案!
2019/07/09 职场文书
python 实现德洛内三角剖分的操作
2021/04/22 Python
python脚本框架webpy的url映射详解
2021/11/20 Python
Vue.js中v-bind指令的用法介绍
2022/03/13 Vue.js