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

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

python译码器

将纯数字译码为Excel列坐标的字母索引表示形式(特殊的二十六进制)

李俊才

邮箱:291148484@163.com

【内容概述】

译码在一定程度上相当于查字典。对于简单的编码,可以通过穷举法将一种字符编码与另外一种字符编码进行对应,只要将对应的字符以一定的形式返回即可。

本文介绍一种在不断试验中进行译码的方法。简而言之,就是先通过“测试法”,获得译码完成后字母的位数,再由高往低逐位通过“测试法”获得该位的值。

【代码实现】

def num_to_Letter(num):
    bit = 1
    i = 1
    a = 0
    x = int(num) - 26**(bit-i)
    Letter = ''
    if x < 0:
        raise ValueError('error:列坐标索引的数值表示必须为一个正整数')
    if  num - 26**(bit-i) == 0:
        return 'A'
    x = num
    while x >= 0:
        if x == 0:
            a = 1            #标志位置1,表示由全A构成
        x = x - 26**(bit - i)
        i = i-1
    if a == 1:
        for k in range(abs(i)):
            Letter = Letter + 'A'
        return Letter
    Num_of_letters = abs(i)
    D = {1:'A',2:'B',3:'C',4:'D',5:'E',6:'F',7:'G',8:'H',
         9:'I',10:'J',11:'K',12:'L',13:'M',14:'N',15:'O',16:'P',
         17:'Q',18:'R',19:'S',20:'T',21:'U',22:'V',23:'W',24:'X',
         25:'Y',26:'Z',}
    alist = []
    #从最高位开始逐个确定字母
    for k in range(Num_of_letters+1):
        if k != 0:
            alist = [k] + alist
    #print('alist:',alist)
    n = num
    for k in alist:        # k 为从高位向低位的第k个字母
        i = k
        j = 1              # 用于得到 j X (26)的i次方的数字k,再将k由数字映射为字母
        while (n - j*(26**(i-1))) > 0:
            j = j + 1
        j = j - 1
        n = n - j*(26**(i-1))
        u = j
        if k == 1:
            u = u+1
        Letter = Letter + D.get(u)
    return Letter

【小结】

在Excel报表自动化实践中,该方法是很常用的。

代码供大家参考,转载请指明出处。

目录
相关文章
|
14天前
|
数据采集 存储 监控
实现自动化数据抓取:使用Node.js操控鼠标点击与位置坐标
本文介绍了如何使用Node.js和Puppeteer实现自动化数据抓取,特别是针对新闻网站“澎湃新闻”。通过设置代理IP、User-Agent和Cookie,提高爬虫的效率和隐蔽性,避免被网站封锁。代码示例展示了如何模拟鼠标点击、键盘输入等操作,抓取并整理新闻数据,适用于需要规避IP限制和突破频率限制的场景。
60 10
|
5月前
|
数据安全/隐私保护
杨老师课堂之Excel VBA 程序开发第六讲根据部门列创建工作表
杨老师课堂之Excel VBA 程序开发第六讲根据部门列创建工作表
38 0
|
3月前
|
机器学习/深度学习 数据可视化 API
Python Numpy 切片和索引(高级索引、布尔索引、花式索引)
Python Numpy 切片和索引(高级索引、布尔索引、花式索引)
45 3
|
4月前
|
索引 Python
Python中索引错误(IndexError)
【7月更文挑战第14天】
98 16
|
4月前
|
索引 Python
python 索引越界(IndexError)
【7月更文挑战第20天】
103 1
|
3月前
|
数据挖掘 数据处理 索引
python中目标数值在某一列中的索引
需要注意的是,当数值不在列表或数组中时,应妥善处理可能出现的异常情况。在Pandas中还可以使用更多复杂的条件来查找数据,这为数据分析带来了极大的便利。此外,在实际应用中,我们可能还需要考虑数值的重复问题,其中Pandas会返回所有匹配目标值的索引,而NumPy和基础列表的 `index()`则返回第一个匹配项的索引。需要根据具体应用场景做出合适的选择。
34 0
|
4月前
|
数据格式 Python
Python代码示例,读取excel表格,将行数据转为列数据。(10)
【7月更文挑战第10天】Python代码示例,读取excel表格,将行数据转为列数据。
163 2
|
3月前
|
算法 索引 Python
【Leetcode刷题Python】852. 山脉数组的峰顶索引
本文使用二分查找算法解决LeetCode "山脉数组的峰顶索引" 问题的Python实现,通过递归地缩小搜索区间来查找山脉数组的峰值索引。
30 0
|
5月前
|
数据采集 监控 搜索推荐
CRM报表在企业中的应用:分析工具与报告自动化
Zoho CRM报表汇总客户数据,以图表形式展示客户活动、销售、市场趋势,支持定制。报表功能包括数据分析、业绩评估、预测规划和监控调整。关键在于数据质量、报表定制、员工培训及持续优化。CRM报表帮助企业做决策,提升竞争力,是数字化转型的重要工具。
64 4
|
5月前
|
数据安全/隐私保护
杨老师课堂之Excel VBA 程序开发第六讲 根据制定列创建相应工作表及数据
杨老师课堂之Excel VBA 程序开发第六讲 根据制定列创建相应工作表及数据
31 1