广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python使用openpyxl读写excel文件
  • 406
分享到

Python使用openpyxl读写excel文件

python 2023-09-11 07:09:55 406人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

需求:读入sample.xlsx中的信息,通过分析其中的身份证号信息,得到每个人的出生日期,性别,年龄,所在省份,星座,属相等等,将结果写入到另一个excel文件中。 首先,要使用openpyxl第三方库需要安装,安装方法如下: pip i

需求:读入sample.xlsx中的信息,通过分析其中的身份证号信息,得到每个人的出生日期,性别,年龄,所在省份,星座,属相等等,将结果写入到另一个excel文件中。

首先,要使用openpyxl第三方库需要安装,安装方法如下:

pip install openpyxl

程序一开头为了能使用第三方库,需要先导入

from openpyxl import Workbook,load_workbookfrom openpyxl.styles import Border,Alignmentfrom datetime import datetime

读入excel文件,然后读入指定工作表

 wb1 = load_workbook("sample.xlsx") ws1 = wb1["Sheet1"]

创建第二个excel工作簿文件,并设定工作表的名字,然后设置列宽,为了能够正常显示全部身份证号和出生日期

#创建工作簿和工作表wb2 = Workbook()sheet_active = wb2.activesheet_active.title = 'info_sheet'ws2 = wb2['info_sheet']ws2.column_dimensions['B'].width = 20       #设置列宽ws2.column_dimensions['D'].width = 12

定义一个函数writeline写一行数据到ws工作表

def writeLine(ws,row_index,DataList):    for index,item in enumerate(DataList):        cell = ws.cell(row_index, index+1, item)        cell.border = border        cell.alignment = alignment    row_index += 1    return row_index

下面就是写工作表数据,首先写标题行,然后从第一个表中读取第2到末尾行,第2到末尾列中所有单元格的值,转为列表作为原始数据。iter_rows()函数的参数含义如下:

因此为什么是第2行开始呢,因为第1行是标题行啊,为什么从第2列开始呢,因为原始excel文件的格式是这样子的:

原始数据data中每一行的数据结构此时是一个元组tuple,为了后面添加数据方便,首先用list()将其转为列表,然后调用函数get_info(),得到想要的其他数据后添加到列表后面,构成一行新的数据,用writeline()函数将数据写入到新的excel文件中。

#写标题行title = ['姓名','身份证号','关系','出生日期','性别','年龄','所在地']rows = writeLine(ws2, 1, title)#写数据行row_index = 2data = list(ws1.iter_rows(min_row=2,min_col=2,values_only=True))for row in data:     pInfo = list(row)     pInfo += list(get_info(row[1]))     row_index = writeLine(ws2, row_index, pInfo)

其中get_info()函数就是得到出生日期,性别,年龄和所在省份等等信息。

出生日期先用身份证号的6到13位构造年月日字符串,比如身份证号'301213200010110080'中的[6:14]表示取从索引为6的字符(起点包括)取到索引为14(终点不包括),即取出'20001011',中间添加上'-',构成'2000-10-11‘,然后利用datatime库的datetime类的格式化时间函数strptime将这个字符串转换为一个日期时间值,为了只取日期值,后面再加上.date()方法。

性别gender则是按照身份证号的倒数第二位是奇数还是偶数分别判定是'男' 还是'女'.

年龄age是由当前的年份减去身份证号里的出生年得到。

所在省份site是根据身份证号的前2位,到省份字典pDict中查找键所对应的值得到,这里使用了字典的get()函数,get()函数如果能找到键,则返回键对应的值,如果找不到这个键,则返回默认值即为空字符串。

#定义get_info()函数,根据身份证号计算出生日期,性别,年龄等信息def get_info(IdNumber):    #创建省份字典,后面用身份证号的前2位到字典里查找得到所在地,属相、星座可用类似方法    pDict = {'11':'北京','12':'天津','13':'河北','14':'山西','15':'内蒙古','21':'辽宁',\             '22':'吉林','23':'黑龙江','31':'上海','32':'江苏','33':'浙江','34':'安徽',\             '35':'福建','36':'江西','37':'山东','41':'河南','42':'湖北','43':'湖南',\             '44':'广东','45':'广西','46':'海南','50':'重庆','51':'四川','52':'贵州',\             '53':'云南','54':'西藏','61':'陕西','62':'甘肃','63':'青海','64':'宁夏',\             '65':'新疆','71':'台湾','81':'香港','82':'澳门'}    birthStr = IdNumber[6:10] + '-' + IdNumber[10:12] + '-' + IdNumber[12:14]    birth = datetime.strptime(birthStr, "%Y-%m-%d").date()    gender = '女' if eval(IdNumber[-2])%2==0 else '男'    age = datetime.now().year-eval(IdNumber[6:10])    site = pDict.get(IdNumber[:2],'')    return birth,gender,age,site

