2016-11-29 4 views
1

У меня есть API, который выводит координаты для excel в десятичном формате (1,1). Я пытаюсь преобразовать из десятичных координат для excel like (1,1), который нужно преобразовать в A1 в excel, так как у меня есть другой API, к которому я пытаюсь предоставить координаты, которые принимают только входные данные классических координат стиля excel , A1.Как преобразовать из десятичной координаты (1,1) в Excel Style Coordinate A1 в powershell

Я хочу, чтобы быть в состоянии взять на себя выход из API (100,45) и преобразовать его в CW45 для ввода в другой 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) и игнорировать второй номер и объединить их вместе в конце концов, для того, чтобы быть А2 вместо того, чтобы (а, 2)

Благодаря



Благодаря @MikeGaruccio за помощь

финал

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

и если у меня есть вход, который я превратился в переменную как $ бу = (х, у) с х и у, представляющий любой набор чисел, а не сами буквы; это так же просто, как:

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

Таким образом, вы вызываете эту функцию следующим образом: 'Convert-ToLetters 1.2'? – restless1987

ответ

1

Простая таблица поиска будет работать, если вы имеете дело с входными файлами, которые имеют относительно небольшой и известное число столбцов.

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

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

Если вы идете далеко за пределами 10 столбцов или так $ обр становится немного боли, чтобы произвести хотя так что это не может быть идеальным для больших листов.

Редактировать

Ahh вы позаботились о жесткой части, отделяя их довольно легко, ваш просто строит строку и заполнение ее два значений вам нужны, преобразованные буквы для колонны, а существующий номер строки. оставляя решение выше для справки в случае, если это кому-то нужно.

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

Большое спасибо, вы удивительный – AdilZ

+0

Какой вывод вы получаете от первого API? Это строка или массив? –

+0

... его прекрасный ... у меня был просто массивный мозг ... при чрезмерном компрометировании чего-то очень простого ... просто нужно было вставить переменную в нужное место ..... Спасибо, хотя – AdilZ