Скрипт PowerShell для автоматизации ввода данных в электронную таблицу OpenOffice Calc - PullRequest
0 голосов
/ 05 июня 2009

Я хотел бы иметь возможность автоматизировать ввод данных в электронную таблицу Open Office, используя сценарий PowerShell, так же, как Excel можно автоматизировать с помощью PowerShell (см. Этот пример Сценарист ). Это возможно?

Спасибо, MagicAndi

1 Ответ

3 голосов
/ 04 июля 2009

Возможно использование привязок UNO CLI. К сожалению, Powershell плохо справляется с прокси-объектами, поэтому вам нужно использовать отражение. Например,

[System.Reflection.Assembly]::LoadWithPartialName('cli_basetypes')
[System.Reflection.Assembly]::LoadWithPartialName('cli_cppuhelper')
[System.Reflection.Assembly]::LoadWithPartialName('cli_oootypes')
[System.Reflection.Assembly]::LoadWithPartialName('cli_ure')
[System.Reflection.Assembly]::LoadWithPartialName('cli_uretypes')
$localContext = [uno.util.Bootstrap]::bootstrap()
$multiComponentFactory = [unoidl.com.sun.star.uno.XComponentContext].getMethod('getServiceManager').invoke($localContext, @())
$desktop = [unoidl.com.sun.star.lang.XMultiComponentFactory].getMethod('createInstanceWithContext').invoke($multiComponentFactory, @('com.sun.star.frame.Desktop', $localContext))
$calc = [unoidl.com.sun.star.frame.XComponentLoader].getMethod('loadComponentFromURL').invoke($desktop, @('private:factory/scalc', '_blank', 0, $null))
$sheets = [unoidl.com.sun.star.sheet.XSpreadsheetDocument].getMethod('getSheets').invoke($calc, @())
$sheet = [unoidl.com.sun.star.container.XIndexAccess].getMethod('getByIndex').invoke($sheets, @(0))
$cell = [unoidl.com.sun.star.table.XCellRange].getMethod('getCellByPosition').invoke($sheet.Value, @(0,0))
[unoidl.com.sun.star.table.XCell].getMethod('setFormula').invoke($cell, @('A value in cell A1.'))

Вы также можете попробовать AODL , который должен быть намного проще в использовании, но не похоже, что он недавно обновился.

...