- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试用 Python 编写一个函数,该函数接受列号并输出相应的 Excel 列代码(例如:5 -> “E”、27 -> “AA”)。我尝试实现此处给出的算法:http://support.microsoft.com/kb/833402 ,这是以下视觉基础:
Function ConvertToLetter(iCol As Integer) As String
Dim iAlpha As Integer
Dim iRemainder As Integer
iAlpha = Int(iCol / 27)
iRemainder = iCol - (iAlpha * 26)
If iAlpha > 0 Then
ConvertToLetter = Chr(iAlpha + 64)
End If
If iRemainder > 0 Then
ConvertToLetter = ConvertToLetter & Chr(iRemainder + 64)
End If
End Function
我的Python版本:
def excelcolumn(colnum):
alpha = colnum // 27
remainder = colnum - (alpha*26)
out = ""
if alpha > 0:
out = chr(alpha+64)
if remainder > 0:
out = out + chr(remainder+64)
return out
这在第 53 列之前都可以正常工作,结果为“A[”,如 alpha = 53//27 == 1
,因此 remainder = 53 - 1*26 == 27
表示第二个字符 chr(64+27)
将为“[”。我错过了什么吗?我的 VBA 技能很差,所以这可能是问题所在。
编辑:我正在使用 Python 3.3.1
最佳答案
Microsoft 公式不正确。我敢打赌他们从来没有测试过超过 53 个。当我在 Excel 中亲自测试它时,它给出了与您相同的错误答案。
我的做法是这样的:
def excelcolumn(colnum):
alpha, remainder = colnum // 26, colnum % 26
out = "" if alpha == 0 else chr(alpha - 1 + ord('A'))
out += chr(remainder + ord('A'))
return out
这并不是说它假定从 0 开始的列号,而 VBA 代码则假定从 1 开始。
如果您需要扩展超过 701 列,您需要稍微不同的内容,如评论中所述:
def excelcolumn(colnum):
if colnum < 26:
return chr(colnum + ord('A'))
return excelcolumn(colnum // 26 - 1) + chr(colnum % 26 + ord('A'))
关于python - 我是否遗漏了一些东西,或者这个用于计算 Excel 列字符的 Microsoft 算法是否不正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20548830/
我正在尝试运行某人给我的一些 C++ 代码。起初有一个指向 istream 文件的断开链接,我通过添加包含路径修复了这个问题: C:\Program Files (x86)\Embarcadero\R
谁能告诉我如何防止 .git 目录的内容被上传到 PyPi。我的 MANIFEST.in 看起来像这样: global-include *.py *.js *.rst *.html *.css *.l
最近在 typescript 项目的VSCode中遇到如下情况: 文件:some-interface.ts // no import statements have been skipped. Thi
为我找到这个问题的合适标题有点困难,所以也许这个例子会澄清我的问题。 我正在发出 ajax 请求以将一些变量从 JS 传递到 PHP。这些变量之一是带有一些选项的 URL,即 https://www.
我是一名优秀的程序员,十分优秀!