给数据分列的案例操作-LH-camera

news2024/11/19 7:21:57

简单介绍

  • 利用xlrd读取xls数据,给xls表添加"所属平台"字段分列(以最长分列为准,填充空格)。
  • 利用openpyxl,将分列后数据存储到xls文件中,名字格式固定。

具体代码

# 用户原始表格存放位置:D:\lvhanghmm\1 日常巡检\9 日常巡检资料数据源
# Excel读写参考:https://blog.csdn.net/AXIMI/article/details/102935496
import glob
import xlrd    # 读    # pip install xlrd
import openpyxl    # 写   # pip install openpyxl
import os
from openpyxl.styles import Font, PatternFill, Border, Side, Alignment

if not os.path.exists("./未修改"):
    os.mkdir("./未修改")


def 获取未修改文件列表():
    file_list = glob.glob("./未修改/*.xls")
    print("获取到的文件路径列表:", file_list)
    return file_list


def 得到分列表头列表(最大分列数):
    分列表头 = []
    中文数字 = ["一", "二", "三", "四", "五", "六", "七", "八", "九", "十"]
    for i in range(最大分列数):
        分列表头.append(中文数字[i]+"级目录")
    return 分列表头


def 设置单元格格式(sheet):   # 参考:https://blog.csdn.net/qq_42774234/article/details/123007872?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-1-123007872-blog-125582295.235^v43^pc_blog_bottom_relevance_base5&spm=1001.2101.3001.4242.2&utm_relevant_index=4
    # 边框
    border = Border(
        left=Side(border_style='thin', color='000000'),
        right=Side(border_style='thin', color='000000'),
        top=Side(border_style='thin', color='000000'),
        bottom=Side(border_style='thin', color='000000'),
    )
    # 对齐
    alignment = Alignment(
        horizontal='center',
        vertical='center',
        text_rotation=0,
        indent=0
    )
    # # 字体
    # font = Font(
    #     name='宋体',
    #     size=10,
    #     bold=True,
    #     italic=False,
    #     strike=False,
    #     color='000000'
    # )

    for row, row_ind in zip(sheet.iter_rows(), range(1, sheet.max_row + 1)):
        for cell in row:
            # 设置边框
            sheet[cell.coordinate].border = border
            # 设置居中对齐
            sheet[cell.coordinate].alignment = alignment
            # 行高20
            # sheet.row_dimensions[row_ind].height = 20
            # 设置字体
            # sheet[cell.coordinate].font = font


def 对单个文件的所属平台进行分列追加(文件路径):
    # ---------------------------------------读取数据部分------------------------------------------------------
    filename = 文件路径
    文件名时间 = filename.split("\\")[-1].split(" - ")[-1][:-4]     # 获得文件名中的时间字符串  2024-02-04T201652.900
    print("文件名时间:", 文件名时间)
    book = xlrd.open_workbook(filename)
    sheet = book.sheet_by_index(0)    # 读取第一张表
    序号 = sheet.col_values(0)
    镜头名称 = sheet.col_values(1)
    镜头编码 = sheet.col_values(2)
    国标编码 = sheet.col_values(3)
    所属平台 = sheet.col_values(4)
    分辨 = sheet.col_values(5)
    数模类 = sheet.col_values(6)
    分类 = sheet.col_values(7)
    在线状态 = sheet.col_values(8)
    最后采集时间 = sheet.col_values(9)
    IP = sheet.col_values(10)
    # print(len(序号))    # 19219
    # print(序号)
    # print(len(镜头名称))    # 19219
    # print(镜头名称)
    # print(len(镜头编码))     # 19219
    # print(镜头编码)
    # ########### 将所属平台分列  ##############
    print("数据条数:", len(所属平台))     # 19219
    # print("所属平台:", 所属平台)
    所属平台_ll = []
    最大分列数 = 0
    for item in 所属平台:
        temp_list = item.split("/")
        if 最大分列数 < len(temp_list):
            最大分列数 = len(temp_list)
        所属平台_ll.append(temp_list)
    # print("原始的所属平台_ll:", 所属平台_ll)
    print("最大分列数:", 最大分列数)
    分列表头 = 得到分列表头列表(最大分列数)
    print("分列表头:", 分列表头)
    所属平台_ll[0] = 分列表头
    for item in 所属平台_ll:
        追加空格数 = 最大分列数-len(item)
        if len(item) < 最大分列数:
            item += ([" "] * 追加空格数)
    # print("变换表头且追加空格后的所属平台_ll:", 所属平台_ll)
    # print(len(所属平台_ll))     # 19219
    row_before = list(zip(序号, 镜头名称, 镜头编码, 国标编码, 所属平台))
    row_after = list(zip(分辨, 数模类, 分类, 在线状态, 最后采集时间, IP))
    # print("row_before:", row_before)
    # print(len(row_before))
    # print("row_after:", row_after)
    # print(len(row_after))

    # -------------------------------------------写入数据部分-----------------------------------------------
    print("正在转换并写入数据。。。。。。")
    wb = openpyxl.Workbook()
    sheet = wb.active
    for i in range(len(所属平台_ll)):
        sheet.append(list(row_before[i]) + 所属平台_ll[i] + list(row_after[i]))
    print("正在设置单元格格式。。。。。。")
    设置单元格格式(sheet)
    save_file_name = "平台数据汇总表 - " + 文件名时间
    wb.save(f"./{save_file_name}.xls")


