广告
返回顶部
首页 > 资讯 > 后端开发 > Python >利用Python改正excel表格数据
  • 260
分享到

利用Python改正excel表格数据

2024-04-02 19:04:59 260人浏览 薄情痞子

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

摘要

目录一、前言二、代码实现及讲解1.模块的导入2.获取“数据原表”中数据3.获取生产记录更新表中的日期和材料4.对生产数据更新表中数据的修改5.最后,调用函数并

一、前言

大家好,今天我来介绍我接一个python单子。我完成这个单子前后不到2小时。首先我接到这个单子的想法是处理excel表,在两个表之间建立联系,并通过项目需求,修改excel表中的数据。我是运用面向过程写的,将每一步都放在了不同的函数中,下面让我来介绍一下我是怎么通过自己的思路一步一步完成的。

先上客户的需求:

二、代码实现及讲解

1.模块的导入

主要用到的模块为openpyxl、random

import openpyxl
import random
from  openpyxl.utils.cell import get_column_letter,column_index_from_string

除了运用到openpyxl和random还用到了openpyxl中的utils包下cell模块的两个方法,第一个方法get_column_letter的作用是将整型转换为对应excel中列属性的字符串,例如:12转换为L,50转换为AX

第二个方法是将字符串转换为整型,其本质类似于10进制和27进制之间的转换,当然你也可以自己写,下面附上自己写的行(整型)转换为列(字符串)的代码。

def num_to_string(n):
    column = n - 1
    real_colum = ''
    while column >= 26:
        value = column // 26
        column = column % 26
        real_colum += chr(value + 64)
    real_colum += chr(column + 65)
    return real_colum

2.获取“数据原表”中数据

#创建一个全局变量MATERIAL_MESSAGE
MATERIAL_MESSAGE = []
#获取小宛中数据
def get_construct_message():
    #读取数据原表.xlsx表
    wb = openpyxl.load_workbook('数据原表.xlsx')
    #获取获取当前活动工作表,默认为第一个表
    ws = wb.active
    #获取在生产记录更新.xlsx中的可以用到的数据存入MATERIAL_MESSAGE中
    for row in range(1,ws.max_row + 1):
        if ws[f'A{row}'].value == '日期':
            for i in range(ord('B'),ord('I')):
                material = []
                #将日期转换为与生产记录更新中相对应写法的形式
                date = ws[f'B{row}'].value.translate(str.maketrans('年月','--'))
                date = date.replace('号','')
                material.append(date)
                i = chr(i)
                material.append(ws[f'{i}{row + 1}'].value)
                material.append(ws[f'{i}{row + 3}'].value)
                MATERIAL_MESSAGE.append(material)
    print(MATERIAL_MESSAGE)

3.获取生产记录更新表中的日期和材料

# 将客户要求的对应数据存入字典中
TABLES = {"水泥":"水泥1","粉煤灰":"煤灰","河沙":"沙1","粗骨料1":"石1","粗骨料2":"石2","减水剂":"外加剂","水":"水"}
#存入生产记录更新表的日期和其所在的行数
DATE = []
#存入生产记录更新表的材料和其所在的列数
MATERIAL = []
wb = openpyxl.load_workbook('生产记录更新.xlsx')
ws = wb.active
#获取日期
def get_date():
    for row in range(3,ws.max_row + 1):
        #将日期进行分割合并转换成与MATERIAL_MESSAGE中对应日期的格式
        date = str(ws[f'B{row}'].value).split()[0]
        date_list = date.split('-')
        if '0' in date_list[1]:
            date_list[1] = date_list[1].replace('0','')
        if '0' in date_list[2]:
            date_list[2] = date_list[2].replace('0','')
        date = '-'.join(date_list)
        DATE.append([date,row])
    pprint.pprint(DATE)

#获取材料
def get_material():
    n = 0
    for column in ws[1]:
        n += 1
        #判断该单元格的内容是否在TABLES中
        if column.value in TABLES.values():
        #运用行列转换的方法进行转换
            MATERIAL.append([column.value,get_column_letter(n - 1)])
    pprint.pprint(MATERIAL)

