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并发编程之进程间通信原理及实现解析

    Python并发编程之进程间通信原理及实现解析

    这篇文章主要为大家介绍了Python并发编程之进程间通信原理及实现解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • python中的&&及||的实现示例

    python中的&&及||的实现示例

    这篇文章主要介绍了python中的&&及||的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • Python3+Flask安装使用教程详解

    Python3+Flask安装使用教程详解

    这篇文章主要介绍了Python3+Flask安装使用教程详解,需要的朋友可以参考下
    2021-02-02
  • Pandas数据分析的一些常用小技巧

    Pandas数据分析的一些常用小技巧

    这篇文章主要介绍了Pandas数据分析的一些常用小技巧,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • Python OpenCV实现基于模板的图像拼接

    Python OpenCV实现基于模板的图像拼接

    基于特征点的图像拼接如果是多张图,每次计算变换矩阵,都有误差,最后可以图像拼完就变形很大,基于模板的方法可以很好的解决这一问题,本文就来和大家具体聊聊
    2022-10-10
  • python3获取url文件大小示例代码

    python3获取url文件大小示例代码

    这篇文章主要介绍了python3获取url文件大小,本文通过示例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-09-09
  • Python实现E-Mail收集插件实例教程

    Python实现E-Mail收集插件实例教程

    这篇文章主要给大家介绍了关于Python实现E-Mail收集插件的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧
    2019-02-02
  • Python数据报表之Excel操作模块用法分析

    Python数据报表之Excel操作模块用法分析

    这篇文章主要介绍了Python数据报表之Excel操作模块用法,结合实例形式分析了XlsxWriter模块的功能及简单使用方法,需要的朋友可以参考下
    2019-03-03
  • 浅谈Python大神都是这样处理XML文件的

    浅谈Python大神都是这样处理XML文件的

    这篇文章主要介绍了详解Python大神都是这样处理XML文件的,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-05-05
  • Python 字符串去除空格的五种方法

    Python 字符串去除空格的五种方法

    这篇文章主要介绍了Python 字符串去除空格的五种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03

最新评论