如何从十进制坐标(1,1)转换为PowerShell中的Excel样式坐标A1

我有一个API以十进制格式(1,1)输出Excel的坐标。 我试图从excel像(1,1)转换为十进制坐标转换为Excel中的A1,因为我有另一个API,我试图提供的坐标,只需要在经典的Excel风格坐标input,A1。

我希望能够从API的输出(100,45) ,并将其转换为CW45input到其他API

我怎样才能做到这一点?

我知道如何将这个数字转换成这个数字是自己的:

function Convert-ToLetters ([parameter(Mandatory=$true,ValueFromPipeline=$true)][int] $value) { $currVal = $value; $returnVal = ''; while ($currVal -ge 26) { $returnVal = [char](($currVal) % 26 + 65) + $returnVal; $currVal = [int][math]::Floor($currVal / 26) } $returnVal = [char](($currVal) + 64) + $returnVal; return $returnVal } 

但我无法弄清楚如何做(1,2)中的第一个数字,并忽略第二个数字,并将它们结合在一起,因为它是A2而不是(A,2)

谢谢



感谢@MikeGaruccio的帮助

最后是

 $oldCoordinates = @(1,1) $newCoordinates = "$(Convert-ToLetters $oldCoordinates[0])$($oldCoordinates[1])" 

如果我有一个input,我已经变成了像$ boo =(x,y)这样的variables其中x和y代表任何一组数字,而不是字母本身。 它如下简单:

 $oldCoordinates = @($boo) $newCoordinates = "$(Convert-ToLetters $oldCoordinates[0])$($oldCoordinates[1])" 

如果您正在处理input文件的列数相对较less且已知的情况,则可以使用简单的查找表。

 $arr = @{ A = 1 B = 2 C = 3 (etc) } $oldCoordinates = @(1,1) $newCoordinates = "$($arr[$oldCoordinates[0]])$($oldCoordiantes[1])" 

如果你远远超过了10栏,那么$ arr就会变得有点痛苦,尽pipe如此,这可能不适合大型纸张。

编辑

嗯,你照顾的困难的一部分,把它们分开是很容易的,你只是build立一个string,并填写您需要的两个值,转换后的字母和现有的行号。 如果有人需要,请将上述解决scheme留作参考。

 $oldCoordinates = @(1,1) $newCoordinates = "$(Convert-ToLetters $oldCoordinates[0])$($oldCoordinates[1])"