DATE表部分数据:

MATERIAL表数据:

4.对生产数据更新表中数据的修改

#两个参数分别为材料的类型和所在的列数
def update_default(matrial,letter):
    for row in range(3,ws.max_row + 1):
        #判断单元格是否为空
        if ws[f'{letter}{row}'].value != None:
            for i in range(len(MATERIAL_MESSAGE)):
                #需求条件,要将连个表中的日期和材料类型进行一一对应
                if DATE[row-3][0] == MATERIAL_MESSAGE[i][0] and matrial == TABLES[MATERIAL_MESSAGE[i][1]]:
                    #修改形参letter对应列的每个符号要求的单元格对应的设定值
                    ws[f'{letter}{DATE[row - 3][1]}'].value = MATERIAL_MESSAGE[i][2]
                    #分别获取该列列号的下两列对应的列号
                    letter_random = get_column_letter(column_index_from_string(letter) + 2)
                    letter_real = get_column_letter(column_index_from_string(letter) + 1)
                    #判断该列是否在这三列中,若在其中则得到-2到2之间的随机数,否则-1到1之间的随机数,并更新误差值
                    if letter in ('AV','BB','BE'):
                        ws[f'{letter_random}{DATE[row - 3][1]}'].value = round(random.unifORM(-2, 2), 1)
                    else:
                        ws[f'{letter_random}{DATE[row - 3][1]}'].value = round(random.uniform(-1, 1), 1)
                    #运用设定值和误差值更新中间的实际值
                    ws[f'{letter_real}{DATE[row - 3][1]}'].value = round(ws[f'{letter}{DATE[row - 3][1]}'].value * (1 + ws[f'{letter_random}{DATE[row - 3][1]}'].value * 0.01),2)

5.最后,调用函数并保存数据

def main():

    get_construct_message()
    get_date()
    get_material()
    for i in MATERIAL:
        update_default(i[0],i[1])
    wb.save('生产记录更新.xlsx')

if __name__ == "__main__":
    main()

三、效果展示

修改前部分数据:

修改后部分数据:

四、结尾

总的来说,难度不在于怎么修改数据,而是在于怎么把两个表相互关联,通过这次接单让我对excel表能够更加熟练地进行操作,接单既能提升自己的能力,又能赚点外快,何乐而不为呢?

到此这篇关于利用Python改正excel表格数据的文章就介绍到这了,更多相关Python修正excel数据内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 利用Python改正excel表格数据

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

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

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

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

