利用Python制作本地Excel的查询与生成的程序

2023-11-19

前言
大家好

今天教大家利用Python制作本地Excel的查询与生成的程序

需求
制作一个程序 有一个简单的查询入口 实现Excel的查询与生成

实验步骤
1打开一个exe 弹出一个界面

2有一个查询 卡号 点击查询

3下方展示查询的结果 同时将这个查询的结果 追加到一个新的结果Excel文件里

4新的结果Excel文件 格式和源文件格式相同 但是每次都在最后追加

今天教大家利用Python制作本地Excel的查询与生成的程序

Excel预览图片
1.2 导入模块并读取Excel文件

等会要用的模块有:pandas、os、xlwt和uuid

用import导入的代码:

import pandas, os, xlwt, uuid
导入好后,就要读取Excel文件了。读取Excel要用到pandas的read_excel函数。

try:
    exl = pandas.read_excel(aim_path)
except:
    print('找不到文件!请检查一下文件路径或文件是否存在')
    os._exit(0)
刚刚导入os模块就是为了做异常捕获找不到文件时的退出。

查询
2.1 Excel的索引与输入

为了方便后面查询,要把DataFrame的索引(index)设为查询输入的卡号。接着,输出以卡号为索引的DF,以便用户查询。最后,就开始循环输入了。

exl.set_index('卡号', inplace = True)
print(f'{exl}\n')
while 1:
    try:
        idx = input('卡号(输入“退出”即可退出):')
        if idx == '退出':
            os._exit(0)
2.2 开始查询、丰富程序

查询用dataframe.loc[index]来完成,最后输出返回的Series。为了避免用户输入非卡号信息,就又加了异常捕获。

        res = exl.loc[idx]
        print(f'\n{res}\n')
    except KeyError:
        print('你的卡号可能输错了!我找不到这个卡号的人哦~\n')
        continue
    except:
        print('有些错误发生了!\n')
        continue
追加查询结果到Excel
3.1 读取或新建Excel

3.1.1 读取

读取跟上面一样,用read_excel

    try:
        res_exl = pandas.read_excel(res_path)
3.1.2 新建Workbook和Sheet

现在轮到xlwt模块大展身手啦~ 用Workbook函数来新建Workbook;用add_sheet函数新增Sheet

    except:
        workbook = xlwt.Workbook()
        sheet = workbook.add_sheet('new')
        col = 0
3.1.2 写入Column

在Column的位置,需要填入查询的Excel的列索引,用

list(pandas.read_excel(aim_path).columns.values)
可以获取到。然后把列索引以xlwt.write填进去,最后把DF保存再读取这个Excel。

for i in list(pandas.read_excel(aim_path).columns.values):
            sheet.write(0, col, i)
            col += 1
        workbook.save(res_path)
        res_exl = pandas.read_excel(res_path)
3.2 追加结果

首先,把结果res变量设置成列表类型。然后,在这个列表里面新增结果没有的卡号。最后把这个列表设置成一个Series(索引为查询的Excel的列索引)。

    res_series_data = list(res)
    res_series_data.insert(2, idx)
    res_series = pandas.Series(
        res_series_data, 
        index = list(
            pandas.read_excel(aim_path).columns.values
        )
    )
现在建好了Series,准备追加了。追加完后还要保存这个Excel。

    res_exl.loc[str(uuid.uuid1())] = res_series
    try:
        res_exl.to_excel(res_path, index = False)
    except:
        print('写入失败')
这里用了uuid.uuid1来随机产生索引,避免重复而修改其它人的值。最后几行就是保存的操作, python index = False 的意思就是把索引隐藏掉了。

完整代码
try:
    exl = pandas.read_excel(aim_path)
except:
    print('找不到文件!请检查一下文件路径或文件是否存在')
    os._exit(0)