def 读取并操作原始Excel表():
    file_list = 获取未修改文件列表()
    count_file = len(file_list)    # 文件数
    if count_file == 1:
        file_path = file_list[0]    # 文件路径
        对单个文件的所属平台进行分列追加(file_path)
    elif count_file > 1:
        for i in range(count_file):
            对单个文件的所属平台进行分列追加(file_list[i])
    else:
        print("未找到文件!!请在”未修改“文件夹中放入导出的平台文件!!")


def main():
    读取并操作原始Excel表()


if __name__ == "__main__":
    main()

打包成exe文件的命令

pyinstaller -F python_file_name.py

可放入多个文件同时转换分列

在这里插入图片描述
在这里插入图片描述

程序及文件下载链接

https://download.csdn.net/download/ungoing/88812752

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1435001.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Polar-Net:通过 OCTA(光学相干断层扫描血管成像)检测阿尔茨海默病

通过OCTA&#xff08;光学相干断层扫描血管成像&#xff09;检测阿尔茨海默病 主问题&#xff1a;如何通过OCTA图像有效地检测阿尔茨海默病&#xff1f;子问题1&#xff1a;如何在深度学习模型中模拟临床实践中常用的区域基础分析方法&#xff1f;子问题2&#xff1a;如何在网络…

Python算法题集_环形链表

Python算法题集_环形链表 题234&#xff1a;环形链表1. 示例说明2. 题目解析- 题意分解- 优化思路- 测量工具 3. 代码展开1) 标准求解【集合检索】2) 改进版一【字典检测】3) 改进版二【双指针】 4. 最优算法 本文为Python算法题集之一的代码示例 题234&#xff1a;环形链表 …

掌握CSS网格函数fit-content()的妙用

CSS网格布局是一种强大的布局系统&#xff0c;它提供了灵活的网格化设计能力。其中&#xff0c;fit-content()函数是一项重要的功能&#xff0c;它可以帮助我们在网格容器中自动调整网格项的尺寸。本文将详细讲解fit-content()函数的使用方法及其常见应用场景&#xff0c;助你掌…

2月4日作业

1.请编程实现双向链表的头插&#xff0c;头删、尾插、尾删 头插&#xff1a; 尾插&#xff1a; 头删&#xff1a; 尾删&#xff1a; 2.请编程实现双向链表按任意位置插入、删除、修改、查找 插入&#xff1a; 删除&#xff1a; 查找&#xff1a; 修改&#xff1a; 头文件&am…

Golang 学习(二)进阶使用

二、进阶使用 性能提升——协程 GoRoutine go f();一个 Go 线程上&#xff0c;可以起多个协程&#xff08;有独立的栈空间、共享程序堆空间、调度由用户控制&#xff09;主线程是一个物理线程&#xff0c;直接作用在 cpu 上的。是重量级的&#xff0c;非常耗费 cpu 资源。协…

msvcp120.dll丢失如何解决/找不到msvcp120.dll的5种有效的解决方法

在计算机系统运行过程中&#xff0c;如果遇到“找不到msvcp120.dll”的提示信息&#xff0c;这代表了何种具体状况呢&#xff1f;首先&#xff0c;我们需要明确msvcp120.dll文件的重要性。msvcp120.dll是Microsoft Visual C Redistributable Package的一部分&#xff0c;这是一…

Java入门之JavaSe(韩顺平p1-p?)

学习背景&#xff1a; 本科搞过一段ACM、研究生搞了一篇B会后&#xff0c;本人在研二要学Java找工作啦~~&#xff08;宇宙尽头是Java&#xff1f;&#xff09;爪洼纯小白入门&#xff0c;C只会STL、python只会基础Pytorch、golang参与了一个Web后端项目&#xff0c;可以说项目小…

数据库学习笔记2024/2/5

2. SQL 全称 Structured Query Language&#xff0c;结构化查询语言。操作关系型数据库的编程语言&#xff0c;定义了 一套操作关系型数据库统一标准 2.1 SQL通用语法 在学习具体的SQL语句之前&#xff0c;先来了解一下SQL语言的通用语法。 1). SQL语句可以单行或多行书写&…

查大数据检测到风险等级太高是怎么回事?