完整代码如下:

#getInfo.pyfrom openpyxl import Workbook,load_workbookfrom openpyxl.styles import Border,Alignmentfrom datetime import datetime#设置全局样式border = Border(bottom=Side(style='thin', color='000000'),                right=Side(style='thin', color='000000'),                left=Side(style='thin', color='000000'),                top=Side(style='thin', color='000000'))alignment = Alignment(horizontal='center', vertical='center')#定义get_info()函数,根据身份证号计算出生日期,性别,年龄等信息def get_info(IdNumber):    #创建省份字典,后面用身份证号的前2位到字典里查找得到所在地,属相、星座可用类似方法    pDict = {'11':'北京','12':'天津','13':'河北','14':'山西','15':'内蒙古','21':'辽宁',\             '22':'吉林','23':'黑龙江','31':'上海','32':'江苏','33':'浙江','34':'安徽',\             '35':'福建','36':'江西','37':'山东','41':'河南','42':'湖北','43':'湖南',\             '44':'广东','45':'广西','46':'海南','50':'重庆','51':'四川','52':'贵州',\             '53':'云南','54':'西藏','61':'陕西','62':'甘肃','63':'青海','64':'宁夏',\             '65':'新疆','71':'台湾','81':'香港','82':'澳门'}    birthStr = IdNumber[6:10] + '-' + IdNumber[10:12] + '-' + IdNumber[12:14]    birth = datetime.strptime(birthStr, "%Y-%m-%d").date()    gender = '女' if eval(IdNumber[-2])%2==0 else '男'    age = datetime.now().year-eval(IdNumber[6:10])    site = pDict.get(IdNumber[:2],'')    return birth,gender,age,site#写一行数据到ws工作表def writeLine(ws,row_index,DataList):    for index,item in enumerate(DataList):        cell = ws.cell(row_index, index+1, item)        cell.border = border        cell.alignment = alignment    row_index += 1    return row_index    def main():    #打开sample工作簿,并打开sheet1    try:        wb1 = load_workbook("sample.xlsx")        ws1 = wb1["Sheet1"]        #创建工作簿和工作表        wb2 = Workbook()        sheet_active = wb2.active        sheet_active.title = 'info_sheet'        ws2 = wb2['info_sheet']        ws2.column_dimensions['B'].width = 20       #设置列宽        ws2.column_dimensions['D'].width = 12        #写标题行        title = ['姓名','身份证号','关系','出生日期','性别','年龄','所在地']        rows = writeLine(ws2, 1, title)        #写数据行        row_index = 2        data = list(ws1.iter_rows(min_row=2,min_col=2,values_only=True))        for row in data:            pInfo = list(row)            pInfo += list(get_info(row[1]))            row_index = writeLine(ws2, row_index, pInfo)                    #接收用户输入添加信息并保存        while True:            UserInput = input("请输入用户的姓名 身份证号 关系,以空格分隔,直接按回车键退出:\n")            if UserInput!='':                UserInfo = UserInput.split()                UserInfo += get_info(UserInfo[1])                row_index = writeLine(ws2, row_index,UserInfo)            else:                break        wb2.save("info.xlsx")   #保存文件    except FileNotFoundError:        print("sample.xlsx文件未找到,请检查文件名和路径!")main()

最后附上完整的代码和sample.xlsx文件下载链接

https://download.csdn.net/download/sljsxy/87898935

来源地址:https://blog.csdn.net/sljsxy/article/details/131171689

--结束END--

本文标题: Python使用openpyxl读写excel文件

