Python如何同时读写Excel

 更新时间:2023年08月14日 09:25:59   作者:蛇皮皮蛋  
这篇文章主要介绍了Python如何同时读写Excel问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Python同时读写Excel

1、需要安装的模块

pip install xlutils
pip install xlrd
pip install xlwt

2、样例代码

import xlrd
import xlwt
from xlutils.copy import copy
# zq_data = {}
# add_zq_data = {}
# with open('department_copy1.json', 'r', encoding='UTF-8')as f:
#     data = json.load(f)
#     for data in data["RECORDS"]:
#         print(data["id"], data["name"])
#         zq_data[data["name"]] = data["id"]
data = xlrd.open_workbook("test.xlsx")
newWb = copy(data)  # 复制
# 获取工作区
newWs = newWb.get_sheet(0)
table = data.sheet_by_index(0)
for rowNum in range(table.nrows):
    rowVale = table.row_values(rowNum)
    if rowVale[12] != "":
        print(rowVale[12])
        newWs.write(rowNum, 13, "value")
newWb.save("new_test.xlsx")

3、效果

ok同时读写成功!

python批量读写excel文件

首先,导入openpyxl库中的读取和新建文件包(比较官方的名称我没有查,就按照好理解的方向这样说),文中关于行和列的理解都是个人想法,可能有和读者不同之处。

先详细说怎么样读取单个excel文件,批量在后边写。

excel表格格式如下,需要弄清楚的就是excel文件路径,以及内部工作表的名称,两者均为字符串格式:

此处需要注意大小写的问题,严格按照下边代码中的大小写键入

os库用于后边批量处理

from openpyxl import load_workbook, Workbook   #读取=加载, 新建
import os

1、读取已存在的excel文件

path = r'E:\pythonTest\2021-12-31.xlsx'
wb = load_workbook(path)
print(wb)

运行结果:

<openpyxl.workbook.workbook.Workbook object at 0x000002444BC60FD0>

显示一个对象的形式

根据文件格式,读取其中工作表的内容

sheet_005 = wb['0.05m']
print(sheet_005)
print(type(sheet_005))

运行结果:

<Worksheet "0.05m">
<class 'openpyxl.worksheet.worksheet.Worksheet'>

此时,sheet_005是一个元组对象,那么要读取其中的数据(这里可能有其他的方式,我就直接写自己用过的,没有详查)需要对里边的数据进行定位,我因为处理的关系,按行读取和按列分别读取,以及读取二维的情况

按行读取:

rows = sheet_005['b1:j1']
#得到的内容是1行9列 
for row in rows:
    for i in range(9):
        print(row[i].value)

运行结果:

45.3456
46.3456
47.3456
48.3456
49.3456
50.3456
51.3456
52.3456
53.3456

按列读取

cols = sheet_005['a2:a10']
#得到的内容是9行1列
for col in cols:
    print(col[0].value)

运行结果:

23.5167
24.5167
25.5167
26.5167
27.5167
28.5167
29.5167
30.5167
31.5167

读取二维的情况:

path = r"E:\pythonTest\2021-12-31.xlsx"
wb = load_workbook(path)
sheet_005 = wb['0.05m']
data = sheet_005['b2:j10']
for d in data:
    for i in range(9):
        if d[i].value != None:
            print(d[i].value)

运行结果:

0.302119106054306
0.3005659878253937
0.2625385522842407
0.2840092778205872
0.3061999976634979
0.3017207086086273
0.3038829267024994
0.3220527768135071
0.3237947821617126
0.3207892179489136
0.3028714954853058
0.2637502551078796
0.2534836530685425
0.253666490316391
0.266710102558136
0.2634153366088867
0.2857251763343811
0.3227577209472656
0.3185969889163971
0.3055056631565094
0.2600562572479248
0.2565443217754364
0.2556202709674835
0.2537874281406403
0.2476959973573685
0.2596182227134705
0.2735748291015625
0.2842697501182556
0.2630136013031006
0.2532234787940979
0.2525502741336823
0.2542127370834351
0.2646780908107758
0.2624187767505646
0.2621198892593384
0.3370471298694611
0.3249744772911072
0.3106313049793243
0.2642513513565063
0.3019898533821106
0.2691900730133057
0.257877379655838
0.2709497213363647
0.2727532088756561
0.3150153458118439
0.3248605132102966
0.2938291728496552
0.2970251739025116
0.2867810130119324
0.3157626986503601
0.2825500667095184
0.2774896025657654
0.2862694561481476
0.2954988181591034
0.2895880043506622
0.2916149795055389
0.2997244298458099
0.299854189157486
0.3112888336181641
0.2700950503349304
0.254077821969986
0.2723859548568726
0.2887678444385529
0.2891480326652527
0.2959722280502319
0.3032049238681793
0.2998882830142975
0.2962991893291473
0.2498120218515396
0.257283478975296
0.3057393729686737
0.27692911028862
0.2761669456958771
0.2838139533996582
0.2868392765522003
0.2837753891944885
0.2908490598201752
0.2874066829681396
0.2941864132881165
0.2949732542037964

