|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - PowerShell и Excel |
|
PowerShell - PowerShell и Excel
|
Старожил Сообщения: 173 |
Добрый день
Необходимо в консоль выводить информацию из файла excel Файл Excel это вроде базы. Каждая строка это один элемент данных. Данные об компьютере или сотруднике. Необходимо, чтобы при наборе в консоли например имени - Иванов Скрипт проходил по строкам листа - находил Иванов и отображал определенные ячейки b22, c22, k22 (это как пример, пусть это будет мобильный телефон, рабочий, адрес) Евгений |
|
Отправлено: 16:54, 05-05-2011 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать WSH - это COM, там проблем с автозачисткой не должно быть...
у меня не закрывался, но (обычно) "висело" >1 процесса EXCEL (возможно они друг друга блокировали) |
Отправлено: 16:51, 06-05-2011 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать т.к. Excel не закрывался после отработки скрипта аж до завершения оболочки, а в моем случае оболочка должна была использоваться дальше, причем в это время могли отрабатываться и другие скрипты, которые также вызывали Excel и могли висеть ранее открытые экземпляры, то решил таким вот способом:
$erroractionpreference = "SilentlyContinue" # список процессов до сорздания нашего объекта $procBefore = Get-Process excel | Select-Object -ExpandProperty Id #создаем новый объект $objExcel = New-Object -ComObject Excel.Application #делаем его видимым на момент тестирования $objExcel.visible = $True ######################################################################## # основной блок обработки данных, который в данном случае не интересен # ######################################################################## # закрываем книгу с которой работали $objWorkbook.Close() # закрываем наш экземпляр Excel "по-правильному", после чего процесс тупо висит в памяти и кушает от 12 метров оперативки $objExcel.Quit() Remove-Variable $objExcel # берем снимок процессов после запуска нашего экземпляра Excel $procAfter = Get-Process excel | Select-Object -ExpandProperty Id if ($procBefore -eq $null) # если переменная снимка процессов до создания нашего экземпляра пустая { kill (Get-Process excel | Select-Object -ExpandProperty Id) # то имеем ровно один экземпляр Excel, созданный скриптом, который смело можно убивать } else # в остальных случаях, когда у нас один и более экземпляров Excel было до создания нашего экземпляра { kill ($procAfter | Where-Object {$procBefore -notcontains $_}) # выбираем разницу между снимками до и после запуска и убиваем этот процесс } может кому пригодится ![]() |
Отправлено: 16:27, 15-11-2011 | #12 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
VBA - Помогите написать макрос в Excel, экспорт данных из Excel в Word. | E.v.g | Программирование и базы данных | 7 | 03-05-2018 22:18 | |
Система - Windows PowerShell | shoot | Программное обеспечение Windows | 13 | 27-11-2011 02:23 | |
Вопрос - applocker powershell | extorhost | Защита компьютерных систем | 0 | 12-08-2010 17:16 | |
2007 - Excel | Вычисление времени в Excel | Vowan | Microsoft Office (Word, Excel, Outlook и т.д.) | 1 | 01-02-2010 17:09 | |
Разное - PowerShell | Butunin Klim | Программирование и базы данных | 1 | 31-07-2008 18:39 |
|