Автоматизация и боты

 Помощь      Поиск      Пользователи
Сайт Кибор     Программируемый кликер Кибор     Видео обучение     Заказать бот

 Страниц (1): [1]   

> Описание: Запись .xlsx файла с помощью PowerShell через канал Pipe
Kibor
Отправлено: 14 Февраля, 2021 - 14:34:14
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8095
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 355




Скрипт для PowerShell создает и записывает в .xlsx файл.
Необходим установленный на компьютере Excel
CODE:
$Excel = New-Object -ComObject Excel.Application
$Excel.Visible = $false
$WorkBook = $Excel.Workbooks.Add()
$LogiclDisk =$WorkBook.Worksheets.Item(1)
$LogiclDisk.Name = 'Логические диски'
$LogiclDisk.Cells.Item(1,1) = 'Буква диска'
$WorkBook.SaveAs('C:\Bot\1\Report.xlsx')
$Excel.Quit()
[Runtime.Interopservices.Marshal]::ReleaseComObject($Excel) | Out-Null;
Remove-Variable WorkBook, LogiclDisk, Excel;
[GC]::Collect();
echo 1


Скрипт для Кибор запуска PowerShell в фоновом режиме и выполнение данного скрипта. PowerShell запускается с Кибор через createpipeprocess

Первый пример:
При наличие русских символов в команде, необходимо строку обработать функцией w1251tod866 для конвертирования их в dos 866
CODE:
_sendpipe(w1251tod866("$LogiclDisk.Cells.Item(1,1) = ^'Название^'"));//Надо
_sendpipe("$LogiclDisk.Cells.Item(1,1) = ^'Name^'");//Не надо


CODE:
if (createpipeprocess("powershell.exe -NoLogo")))
{
_sendpipe("Set-ExecutionPolicy Unrestricted -Force");
_sendpipe("$Excel = New-Object -ComObject Excel.Application");
_sendpipe("$Excel.Visible = $True"); // если false окно не будет отображаться
_sendpipe("$WorkBook = $Excel.Workbooks.Add()");
_sendpipe("$LogiclDisk = $WorkBook.Worksheets.Item(1)");
_sendpipe("$LogiclDisk.Name = ^'Local Disk^'");
_sendpipe("$LogiclDisk.Cells.Item(1,1) = ^'Text^'");
_sendpipe("$Excel.DisplayAlerts=$False");
_sendpipe("$WorkBook.SaveAs(^'D:\MyExcel.xlsx^')");
_sendpipe("$WorkBook.Close()");
_sendpipe("$Excel.Quit()");

closepipeprocess();
}


function _sendpipe(string command)
{
string S;
sendpipe(command+"^n");
waitpipe();
getpipe(#S);
}


Второй пример (если не работает первый):
w1251tod866 использовать не надо.
CODE:
string A="$Excel = New-Object -ComObject Excel.Application;$Excel.Visible = $false;$WorkBook = $Excel.Workbooks.Add();$LogiclDisk =$WorkBook.Worksheets.Item(1);$LogiclDisk.Name = ^'Логические диски^';$LogiclDisk.Cells.Item(1,1) = ^'Буква диска^';$WorkBook.SaveAs(^'C:\Bot\1\Report.xlsx^');$Excel.Quit();[Runtime.Interopservices.Marshal]::ReleaseComObject($Excel) | Out-Null;Remove-Variable WorkBook, LogiclDisk, Excel;[GC]::Collect();echo 1;";
if (createpipeprocess("powershell.exe -Command ^""+A+"^""))
{
waitpipe();
closepipeprocess();
}
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Связка Кибор с другими программами »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 




Powered by