Скрипт для 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();
} |