1.打开excel表格

import openpyxl                                      # 导入模块wb = openpyxl.load_workbook('ce.xlsx')                             # 打开对应ce.xlsx文档
wb = openpyxl.load_workbook('ce.xlsx', data_only=True)             # data_only=True可以读取excel公式的值sheet = wb['Sheet1']            # 指定名称
sheet = wb.worksheets[0]        # 读取第一张表单A=sheet["B7"].value              # 读取单元格值
sheet['A1'] = 'Hello world!'     # 写入单元格值wb.save('ce.xlsx')             # 对需要保存写入内容的workbook
wb.close()                    # 对程序中只读的workbook

2.新建excel表

from openpyxl import Workbookwb = Workbook()
TT = wb.active
TT.title = 'Sheet1'
# TT2 = wb.create_sheet("Sheet2", 1)   # 位置顺序,0代表最前,1,2,3代表位置TT['A1'] = '111'
# TT2['A1'] = '222'wb.save('张志萍-线下客户-冯博文-X.X云途.xlsx')  # 将新建的表格,命名后保存

读取表单

1.读取制定表单

sheet = wb['Sheet1']            # 指定表单名称

2.(推荐)以按顺序读取表单

sheet = wb.worksheets[0]        # 读取第一张表单
sheet = wb.worksheets[1]        # 读取第二张表单

3.获得excel下所有的表单

all_sheet = wb.sheetnames
print(all_sheet)>> ['Sheet12', '士大夫']

判断表单最大行数,结束位置:

sheet.max_row将为您提供工作表中最大的行数.sheet.max_column最大列数
从openpyxl 2.4版本开始,您还可以访问各个行和列,并使用它们的长度来回答问题.
len(ws[‘A’])

aa = sheet.max_row
print(aa)
>> 23
bb = sheet.max_column
print(bb)
>> 40
print(len(sheet['A']))
>> 23

推荐多方法断点最大长度和10次空值

jx_10 = 0
jz_10 = 0
ji = 4
while True:num = sheet["A{}".format(ji)].valuesku = sheet["D{}".format(ji)].valueprint(f"{one_file}:{sku}:{num}")hebing = (one_file, sku, num)self.max_list.append(hebing)# 判断1:出现10次无内容空格,将打断读取if num == None and sku == None:jx_10 += 1if jx_10 == 10:break# 判断2:出现10次_-,将打断读取if sku == "_-":jz_10 += 1if jz_10 == 10:break# 判断3:openpyxl给出的最大行数if ji == max_ji:print('---打断该循环:{}'.format(ji))breakji += 1

读取excel表格图片和把图片保存到excel表中

读取excel表格图片保存到本地

存在的问题1:图片【左上角】必须在单元格里,不要压到边框,右下角超出边框不受影响。(技巧将左上角移入框内即可),若出现:多张图左上角都在一个相同单元格内,则只读取最上层的一张图片

存在的问题2:

由于原始数据中存在照片未采集的记录,但是提取到的数据中这些记录都有对应的照片,原来image_loader = SheetImageLoader(ws)每次读完不会清空字典,所以就会把上一个文件中对应行的照片读取到当前文件的这一行,经过搜索查找发现是openpyxl-image-loader的问题,相关issues地址:images should not be static variable of SheetImageLoader 。所以在每次循环结束将image_loader 清空即可,添加这行代码:

image_loader._images.clear() # 循环读取多个excel记得加清空字典

