数字索引转Excel列名

1. 说明: 数字转excel列名, 其实和10进制数字转26进制数字差不多, 只是由于excel列名的规则和普通26进制有一些区别,所以需要特殊处理一下。

2. 方法: 在excel中A对应数字1、Z对应数字26, 所以列名转数字其实是很直观的: 现将字母换成数字, 然后用26的幂次加权即可, 比如ABC -> [1, 2, 3] -> 1*26**2 + 2*26**1 + 3, ZZ->[26, 26]-> 26 * 26**1 + 26, 和26进制不同的地方在于26进制的系数是0-25, 而这里的系数是1-26。其实不管是什么情况, 只要写出了幂次表达式,就可以按照进制转换的方法很方便的改写代码, 这里的需要做的改动就是当%26的余数为0时,需要将0变成26(因为没有系数0,只有系数26),同时将除数部分减1即可。

# 转换单个数字
def num_to_abc(num):""" 给定索引num(1开始), 返回excel中对应的ABC列名, 此函数和进制转换不一样excel列名和数字转换规则: A->1, Z->26, 系数是从1-26(不是0-25, 这是和26进制不一样的地方)列名转数字: 先将每位的字母转成该位的数字, 如ABZ -> [1, 2, 26], 然后计算加权和, 1*26**2 + 2*26 + 26数字转列名: 根据列名转数字的写法可知, 整体是按照进制转换去做, 但是需要处理余数为0时, 要改成26, 并让除数减1ps: excel列名整体上来说就是进制转换, 唯一不同的是, 它的系数是1-26, 而不是0-25, 按照拆分后的带幂次数字去处理即可"""abc_num = ''while num > 0:d, r = num // 26, num % 26if r == 0:  # 当余数是0时, 此位的值要改成26, 这是和进制转换不同的地方d, r = d - 1, 26abc_num += chr(r + ord('A') - 1)num = dreturn abc_num[::-1]# 转换一个范围内的数字
# 使用加法原则,后一个等于前一个加1,经测试此方法比用n次方法1在n=1e6时快1倍, 其实时间复杂度是一样的,只是方法1中有很多除法和取模运算。
def range_to_abc(start, end):assert start > 0 and end > startres_abcs = [num_to_abc(start)]for i in range(start + 1, end):prev_abc = res_abcs[i - start - 1][::-1]cur_abc = ''for j, c in enumerate(prev_abc):if c < 'Z':cur_abc += (chr(ord(c) + 1) + prev_abc[j + 1:])breakcur_abc += 'A'else:cur_abc += 'A'res_abcs.append(cur_abc[::-1])return res_abcs