下载Word文档
猜你喜欢
  • 利用Python改正excel表格数据
    目录一、前言二、代码实现及讲解1.模块的导入2.获取“数据原表”中数据3.获取生产记录更新表中的日期和材料4.对生产数据更新表中数据的修改5.最后,调用函数并...
    99+
    2022-11-11
  • 如何利用Python改正excel表格数据
    本文小编为大家详细介绍“如何利用Python改正excel表格数据”,内容详细,步骤清晰,细节处理妥当,希望这篇“如何利用Python改正excel表格数据”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、前言先...
    99+
    2023-06-30
  • 如何利用Python处理excel表格中的数据
    目录一、基础、常用方法二、提高三、出错总结一、基础、常用方法 1. 读取excel 1、导入模块: import xlrd 2、打开文件: x1 = xlrd.open_workb...
    99+
    2022-11-13
  • 如何利用Python操作excel表格
    这篇文章主要介绍了如何利用Python操作excel表格,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。环境linux 服务器一台,亦或者windows10电脑一台python...
    99+
    2023-06-29
  • python读取excel表格的数据
    1.在Windows命令行中安装第三方模块xlrd,先切到python安装目录(Python34),然后切到Scripts,然后输入命令easy_install xlrd按回车进行安装安装完成2.新建一个excel表,然后保存,造数据3.编...
    99+
    2023-01-31
    表格 数据 python
  • Python如何读取Excel表格数据
    环境: Pycharm IDE 3.9  2021.2.1 Excel作为目前主要的流行数据表格,其存储的数据整齐,强可观性。需要对大量的数据进行分析时,可以利用python脚本语言进行数据分析。 python读取excel数据: 打开py...
    99+
    2023-09-07
    excel
  • Python如何读取excel表格的数据
    这篇文章主要介绍“Python如何读取excel表格的数据”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python如何读取excel表格的数据”文章能帮助大家解决问题。小编这里推荐使用一款兼容性非...
    99+
    2023-06-27
  • 利用java怎么从数据库中导出Excel表格
    这期内容当中小编将会给大家带来有关利用java怎么从数据库中导出Excel表格,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。基于maven jar包引入如下:  <dependency> ...
    99+
    2023-05-31
    java ava excel
  • 利用Java怎么将excel表格转换成json数据
    利用Java怎么将excel表格转换成json数据?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。实现方法如下:package org.duang.test;import jav...
    99+
    2023-05-31
    java excel json
  • 利用python做表格数据处理
    目录技术背景python对Excel表格的处理vaex的安装与使用vaex的安装性能对比数据格式转换总结概要技术背景 数据处理是一个当下非常热门的研究方向,通过对于大型实际场景中的...
    99+
    2022-11-12
  • 怎么用Python处理excel表格中的数据
    这篇文章主要介绍怎么用Python处理excel表格中的数据,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、基础、常用方法 读取excel导入模块:import xlrd打开文件:x1 =&nb...
    99+
    2023-06-29
  • python-将excel表格中的数据转化为json数据格式
    前言 excel表格中的数据,转化为json格式,再用程序去处理json数据,是常见的数据处理方式。这样可以实现按照需求去做数据处理。 需要用到的软件 除了python环境外,主要用到读取excel文...
    99+
    2023-09-02
    python excel json
  • 利用Python操作excel表格的完美指南
    目录主旨环境安装模块新建excel单元格写入数据合并单元格居中显示修改字体和颜色总结主旨 在日常工作中,我们会经常且频繁的使用excel表格,那么我们是否可以通过python来操作e...
    99+
    2022-11-13
  • 怎么使用Python根据原始Excel表格批量生成目标Excel表格
    本文小编为大家详细介绍“怎么使用Python根据原始Excel表格批量生成目标Excel表格”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用Python根据原始Excel表格批量生成目标Excel表格”文章能帮助大家解决疑惑,下面跟...
    99+
    2023-07-06
  • 如何利用Python将txt文件录入Excel表格
    今天就跟大家聊聊有关如何利用Python将txt文件录入Excel表格,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。我们的手头有一个写满数据的txt文件,如何将它录入Excel表格呢...
    99+
    2023-06-21
  • Python从一个Excel表格提取数据填到另一个表格
    本文,用Python从一个Excel表格提取数据填到另一个表格,详情代码中注释都说明了,请亲们详细查阅: #将要对填的两张xlsx表格放在同一个目录,并在下方指定该目录路径='G:\\Xct\\python'#“填写表”就是要填充数据的EX...
    99+
    2023-09-01
    excel python 开发语言
  • 利用Java怎么将excel表格批量导入到数据库
    本篇文章给大家分享的是有关利用Java怎么将excel表格批量导入到数据库,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。创建导入抽象类package com.gclo...
    99+
    2023-05-30
    java excel 数据库
  • python数据分析之怎么用pandas搞定Excel表格
    本篇内容主要讲解“python数据分析之怎么用pandas搞定Excel表格”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python数据分析之怎么用pandas搞定Excel表格”吧!(一)读...
    99+
    2023-06-30
  • Python如何利用xlrd和xlwt模块操作Excel表格
    目录简介:安装:初始数据:xlrd使用:xlwt使用:xlwt使用示例2:总结 简介: xlrd和xlwt是python的第三方库,xlrd模块实现对excel文件内容读取...
    99+
    2022-11-13
  • 利用python将 Matplotlib 可视化插入到 Excel表格中
    目录数据可视化图表插入Excel前言: 在生活中工作中,我们经常使用Excel用于储存数据,Tableau等BI程序处理数据并进行可视化。我们也经常使用R、Python编程进行高质量...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作