当前位置: 首页 > news >正文

使用openpyxl时的一些注意点

一、是否需要close()?

在使用 openpyxl 时,wb.save() 后一般不需要再手动调用 wb.close()。wb.save() 会自动处理文件写入和释放。

如果是使用openpyxl.load_workbook(filename, read_only=True) 打开了一个只读模式的工作簿,此时会建立文件流,需要在使用完之后调用 wb.close() 来释放资源。不然的话内存中可能还会保留一个对文件的占用。

二、在操作ws.cell()时,column可以指定字符串吗,例如‘AK’?

不可以直接使用列字母 'AK' 作为 column 参数,所以这时候需要openpyxl.utils.column_index_from_string() 把 'AK' 转换成数字列号:

from openpyxl.utils import column_index_from_stringcol_num = column_index_from_string('AK')  # AK → 37ws.cell(row=new_row, column=col_num, value='ssss')

反过来,如果有列号,想变成列字母:

from openpyxl.utils import get_column_lettercol_letter = get_column_letter(37)  # → 'AK'

三、如何排除第 1 列再找最大行

def get_real_max_row(ws):for row in reversed(range(1, ws.max_row + 1)):# 遍历该行中除第1列以外的单元格for cell in ws[row][1:]:if cell.value is not None:return rowreturn 0

四、Excel中的行和列的index是从0开始的吗?

在使用 openpyxl 处理 Excel 的时候,Excel 中的行和列索引是从 1 开始的,例如:

openpyxl.cell(row=1, column=1) 对应的是 Excel 中的单元格 A1
row=1 是第 1 行
column=1 是第 1 列(即 A 列)
column=2 是 B 列,以此类推

相关文章:

  • 1.2 腾讯校招通关指南-面试官评分标准:技术岗/产品岗核心考核点揭秘
  • 【自相关】全局 Moran’s I 指数
  • OPPO Android 移动设备日志文件目录结构及其内容分析
  • git合并分支原理
  • 适合stm32 前端adc使用的放大器芯片
  • jetson orin nano 开发板conda 的 base 环境在 shell 启动时自动激活
  • 如何解决服务器文件丢失或损坏的问题?
  • JAVA学习-Stream
  • Spring IoC与DI详解:从Bean概念到手写实现
  • Spring Batch 专题系列(四):配置与调度 Spring Batch 作业
  • 分库分表-除了hash分片还有别的吗?
  • 算法思想之分治-快排
  • Java基础 4.15
  • PCL八叉树聚类
  • Python基础语法2
  • 游戏代码编辑
  • 凸优化第2讲:凸优化建模
  • 一篇文章快速上手linux系统中存储多路径multipath的配置
  • MCP、RAG与Agent:下一代智能系统的协同架构设计
  • Cribl 中数据脱敏mask 的实验
  • 西藏艺术来到黄浦江畔,“隐秘之门”艺术展外滩三号开幕
  • 85岁眼科专家、武汉大学人民医院原眼科主任喻长泰逝世
  • 人民网评:官方轻踩刹车,智能驾驶不能“蒙眼狂奔”
  • 历史学家许福谦逝世,长期致力于魏晋南北朝史研究
  • 习近平主席东南亚三国行|元首外交硕果累累 • 一图读懂
  • 上海一季度人民币贷款增4151亿,住户存款增3134亿