Возможность обработки данных в Excel с помощью Powershell - PullRequest
0 голосов
/ 21 января 2019

У меня проблема, аналогичная описанной в этой статье: Извлечение данных SQL в Excel с помощью Powershell

Мне нужно извлечь данные с сервера SQL в Excel. У меня есть 2 рабочих решения, но у каждого есть какая-то проблема:

  • Копирование данных, как в упомянутой статье, с использованием ConvertTo-CSv и Clip. Венгерские национальные символы отображаются неправильно. После конвертации в csv персонажи хороши.

  • Копирование данных строка за строкой, ячейка за ячейкой. Это решение медленное, но венгерские национальные символы показывают хорошее.

Другим решением может быть использование ADODB.recordset, поскольку в Excel есть метод CopyFromRecordset. В этом случае я не знаю правильный синтаксис:

  • в VBA: диапазон ("a1"). CopyFromRecordset rs
  • в PowerShell я пытался $ WorkSheet.Range ("a1"). CopyFromRecordset $ ($ rs)

.

$rs = new-Object -COMObject ADODB.Recordset
$rs.fields.append("col1",200,128)
$rs.open()
$rs.AddNew()
$rs.fields.item("col1").value="abcé"
$rs.fields.Item(0).Value

$Excel=New-Object -ComObject Excel.Application
$Excel.visible=1
$wb = $Excel.Workbooks.Add()
$WorkSheet = $wb.Worksheets.item(1);
$WorkSheet.Range("a1").CopyFromRecordset $($rs)

Код для теста буфера обмена:

'abcé' | clip
 Get-Clipboard


Expected result: abcé
Actual result: abc?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...