2、创建一个excel文件

并且将内容写入

new_path = r"E:\pythonTest\2022-12-08.xlsx"
new_wb = Workbook()
#新建一个sheet,title可以对sheet名称进行修改
new_sheet_005 = new_wb.create_sheet(title = '0.05m',index = 0)
new_sheet = new_wb.create_sheet(title='这是一个工作表', index = 1)
#可以对工作表中的内容写入
new_sheet_005['b3'] = '1'
#存储
new_wb.save(new_path)

运行结果: 

3、批量对文件进行读取

这里就是将上文中 path 的值写到文件夹即可,利用 os 库中的 listdir() 函数对文件进行遍历,从而实现批量读取:

还有要注意的地方就是在遍历过程中,file 所代表的字符串只有文件名,但是 load_workbook() 函数要读取的是文件完整的目录,因此需要将 path 和 file 进行拼接,在这里注意 // 的转义问题。

path = r"E:\pythonTest"
for file in os.listdir(path):
    print(file)
    wb = load_workbook(path+'//'+file)  
    sheet_005 = wb['0.05m']
    print(sheet_005['b3'].value)

运行结果:

2021-12-31.xlsx
0.3207892179489136
2022-12-08.xlsx
1

批量写入

类似的操作,但是要考虑到根据文件的内容生成新的不同文件名,否则同名文件会覆盖

path = r"E:\pythonTest"
for file in os.listdir(path):
    new_file_name = 'new' + file[0:10] + '.xlsx'
    new_wb = Workbook()  
    #此处index设置与前边有所不同
    new_sheet1 = new_wb.create_sheet(title='0.05m', index = 1)
    new_sheet2 = new_wb.create_sheet(title='这是一个工作表', index = 0)
    new_sheet1['d3'].value = 45
    for i in range(1,10):
        for j in range(1,10):
            new_sheet1[i][0].value = i*j
    new_wb.save(path+'//'+new_file_name)

这里有一点我不太清楚,就是new_sheet1[i][0] 这里的0只能写0,我不太理解这里,但是够我用了,所以没有深究,如果有小伙伴看到这里能给我解答的话,不胜感谢。

运行结果:

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • python spilt()分隔字符串的实现示例

    python spilt()分隔字符串的实现示例

    split() 方法可以实现将一个字符串按照指定的分隔符切分成多个子串,本文介绍了spilt的具体使用,感兴趣的可以了解一下
    2021-05-05
  • 使用Python脚本来获取Cisco设备信息的示例

    使用Python脚本来获取Cisco设备信息的示例

    这篇文章主要介绍了编写Python脚本来获取Python脚本来获取Cisco设备信息的教程,文中的示例是获取一台思科交换机的脚本,需要的朋友可以参考下
    2015-05-05
  • 5个Python自动化运维脚本分享

    5个Python自动化运维脚本分享

    Python 是一种流行的编程语言,具有丰富的第三方库和强大的自动化能力,适用于许多不同的领域,许多运维工程师会使用 Python 脚本来自动化运维任务,所以本文为大家整理了5个Python自动化运维脚本,有需要的可以参考下
    2023-08-08
  • Python参数类型以及常见的坑详解

    Python参数类型以及常见的坑详解

    这篇文章主要介绍了Python参数类型以及常见的坑详解,由于之前遇到过几次有关于参数类型的坑,以及经常容易把一些参数类型搞混淆,现在做一下有关参数类型的总结记录以及对之前踩坑经历的分析,需要的朋友可以参考下
    2019-07-07
  • python缺失值填充方法示例代码

    python缺失值填充方法示例代码

    常见的数据缺失填充方式分为很多种,比如删除法、均值法、回归法、KNN、MICE、EM等,下面这篇文章主要给大家介绍了关于python缺失值填充方法的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-12-12
  • python自动化测试无法启动谷歌浏览器问题

    python自动化测试无法启动谷歌浏览器问题

    这篇文章主要介绍了python自动化测试无法启动谷歌浏览器问题,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-10-10
  • NumPy中数组的拼接(Concatenation)的使用

    NumPy中数组的拼接(Concatenation)的使用

    数组拼接是指将多个形状兼容的数组,本文就来详细的介绍一下NumPy中数组的拼接(Concatenation)的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2026-04-04
  • 使用Python自动化处理Excel表格的操作方法

    使用Python自动化处理Excel表格的操作方法

    本文介绍Python操作Excel的多种方法及工具,如xlrd/xlwt/xlutils、openpyxl、xlwings和Pandas,涵盖读写、交互及数据分析,并提供实际应用场景,感兴趣的朋友跟随小编一起看看吧
    2025-08-08
  • NCCL深度学习Bootstrap网络连接建立源码解析

    NCCL深度学习Bootstrap网络连接建立源码解析

    这篇文章主要为大家介绍了NCCL深度学习Bootstrap网络连接建立源码解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • Python中的sort()方法使用基础教程

    Python中的sort()方法使用基础教程

    这篇文章主要介绍了Python中的sort()方法使用基础教程,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-01-01

最新评论