本文链接: https://www.lsjlt.com/news/402823.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python使用openpyxl读写excel文件
    需求:读入sample.xlsx中的信息,通过分析其中的身份证号信息,得到每个人的出生日期,性别,年龄,所在省份,星座,属相等等,将结果写入到另一个excel文件中。 首先,要使用openpyxl第三方库需要安装,安装方法如下: pip i...
    99+
    2023-09-11
    python
  • python读写excel文件
    项目中需要生成excel表格,在网上查了一些资料后,整理记录下。 1. 读excel表格 1 ''' 2 读取XLS,XLSX文件 3 ''' 4 def readExcelFile(filename): 5 # 打开...
    99+
    2023-01-30
    文件 python excel
  • 解决python 使用openpyxl读写大文件的坑
    由于需要处理xlsx类型的文件,我使用了openpyxl来处理,然而文件比较大,大约有60多MB。读文件的时候虽然慢了一点,但还是能够读出来,但是当我想写入时却报错了。 显示设备没...
    99+
    2022-11-11
  • Python使用openpyxl读写ex
    Python使用读写excel文件 Python使用openpyxl读写excel文件这是一个第三方库,可以处理xlsx格式的Excel文件。pip install openpyxl安装。如果使用Aanconda,应该自带了。 读取Exce...
    99+
    2023-01-31
    Python openpyxl
  • Python使用openpyxl模块处理Excel文件
    首先贴出四种方法适用范围比较: 注释:Excel 2003 即XLS文件有大小限制即65536行256列,所以不支持大文件。而Excel 2007以上即XLSX文件的限制则为1048...
    99+
    2022-11-11
  • Python使用openpyxl处理Excel文件详情
    目录前言1. Excel窗口2. 读取Excel文件3. 写入Excel文件4. 复制Excel文件5. 创建工作表6. 设置单元格字体及颜色7. 数学公式的使用8. 设置单元格宽高...
    99+
    2022-11-11
  • 使用SheetJS读写Excel文件
    文章目录 目的基础说明读取写入总结 目的 项目中有一个Excel转JSON的工具,之前这个工具一直使用 Python 的 openpyxl 库来编写的,然后使用 pyinstaller 打...
    99+
    2023-09-03
    excel python 开发语言 sheetjs 表格
  • 如何解决python 使用openpyxl读写大文件的问题
    这篇文章主要讲解了“如何解决python 使用openpyxl读写大文件的问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何解决python 使用openpyxl读写大文件的问题”吧!由...
    99+
    2023-06-14
  • Python读写EXCEL文件常用方法
    python读写excel的方式有很多,不同的模块在读写的讲法上稍有区别,这里我主要介绍几个常用的方式。 用xlrd和xlwt进行excel读写;用openpyxl进行excel读写;用pandas进行excel读写; 一、数据准备 为了方...
    99+
    2023-09-16
    python excel 数据分析
  • Python如何使用openpyxl模块处理Excel文件
    这篇文章主要介绍“Python如何使用openpyxl模块处理Excel文件”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python如何使用openpyxl模块处理Excel文件”文章能帮助大家解...
    99+
    2023-06-30
  • 使用Python读取和修改Excel文件(基于xlrd、xlwt和openpyxl模块)
    目录1、使用xlrd模块对xls文件进行读操作1.1 获取工作簿对象1.2 获取工作表对象1.3 获取工作表的基本信息1.4 按行或列方式获得工作表的数据2、使用xlwt模块对xls...
    99+
    2022-11-12
  • php读写excel文件
    1.引入包 有不少提供读写excel文件的包,这里选择比较常用的一个,加到自己的项目里就好了。 "phpoffice/phpspreadsheet": "1.8.2", 2.读取文件 ...
    99+
    2023-08-31
    excel php读写excel php excel php xls php xlsx
  • 如何使用node读写Excel文件
    这篇文章给大家介绍如何使用node读写Excel文件,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。具体如下:1、安装node-xlsx模块每次npm的时候,走国外的镜像,非常的慢,甚至...
    99+
    2022-10-19
  • C#使用NPOI库读写Excel文件
    本文实例为大家分享了C#使用NPOI库读写Excel文件的具体代码,供大家参考,具体内容如下 第一步添加程引用: 右键项目工程 — 管理 NuGet程序包 —...
    99+
    2022-11-13
  • python使用pandas读写excel文件的方法实例
    目录引言读取excel文件写入文件:总结引言 现在本地创建一个excel表,以及两个sheet,具体数据如下: sheet1:  sheet2: 读取excel文件 p...
    99+
    2022-11-11
  • python使用openpyxl库读写Excel表格的方法(增删改查操作)
    一、前言 嗨,大家好,我是新发。 最近需要做个小工具,可以通过python来读写Excel,实现增删改查操作。以前用的是xlrd和xlwt这两个python库,今天我要讲的是openpyxl库,我觉得openpyxl...
    99+
    2022-06-02
    python读写Excel表格 python openpyxl库读写Excel表格
  • python操作excel之openpyxl模块读写xlsx格式使用方法详解
    openpyxl模块支持.xls和.xlsx格式的excel创建,但是只支持.xlsx格式的读取操作,不支持.xls的读取(可以使用xlrd模块来读取,写入操作也可使用xlwt模块)...
    99+
    2022-12-21
    python使用openpyxl模块读写xlsx格式 openpyxl创建新的excel openpyxl获取默认工作表 openpyxl删除工作表 openpyxl单元格操作
  • Python读写EXCEL文件常用方法大全
    python读写excel的方式有很多,不同的模块在读写的讲法上稍有区别,这里我主要介绍几个常用的方式。 用xlrd和xlwt进行excel读写;用openpyxl进行excel读写;用pandas进行excel读写; 一、数据准备 为了方...
    99+
    2023-09-01
    python pandas 数据分析
  • Python读写EXCEL文件常用方法有哪些
    本篇文章给大家分享的是有关Python读写EXCEL文件常用方法有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。python读写excel...
    99+
    2022-10-19
  • 如何使用Node读写txt和Excel文件
    今天小编给大家分享一下如何使用Node读写txt和Excel文件的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。首先给出文件的...
    99+
    2023-07-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作