python 数字索引转excel列名相关推荐

  1. python 数字转化excel行列_Python 3 实现数字转换成Excel列名(10进制到26进制的转换函数)...

    背景: 最近在看一些Python爬虫的相关知识,讲爬取的一些数据写入到Excel表中,当时当列的数目不确定的情况下,如何通过遍历的方式讲爬取的数据写入到Excel中. 开发环境: Python 3  ...

  2. vfp控制excel使用sort_使用Python根据索引合并Excel表

    有两张不同大小的excel表 表1:字典的选项值,2118行 表2:字典名称,405行 表1和表2有共同的列. 现在需要根据共同的列,以表1为底,将表2的值对应添加到表1的每一行. 下面是代码: 1. ...

  3. python 数字索引失败踩坑记录

    原来半角和全角输入下的数字是不一样的!!!难怪我一直索引失败 找不同: 1. 半角输入下的1 # 查看ASCII码 ord('1') 输出:49 2. 全角输入下的1 ord('1') 输出:6529 ...

  4. python报表自动化系列 - Excel单元格(Cell)索引范围对应的所有单元格

    获取指定起止索引内所有的Excel单元格索引 李俊才 邮箱:291148484@163.com [调用其他函数] Cell_A1to11(A1): 将任意范围的Excel索引表示转化为数字索引表示函数 ...

  5. python报表自动化系列 - 译码:将纯数字译码为Excel列坐标的字母索引表示形式

    python译码器 将纯数字译码为Excel列坐标的字母索引表示形式(特殊的二十六进制) 李俊才 邮箱:291148484@163.com [内容概述] 译码在一定程度上相当于查字典.对于简单的编码, ...

  6. python读取xlsx文件年月日变成数字_python转化excel数字日期为标准日期操作

    伙伴遇到一个关于excel导入数据到python中,日期变成数字而不是日期格式的问题.第一反应这个数字应该是excel里面的时间戳类似的,所以我就实验增加一天是不是对应的数字就加1.最后证明了我的想法 ...

  7. Python读取多个excel文件(删除字段、数据格式转换、dataframe多表合并)并写入ElasticSearch实战(自动创建索引、写入ElasticSearch、探索性数据分析)

    Python读取多个excel文件(删除字段.数据格式转换.dataframe多表合并)并写入ElasticSearch实战(自动创建索引.写入ElasticSearch.探索性数据分析) 目录

  8. python执行excel公式 语法_10个方法:用Python执行SQL、Excel常见任务

    10个方法:用Python执行SQL.Excel常见任务 数据从业者有许多工具可用于分割数据.有些人使用 Excel,有些人使用SQL,有些人使用Python.对于某些任务,使用 Python 的优点 ...

  9. Python中用OpenPyXL处理Excel表格

    更多内容,请访问我的 个人博客. 前言 用 Python 处理Excel表格的几个常规库: xlrd 用来读 xlwt 用来写 xlutils 用于做复制.筛选等针对文档文件的操作 这些库都不如 Op ...

  10. python对excel某一列去重-「总结篇」Python中所有的Excel操作技巧

    原标题:「总结篇」Python中所有的Excel操作技巧 Python对于Excel的操作是多种多样的,掌握了相关用法就可以随心所欲的操作数据了! 操作xls文件 xlrd(读操作): import ...

最新文章

  1. 14岁初中生3天制成勒索病毒 制作方法或自学而成
  2. MM模块操作流程及相关建议代码
  3. 解决Visual Studio 找不到报表控件、rdlc中文乱码
  4. thinkphp5 获取当前的域名
  5. EasyUI 中 MenuButton 的使用方法
  6. 怎么能把看不清的照片给看清_远视怎么矫正?需要佩戴眼镜吗?
  7. BZOJ4997 [Usaco2017 Feb]Why Did the Cow Cross the Road III
  8. python壁纸数据抓取_python 多线程爬取壁纸网站的示例
  9. struts2漏洞修复
  10. tensorflow2.报错与解决 Cannot convert a symbolic Tensor
  11. 安装浏览器的vue插件
  12. HBase 写优化之 BulkLoad 实现数据快速入库
  13. TC中的HTB队列简单创建与过滤
  14. 实力封装:Unity打包AssetBundle(四)
  15. Linux虚拟机远程连接工具
  16. Dubbo使用_尚硅谷视频学习笔记
  17. 学习单片机系列(一)单片机选型
  18. 计算机信息管理的检索步骤,信息检索策略与步骤
  19. PC是夕阳行业?你们图样图森破
  20. 一张图看懂苹果MacBook所有屏幕分辨率

热门文章

  1. 小程序 开发版 上传大小受限制
  2. 如何在excel中将数据转置
  3. (转)所谓“降维打击”到底什么意思?
  4. mysql占用CPU超过100%
  5. 耦合电感元件的相关概念
  6. 一个字形容大数据_关于大数据,你应该知道的75个专业术语
  7. Node.js meitulu图片批量下载爬虫 1.05版(Final最终版)
  8. spss 25 的pls安装
  9. Tomcat 500错误:实例化Servlet类异常
  10. R语言使用aov函数建立单因素方差分析模型、使用TukeyHSD函数采用Tukey法对各组均值的差异进行成对检验、使用plot函数可视化TukeyHSD函数的事后分析的结果、并获得的95%置信区间