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

How to convert from decimal coordinate (1,1) to Excel Style Coordinate A1 in powershell

我有一个 API 以十进制格式 (1,1) 输出 excel 的坐标。我正在尝试从 excel 的十进制坐标转换,例如 (1,1) 转换为 excel 中的 A1,因为我有另一个 API,我试图向其提供仅接受经典 excel 样式坐标 A1.

输入的坐标

我希望能够从 API (100,45) 中获取输出并将其转换为 CW45 要输入到另一个 API

我怎样才能做到这一点?

我知道当数字是 BY ITSELF 时如何转换为字母:

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])"

如果我有一个输入,我已经把它变成了一个变量,比如 $boo = (x,y) 其中 x 和 y 代表任何一组数字,而不是字母他们自己;就这么简单:

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

如果您处理的输入文件的列数相对较小且已知,则简单查找 table 即可。

$arr = @{
  A = 1
  B = 2
  C = 3
  (etc)
}

$oldCoordinates = @(1,1)
$newCoordinates = "$($arr[$oldCoordinates[0]])$($oldCoordiantes[1])"

如果您超过 10 列左右,那么生成 $arr 会有点麻烦,所以这可能不适合大工作表。

编辑

啊,你解决了困难的部分,将它们分开很容易,你只需构建一个字符串并用你需要的两个值填充它,即列的转换字母和现有行号。留下上面的解决方案以备不时之需。

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