单元格拆分

def get_index(capital):
"""
大写字母(Excel列头)转数字
:param capital: 'A' --> 0, 'AA' --> 26
:return: int
"""
number = 0
capital = capital.upper()
for char in capital:
number = number * 26 + ord(char) - ord('A') + 1
return number - 1

需注意xlrd的版本,只支持xls(version > 2.x),既支持xls又支持xlsx(version < 2.x)

读取整列

import xlrd

def read_col(io, sheet, cell='A1'):
"""
读取列
:param io: Excel文件路径
:param sheet: 读取哪一张表,str, int eg: 'Sheet1' or 0
:param cell: 从哪一个单元格开始读取
:return: value --> list
"""
wb = xlrd.open_workbook(io)
if isinstance(sheet, str):
ws = wb.sheet_by_name(sheet)
elif isinstance(sheet, int):
ws = wb.sheet_by_index(sheet)
else:
raise TypeError('sheet must be int or str, not %s' % type(sheet))
pos_col, pos_row = re.findall('[A-Z]+|[0-9]+', cell)
col_index = get_index(pos_col)
value = ws.col_values(col_index, start_rowx=int(pos_row) - 1)
if value:
return value
return ''

读取整行

def read_row(io, sheet, cell='A1'):
"""
读取行
:param io: Excel文件路径
:param sheet: 读取哪一张表,str, int eg: 'Sheet1' or 0
:param cell: 从哪一个单元格开始读取
:return: value --> list
"""
wb = xlrd.open_workbook(io)
if isinstance(sheet, str):
ws = wb.sheet_by_name(sheet)
elif isinstance(sheet, int):
ws = wb.sheet_by_index(sheet)
else:
raise TypeError('sheet must be int or str, not %s' % type(sheet))
pos_col, pos_row = re.findall('[A-Z]+|[0-9]+', cell)
col_index = get_index(pos_col)
value = ws.row_values(col_index, start_colx=int(pos_row) - 1)
if value:
return value
return ''

最新文章

  1. Texture Filter中的Bilinear、Trilinear以及Anistropic Filtering
  2. 如何在ubuntu中启用SSH服务
  3. 获取滚动条ScrollBar宽度
  4. 黄聪:PHP 防护XSS,SQL,代码执行,文件包含等多种高危漏洞
  5. [MODx] 3. Working with chunks, TV, Category
  6. iphone6S“玫瑰金”的秘密——阳极氧化
  7. Idea学习笔记
  8. linux下源码安装apache服务
  9. Qt Quick鼠标事件处理、键盘、计时器
  10. Java读取ini配置
  11. JavaScript数组基础及实例
  12. 【学习总结】Git学习-GIT工作流-千峰教育(来自B站)
  13. postfix - SPF 防发件人欺骗
  14. 002_soa_zk处理经验总结
  15. 1-tomcat简介
  16. strlen函数的汇编实现分析
  17. 切图js
  18. nginx新建nginx_fzjh.conf文件,不使用默认配置文件
  19. tail 命令(转)
  20. HOJ 2317 Pimp My Ride(状态压缩DP)

热门文章

  1. Spring Boot 3.0横空出世,快来看看是不是该升级了
  2. NET-async-await是否会创建新线程
  3. OpenMP 原子指令设计与实现
  4. PHP转Go实践:xjson解析神器「开源工具集」
  5. GDOI 2021 PJ 总结
  6. Vue32 插槽
  7. Listary 文件搜索工具
  8. CNCF社区首个!KubeEdge达到软件供应链SLSA L3等级
  9. 可视化的容器镜像的图形管理工具Portainer【强烈推荐】
  10. Portainer功能使用之开启远程访问