随着金融风控越来越多元化&#xff0c;大数据作为新兴的技术被运用到贷前风控中去了&#xff0c;不少人也了解过自己的大数据&#xff0c;但是由于相关知识不足&#xff0c;看不懂报告&#xff0c;在常见的问题中&#xff0c;大数据检测到风险等级太高是怎么回事呢?小易大数据…

支持534种语言,开源大语言模型MaLA-500

无论是开源的LLaMA 2还是闭源的GPT系列模型&#xff0c;功能虽然很强大&#xff0c;但对语言的支持和扩展比较差&#xff0c;例如&#xff0c;二者都是以英语为主的大模型。 为了提升大模型语言的多元化&#xff0c;慕尼黑大学、赫尔辛基大学等研究人员联合开源了&#xff0c;…

第十四篇【传奇开心果系列】Python的OpenCV库技术点案例示例:图像特征提取与描述

传奇开心果短博文系列 系列短博文目录Python的OpenCV库技术点案例示例系列短博文目录前言一、OpenCV图像特征提取与描述介绍二、OpenCV图像特征提取与描述初步示例代码三、扩展思路介绍四、特征点筛选和匹配优化示例代码五、多尺度特征提取示例代码六、非局部特征描述子示例代码…

【数据结构与算法】之排序系列-20240205

这里写目录标题 一、1346. 检查整数及其两倍数是否存在二、1365. 有多少小于当前数字的数字三、1460. 通过翻转子数组使两个数组相等四、1491. 去掉最低工资和最高工资后的工资平均值五、1502. 判断能否形成等差数列 一、1346. 检查整数及其两倍数是否存在 简单 给你一个整数数…

工业笔记本丨行业三防笔记本丨亿道加固笔记本定制丨极端温度优势

工业笔记本是专为在恶劣环境条件下工作而设计的高度耐用的计算机设备。与传统消费者级笔记本电脑相比&#xff0c;工业笔记本在极端温度下展现出了许多优势。本文将探讨工业笔记本在极端温度环境中的表现&#xff0c;并介绍其优势。 耐高温性能: 工业笔记本具有更高的耐高温性…

CodeMeter强化了ETM WinCC 开放架构平台的许可与安全保护

在面对日益复杂的网络安全威胁时&#xff0c;ETM professional control采取了前瞻性的措施&#xff0c;选择了业界领先的威步CodeMeter技术&#xff0c;以保护其标志性的WinCC开放架构平台。这一选择不仅体现了ETM对安全的高度重视&#xff0c;也标志着其在保障关键基础设施运营…

见龙在田,预防性保护措施让文物传承千年

一、“见龙在田——山西出土龙文物展” “见龙在田——山西出土龙文物展”以十二生肖龙为线索&#xff0c;在山西省考古研究院&#xff08;山西考古博物馆&#xff09;揭幕&#xff0c;深入展示了中国优秀传统文化的悠久历史。展览汇聚了130多件珍贵历史文物。从新石器时代到汉…

2.0 Zookeeper 安装配置

Linux 安装 zookeeper 下载地址为: Apache ZooKeeper。 选择一稳定版本&#xff0c;本教程使用的 release 版本为3.4.14&#xff0c;下载并安装。 打开网址 https://www.apache.org/dyn/closer.lua/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz&#xff0c;看到如下界…

Linux中有名管道和无名管道

无名管道基础 进程间通信介绍 常用通信方式 无名管道&#xff08;pipe&#xff09; 有名管道 &#xff08;fifo&#xff09; 信号&#xff08;signal&#xff09; 共享内存(mmap) 套接字&#xff08;socket&#xff09;过时的IPC通信方式 System V IPC 共享内存&#xff08;sh…

机器学习---概率图模型(隐马尔可夫模型、马尔可夫随机场、条件随机场)

1. 隐马尔可夫模型 机器学习最重要的任务是根据已观察到的证据&#xff08;例如训练样本&#xff09;对感兴趣的未知变量&#xff08;例如类别标 记&#xff09;进行估计和推测。概率模型&#xff08;probabilistic model&#xff09;提供了一种描述框架&#xff0c;将描述任…

【Qt Design】界面介绍

文章目录 前言Widget Box&#xff08;工具箱&#xff09;对象查看器Qt Design属性编译器sizePolicy内容 信号/槽编辑器资源浏览器ui文件 前言 Widget Box&#xff08;工具箱&#xff09; 提供很多控件 对象查看器 对象查看区域&#xff0c;可以查看主窗口放置对象的列表 …

HTTP相关问题

目录 1.从输入URL到页面展示到底发生了什么&#xff1f; 2.HTTP状态码有哪些&#xff1f; 2.1 2XX(成功状态码) 2.2 3XX(重定向状态码) 2.3 4XX(客户端错误状态码) 2.4 5XX(服务端错误状态码) 3.HTTP 请求头中常见的字段有哪些&#xff1f; 4.HTTP和HTTPS有什么区别&…