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用fork来创建子进程注意事项
Jul 03 Python
Python中if __name__ == "__main__"详细解释
Oct 21 Python
python实现字符串和日期相互转换的方法
May 13 Python
pymongo实现多结果进行多列排序的方法
May 16 Python
Python常用的文件及文件路径、目录操作方法汇总介绍
May 21 Python
详解如何在python中读写和存储matlab的数据文件(*.mat)
Feb 24 Python
Python实现的求解最小公倍数算法示例
May 03 Python
Python3 使用cookiejar管理cookie的方法
Dec 28 Python
详解python中的线程与线程池
May 10 Python
Python发展简史 Python来历
May 14 Python
关于django 1.10 CSRF验证失败的解决方法
Aug 31 Python
pytorch中的inference使用实例
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
Terran历史背景
2020/03/14 星际争霸
php中的数组操作函数整理
2008/08/18 PHP
php checkbox 取值详细说明
2010/08/19 PHP
无法载入 mcrypt 扩展,请检查 PHP 配置终极解决方案
2011/07/18 PHP
CodeIgniter表单验证方法实例详解
2016/03/03 PHP
php mysql_list_dbs()函数用法示例
2017/03/29 PHP
DOM 脚本编程中的兄弟节点
2009/10/31 Javascript
用队列模拟jquery的动画算法实例
2015/01/20 Javascript
JS组件Bootstrap Table表格多行拖拽效果实现代码
2015/12/08 Javascript
Highcharts学习之坐标轴
2016/08/02 Javascript
基于百度地图实现产品销售的单位位置查看功能设计与实现
2016/10/21 Javascript
将json转换成struts参数的方法
2016/11/08 Javascript
AngularJS对动态增加的DOM实现ng-keyup事件示例
2018/03/12 Javascript
微信小程序实现之手势锁功能实例代码
2018/07/19 Javascript
小程序实现授权登陆的解决方案
2018/12/02 Javascript
bootstrap table列和表头对不齐的解决方法
2019/07/19 Javascript
js实现数字从零慢慢增加到指定数字示例
2019/11/07 Javascript
Python多线程爬虫简单示例
2016/03/04 Python
python之文件读取一行一行的方法
2018/07/12 Python
不到20行代码用Python做一个智能聊天机器人
2019/04/19 Python
Python计算一个点到所有点的欧式距离实现方法
2019/07/04 Python
wxPython实现带颜色的进度条
2019/11/19 Python
使用pytorch搭建AlexNet操作(微调预训练模型及手动搭建)
2020/01/18 Python
Python 合并拼接字符串的方法
2020/07/28 Python
微信小程序“圣诞帽”的实现思路详解
2017/12/28 HTML / CSS
匡威比利时官网:Converse Belgium
2017/04/13 全球购物
Europcar澳大利亚官网:全球汽车租赁领域的领导者
2019/03/24 全球购物
迪卡侬中国官网:Decathlon中国
2020/08/10 全球购物
《中国的气候》教学反思
2014/02/23 职场文书
机电专业大学生职业规划书范文
2014/02/25 职场文书
实习评语大全
2014/04/26 职场文书
服务行业演讲稿
2014/09/02 职场文书
餐厅收银员岗位职责
2015/04/07 职场文书
筑梦中国心得体会
2016/01/18 职场文书
想创业成功,需要掌握这些要点
2019/12/06 职场文书
python 利用PyAutoGUI快速构建自动化操作脚本
2021/05/31 Python