侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

Python3 读、写Excel文件的操作方法

Python  /  管理员 发布于 7年前   230

首先,简单介绍一下EXECL中工作簿和工作表的区别:

工作簿的英文是BOOK(WORKBOOK),工作表的英文是SHEET(WORKSHEET)。

•一个工作簿就是一个独立的文件
•一个工作簿里面可以有1个或者多个工作表
•工作簿是工作表的集合

1:使用python实现对Excel文件的读写,首先需要安装专用的模块(可以自己编写)xlrd,xlwt模块

2:读取excel数据(注意事项:sheet编号,行号,列号都是从索引0开始)

import xlrd# 设置路径path = 'E:/input.xlsx'# 打开execlworkbook = xlrd.open_workbook(path)# 输出Excel文件中所有sheet的名字print(workbook.sheet_names())# 根据sheet索引或者名称获取sheet内容Data_sheet = workbook.sheets()[0] # 通过索引获取# Data_sheet = workbook.sheet_by_index(0) # 通过索引获取# Data_sheet = workbook.sheet_by_name(u'名称') # 通过名称获取print(Data_sheet.name) # 获取sheet名称rowNum = Data_sheet.nrows # sheet行数colNum = Data_sheet.ncols # sheet列数# 获取所有单元格的内容list = []for i in range(rowNum): rowlist = [] for j in range(colNum): rowlist.append(Data_sheet.cell_value(i, j)) list.append(rowlist)# 输出所有单元格的内容for i in range(rowNum): for j in range(colNum): print(list[i][j], '\t\t', end="") print()# 获取整行和整列的值(列表)rows = Data_sheet.row_values(0) # 获取第一行内容cols = Data_sheet.col_values(1) # 获取第二列内容# print (rows)# print (cols)# 获取单元格内容cell_A1 = Data_sheet.cell(0, 0).valuecell_B1 = Data_sheet.row(0)[1].value # 使用行索引cell_C1 = Data_sheet.cell(0, 2).valuecell_D2 = Data_sheet.col(3)[1].value # 使用列索引print(cell_A1, cell_B1, cell_C1, cell_D2)# 获取单元格内容的数据类型# ctype:0 empty,1 string, 2 number, 3 date, 4 boolean, 5 errorprint('cell(0,0)数据类型:', Data_sheet.cell(0, 0).ctype)print('cell(1,0)数据类型:', Data_sheet.cell(1, 0).ctype)print('cell(1,1)数据类型:', Data_sheet.cell(1, 1).ctype)print('cell(1,2)数据类型:', Data_sheet.cell(1, 2).ctype)# 获取单元格内容为日期的数据date_value = xlrd.xldate_as_tuple(Data_sheet.cell_value(1,0),workbook.datemode)print(type(date_value), date_value)print('%d:%d:%d' % (date_value[0:3]))

3:创建excel并写入数据

import xlwtdef set_style(name, height, bold=False): style = xlwt.XFStyle() # 初始化样式 font = xlwt.Font() # 为样式创建字体 font.name = name font.bold = bold font.color_index = 4 font.height = height style.font = font return styledef write_excel(path): # 创建工作簿 workbook = xlwt.Workbook(encoding='utf-8') # 创建sheet data_sheet = workbook.add_sheet('demo') row0 = [u'字段名称', u'大致时段', 'CRNTI', 'CELL-ID'] row1 = [u'测试', '15:50:33-15:52:14', 22706, 4190202] # 生成第一行和第二行 for i in range(len(row0)): data_sheet.write(0, i, row0[i], set_style('Times New Roman', 220, True)) data_sheet.write(1, i, row1[i], set_style('Times New Roman', 220, True)) # 保存文件 # workbook.save('demo.xls') workbook.save(path)if __name__ == '__main__': # 设置路径 path = 'E:/demo.xls' write_excel(path) print(u'创建demo.xls文件成功')

再看一个例子:

转载:Ryan in C++

基本的write函数接口很简单:

•新建一个excel文件:                                                 file = xlwt.Workbook() (注意这里的Workbook首字母是大写)
•新建一个sheet:                                                        table = file.add_sheet('sheet_name')
•写入数据table.write(行,列,value):                            table.write(0,0,'test')
•如果是写入中文,则要用u'汉字'的形式。比如:       table.write(0,0, u'汉字')
•合并单元格:                                                             table.write_merge(x, x + m, y, y + n, string, style)
•x表示行,y表示列,m表示跨行个数,n表示跨列个数,string表示要写入的单元格内容,style表示单元格样式

"""设置单元格样式"""import xlwtdef set_style(font_name, font_height, bold=False): style = xlwt.XFStyle() # 初始化样式 font = xlwt.Font() # 为样式创建字体 font.name = font_name # 'Times New Roman' font.bold = bold font.color_index = 4 font.height = font_height borders = xlwt.Borders() borders.left = 6 borders.right = 6 borders.top = 6 borders.bottom = 6 style.font = font style.borders = borders return style# 写exceldef write_excel(output_path): f = xlwt.Workbook() # 创建工作簿 ''' 创建第一个sheet: sheet1 ''' sheet1 = f.add_sheet(u'sheet1',cell_overwrite_ok=True) # 创建sheet row0 = [u'业务',u'状态',u'北京',u'上海',u'广州',u'深圳',u'状态小计',u'合计'] column0 = [u'机票',u'船票',u'火车票',u'汽车票',u'其它'] status = [u'预订',u'出票',u'退票',u'业务小计'] # 生成第一行 for i in range(0, len(row0)): sheet1.write(0, i, row0[i], set_style('Times New Roman', 220, True)) # 生成第一列和最后一列(合并4行) i, j = 1, 0 while i < 4*len(column0) and j < len(column0): sheet1.write_merge(i, i+3, 0, 0, column0[j], set_style('Arial', 220, True)) # 第一列 sheet1.write_merge(i, i+3, 7, 7) # 最后一列"合计" i += 4 j += 1 sheet1.write_merge(21,21,0,1,u'合计',set_style('Times New Roman',220,True)) # 生成第二列 i = 0 while i < 4*len(column0): for j in range(0,len(status)):  sheet1.write(j+i+1, 1, status[j]) i += 4 f.save(output_path)if __name__ == '__main__': write_excel('E:/demo.xls') # 保存文件.这里如果是.xlsx的话会打不开。

注意:如果对一个单元格重复操作,会引发error。所以在打开时加cell_overwrite_ok=True解决

table = file.add_sheet('sheet name',cell_overwrite_ok=True)

生成的demo.xls效果如下:

总结

以上所述是小编给大家介绍的Python3 读、写Excel文件的操作方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对站的支持!


  • 上一条:
    Python3的介绍、安装和命令行的认识(推荐)
    下一条:
    python numpy数组的索引和切片的操作方法
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 在python语言中Flask框架的学习及简单功能示例(0个评论)
    • 在Python语言中实现GUI全屏倒计时代码示例(0个评论)
    • Python + zipfile库实现zip文件解压自动化脚本示例(0个评论)
    • python爬虫BeautifulSoup快速抓取网站图片(1个评论)
    • vscode 配置 python3开发环境的方法(0个评论)
    • 近期文章
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • PHP 8.4 Alpha 1现已发布!(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2018-04
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2022-01
    • 2023-07
    • 2023-10
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客