from openpyxl import load_workbook
from openpyxl_image_loader import SheetImageLoaderpath = r'D:\python_code\订单分拣系统'   # Excel文件路径
saveDir = "D:\python_code\订单分拣系统\\tu"  # 图片存储路径wb = load_workbook(path + '\蒋春-线下-3.11 - 副本.xlsx')  # Excel文件名ws = wb.worksheets[0]                                # 读取第一张表单image_loader = SheetImageLoader(ws)
num = ws.max_row                                        # 总行数,我也不知道为什么是row
print(num)for i in range(4, num+1):   # 从第2行开始,总行数要+1try:image = image_loader.get('B'+str(i))     # C列的图片image.show()# ws['Z{}'.format(i)] = image# ws.add_image(image, 'Z{}'.format(i))image.save(saveDir + str(i) + ".jpg")    # 以Ai为名,存图片Ci# 排除没有图片,或图片超出单元格的情况except ValueError:print("caonm这一行没有图片:", i)wb.save(path + '\蒋春-线下-3.11 - 副本.xlsx')                         # 将新建的表格,命名后保存'''
测试
image=image_loader.get('C2')  # 提取C2中的图片
image.show()
'''

把图保存到excel表中

from openpyxl import Workbook, load_workbook
from openpyxl.drawing.image import Image# wb = Workbook()
wb = load_workbook('蒋春-线下-3.11 - 副本.xlsx')  # Excel文件名
sheet = wb.active# 设置文字图片单元格的行高列宽
column_width = 12.25
row_height = 80.10sheet.column_dimensions['Z'].width = column_width  # 修改列D的列宽
sheet.row_dimensions[6].height = row_height  # 修改行3的行高img = Image('tu7.jpg')
newsize = (90, 90)
img.width, img.height = newsize  # 这两个属性分别是对应添加图片的宽高sheet.add_image(img, 'Z4')wb.save('蒋春-线下-3.11 - 副本.xlsx')                         # 将新建的表格,命名后保存

常规技巧写法:

1.以数值选择表单
sheet = wb.worksheets[0]  # 读取第一张表单2.多处打断点,执行完成运行
max_ji = sheet.max_row  # 最大行数jx_10 = 0
jz_10 = 0
ji = 4
while True:num = sheet["A{}".format(ji)].valuesku = sheet["D{}".format(ji)].value# 判断1:出现10次无内容空格,将打断读取if num == None and sku == None:jx_10 += 1if jx_10 == 10:break# 判断2:出现10次_-,将打断读取if sku == "_-":jz_10 += 1if jz_10 == 10:break# 判断3:openpyxl给出的最大行数if ji == max_ji:print('---打断该循环:{}'.format(ji))breakji += 1

解决无法读取xls

import win32com.client as win32fname = "D:\python_code\订单分拣系统\合并ts\龙-3.10刘-散单.xls"
# fname = "合并ts\龙-3.10刘-散单.xls"
excel = win32.gencache.EnsureDispatch('Excel.Application')
wb = excel.Workbooks.Open(fname)wb.SaveAs(fname+"x", FileFormat=51)                  # FileFormat = 51 is for .xlsx extension
wb.Close()                                           # FileFormat = 56 is for .xls extension
excel.Application.Quit()                             # 后缀名的大小写不通配,需按实际修改:xls,或XLS

openpyxl生成的带有公式的表格,再次读取公式为None解决方案:

在生成的代码下写解决代码,在源头解决该问题

from win32com.client import Dispatchdef just_open(filename):xlApp = Dispatch("Excel.Application")xlApp.Visible = FalsexlBook = xlApp.Workbooks.Open(filename)xlBook.Save()xlBook.Close()'--- filename路径要求绝对路径,不然会报错 ---'
filename = "D:\python_code\裁片图归类\Test\张志萍-线下客户-冯博文-4.14云途.xlsx"
just_open(filename)

openpyxl库操作excel表格相关推荐

  1. Python3-excel文档操作(四):利用openpyxl库处理excel表格:将数据进行可视化展示在Excel中

    1.简介: openpyxl不仅提供了将数据一行列的形式对应到Excel表格中,以及相关的添加,删除,获取等操作: 还提供了将数据进行图形化展示的相关组件(类),使得数据图形化在excel表格中的展示 ...

  2. Python3-excel文档操作(一):利用openpyxl库处理excel表格:excel表格的创建和数据的写入和读取excel

    1. 简介 在最初处理excel表格时,我用的是xlwt和wlrd,表格后缀是.xls.但是,在处理时发现,一个sheet的记录长度如果超过65535,就写入不进去了. 后来,就采用openpyxl库 ...

  3. Python使用openpyxl库操作Excel之(一)创建并保存一个Excel文件

    ①安装openpyxl库 打开cmd,输入 pip install openpyxl 命令即可. ②创建并保存一个Excel文件 import openpyxl #生成一个 Workbook 的实例化 ...

  4. Python使用openpyxl库操作Excel之(二)访问已有的Excel文件

    ①指定路径打开Excel文件 使用openpyxl.load_workbook()方法来访问文件,括号内参数为文件的指定路径. 运行结果: <class 'openpyxl.workbook.w ...

  5. 使用openpyxl去操作Excel表格

    对表格的数据写操作: from openpyxl import Workbook wb=Workbook()w1=wb.create_sheet('index',0) # w1["E4&qu ...

  6. qt 使用 xlsx库操作excel表格(代码准确性未验证)

    Demo: #include"xlsxdocument.h"#include "xlsxformat.h" #include "xlsxcellran ...

  7. python openpyxl操作Excel表格

    原创:未经允许不得转载,转载需标明出处 打算分为两个部分: 第一部分为:操作Excel表格 第二部分为:操作Excel图表 现在发布为第一部分内容 在最近的项目中的使用到了提取Android帧率日志, ...

  8. C#底层库--操作Excel帮助类(读取、导出表格)

    系列文章 C#底层库–记录日志帮助类 本文链接:https://blog.csdn.net/youcheng_ge/article/details/124187709 C#底层库–MySQL脚本自动构 ...

  9. 新技能 | 使用python代码来高效操作Excel表格 (文末赠书5本)

    新技能 | 使用python代码来高效操作Excel表格 (文末赠书5本) 在日常学习和工作中,少不了要跟Excel表格打交道.而我们作为程序猿,深知代码编程给人带来的便捷性,那我们怎么样使用代码来操 ...

最新文章

  1. CSharpGL(42)借助帧缓存实现渲染到纹理(RenderToTexture)
  2. java 复制Map对象(深拷贝与浅拷贝)
  3. java笔试题大全带答案_java笔试题大全带答案(经典11题)
  4. 已知相关系数求解联合分布律
  5. 卸载Microsoft Edge浏览器
  6. HDU2122 Ice_cream’s world III 【最小生成树】
  7. 最全5G手机芯片简史
  8. 小甲鱼C++快速入门学习笔记
  9. 智能指针的标准之争:Boost vs. Loki (转)
  10. CAD快速打印(批量打印)PDF/DWF/JPG/PNG\EPS/PLT:任意尺寸、纯命令
  11. 短视频处理LanSoEditor-SDK之抠图和动画设计
  12. 计算机基础- -认识内存
  13. Android系统设置settings应用学习(二)--源代码解析
  14. 大工2021年11月份《电气制图与CAD》课程设计离线作业
  15. oracle查询员工员工部门领导领导部门,oracle多表查询之经典面试题
  16. RTK固定解什么意思
  17. 台积电1nm,有新进展
  18. VQA系列论文(三)
  19. mysql副本集_mongodb分片+副本集总览
  20. 单片微型计算机实验指导,《单片微型计算机与接口技术》实验指导书..doc

热门文章

  1. 外汇平台的搭建方法及注意事项
  2. Kolin之面向对象-1
  3. 手写一个promise用法_手写一个 Promise
  4. Maven clean install 跳过单元测试
  5. 厉害了!和网易大佬的技术面谈,大厂直通车!
  6. (转)中国IP业的尴尬处境,IP业务的难点
  7. 关于狮子管理狼群的方法
  8. 企业即时通讯的市场格局
  9. npm安装模块或运行项目异常的解决办法
  10. 如何自建微信外卖平台_微信外卖软件怎么搭建需要多少钱