exl.set_index('卡号', inplace = True)
print(f'{exl}\n')
while 1:
    try:
        idx = input('卡号(输入“退出”即可退出):')
        if idx == '退出':
            os._exit(0)
        res = exl.loc[idx]
        print(f'\n{res}\n')
    except KeyError:
        print('你的卡号可能输错了!我找不到这个卡号的人哦~\n')
        continue
    except:
        print('有些错误发生了!\n')
        continue

    try:
        res_exl = pandas.read_excel(res_path)
    except:
        workbook = xlwt.Workbook()
        sheet = workbook.add_sheet('new')
        col = 0
        for i in list(pandas.read_excel(aim_path).columns.values):
            sheet.write(0, col, i)
            col += 1
        workbook.save(res_path)
        res_exl = pandas.read_excel(res_path)
    res_series_data = list(res)
    res_series_data.insert(2, idx)
    res_series = pandas.Series(
        res_series_data, 
        index = list(
            pandas.read_excel(aim_path).columns.values
        )
    )
    res_exl.loc[str(uuid.uuid1())] = res_series
    try:
        res_exl.to_excel(res_path, index = False)
    except:
        print('写入失败')

期待你的关注~ 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

利用Python制作本地Excel的查询与生成的程序 的相关文章

随机推荐

  • OpenLayers与Bootstrap样式冲突的解决

    在引入Bootstrap响应式布局样式后 OpenLayers图层瓦片会显示异常 在页面中加入以下样式可以解决 参见 http openlayers org dev examples bootstrap html
  • linux网络95值工具,Linux下网络故障排查工具之ping

    服务器运维人员在日常运维服务器的过程中经常会遇到服务器网络故障 有服务器硬件造成的 也有服务商网络问题造成的 也有区域网络问题造成的 这个时候就需要用到ping traceroute mtr这三个命令 1 ping 最简单的网络请求反馈命令
  • 粒子群算法优化的最小二乘支持向量机分类代码

    粒子群算法优化的最小二乘支持向量机分类代码 在数据挖掘和机器学习领域中 分类是一个非常基础而重要的问题 其中最小二乘支持向量机 LSSVM 是一种有效的分类方法 经常被应用于实际问题中 而粒子群算法 PSO 是一种优化算法 也可以用来优化L
  • C++之函数模板

    1 什么是模板 模板有什么作用 模板分为函数模板和类模板 函数模板是对函数功能框架的描述 具体功能由实际传递的参数决定 有了函数模板 编译器就会根据模板自动生成多个函数名相同 参数列表不同的函数 不需要手动写 例 求一个矩形面积 当传入的长
  • Tensorflow之Estimator(二)实践

    1 前言 这篇文章介绍Tensorflow的高级API 模型的建立和简化过程 2 Estimator优势 本文档介绍了Estimator一种可极大地简化机器学习编程的高阶TensorFlow API 用了Estimator你会得到数不清的好
  • 一些JDK自带的性能分析利器

    有时候碰到服务器CPU飙升或者程序卡死之类的问题 一般都不太好定位 这类bug一般都隐藏的比较深并且还可能是偶发性的 比较棘手 对于此类问题 一般我们都有固定的分析流程 借助于JDK自带的一些分析工具 比如jstack jmap jstat
  • 超全汇总,性能测试常用指标大全(重要)

    目录 导读 前言 一 Python编程入门到精通 二 接口自动化项目实战 三 Web自动化项目实战 四 App自动化项目实战 五 一线大厂简历 六 测试开发DevOps体系 七 常用自动化测试工具 八 JMeter性能测试 九 总结 尾部小
  • 三相桥式全控整流电路仿真--(Matlab仿真2)

    仿真环境 Matlab 2018a 使用模块 1 Three Phase V I Measurement1 2 Multimeter 3 Universal Bridge 4 Selector 5 Mean 测量平均电压 6 Pulse G
  • pycharm如何连接数据库并往数据库插入内容

    1 创建connection对象 2 创建cursor对象 游标对象 主要用于操作数据库 3 执行查询 4 关闭cursor对象 5 关闭connection 首先要先安装pumysql库 pip install pymysql 连接测试
  • 微服务应用大行其道,我提供一个dto和entity转换工具类,方便大家做转换,少写机械代码,多陪陪家人...

    微服务应用大行其道 我提供一个dto和entity转换工具类 方便大家做转换 少写机械代码 多陪陪家人 该工具类主要是对dozer进行了封装 使用过程代码量极少 废话少说 贴代码了 import java util ArrayList im
  • 使用vscode编辑和提交github仓库代码

    写在前面 在github上想删除仓库中的某个文件或文件夹 亦或是重命名操作都很麻烦 这里提供一种vscode的解决方案 在vscode中克隆远程github仓库 然后对代码或文件进行编辑 最后提交即可 就和管理本地文件一样方便 准备工作 下
  • react.js的介绍

    关于React React部分的内容包含了所有授课的思路 React的起源和发展 React 起源于 Facebook 的内部项目 因为该公司对市场上所有 JavaScript MVC 框架 都不满意 就决定自己写一套 用来架设Instag
  • 计算机网络之数据链路层协议总结

    数据链路层 1 数据链路层介绍 2 ARP协议 2 1 ARP的工作流程 2 2 ARP数据报格式 3 NAT技术 3 1 NAT转换过程 3 2 NAPT技术 动态NAT重载 4 DNS技术 4 1 域名层级关系 4 2 域名解析流程 5
  • 程序员如何认识自己? 怎么知道自己适合做什么?人生路上的困惑 应不应该转行

    这个问题其实从毕业工作后就开始思考了 到底什么才是自己适合的工作 怎么才能从自己的工作当中找到兴趣 有朋友吐槽不喜欢现在的生活 不喜欢现在的工作 感觉不合适 如果被吐槽之后 我真的是按照套路去回答 嗯 我理解你 你现在肯定因为自己的生活和工
  • 自定义view之无限滚动的刻度尺

    具体思路是把一个view分成三段 当总长度 gt 40个刻度向左滚动 滚动到2 3的时候view移动到1 3出然后刷新显示的刻度这时为第一页 一次更新页数 当向右滚动的时候滚动且不为第一页则每滚动到1 3处view移动到2 3处 之后在添加
  • 第1090期AI100_机器学习日报(2017-09-12)

    AI100 机器学习日报 2017 09 12 神经网络机器翻译 NMT 实践笔记 爱可可 爱生活 如何在Chatbot中应用深度学习 ChatbotsChina 论文推荐 像CNN一样快速训练RNN 机器之心Synced 基于Libsvm
  • Django2 Postman 模拟POST提交,提示:Forbidden (CSRF cookie not set.) 403

    解决方法 去除django项目中settings py中的 MIDDLEWARE 的 django middleware csrf CsrfViewMiddleware 既可
  • QT的信号与槽原理(经典)

    QT的信号与槽原理 经典 信号与 槽作为 QT的核心机制在 QT编程中有着广泛的应用 本文介绍了信号与 槽的一些基本概念 元对象工具以及在实际使用过程中应注意的一些问题 QT是一个跨平台的C GUI应用构架 它提供了丰富的窗口部件集 具有面
  • .faust勒索病毒数据怎么处理

    引言 近年来 随着科技的迅猛发展 网络安全问题愈发突出 特别是勒索病毒的威胁日益严峻 其中 Faust勒索病毒作为一种新型的恶意软件 引起了全球范围内的广泛关注和担忧 本文91数据恢复将对Faust勒索病毒进行深入分析 探讨其传播方式 危害
  • 利用Python制作本地Excel的查询与生成的程序

    前言 大家好 今天教大家利用Python制作本地Excel的查询与生成的程序 需求 制作一个程序 有一个简单的查询入口 实现Excel的查询与生成 实验步骤 1打开一个exe 弹出一个界面 2有一个查询 卡号 点击查询 3下方展示查询的结果