Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - PowerShell и Excel

Ответить
Настройки темы
PowerShell - PowerShell и Excel

Старожил


Сообщения: 173
Благодарности: 4

Профиль | Отправить PM | Цитировать


Добрый день

Необходимо в консоль выводить информацию из файла excel
Файл Excel это вроде базы. Каждая строка это один элемент данных. Данные об компьютере или сотруднике.
Необходимо, чтобы при наборе в консоли например имени - Иванов
Скрипт проходил по строкам листа - находил Иванов и отображал определенные ячейки b22, c22, k22 (это как пример, пусть это будет мобильный телефон, рабочий, адрес)


Евгений

Отправлено: 16:54, 05-05-2011

 

Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


WSH - это COM, там проблем с автозачисткой не должно быть...
у меня не закрывался, но (обычно) "висело" >1 процесса EXCEL (возможно они друг друга блокировали)

Отправлено: 16:51, 06-05-2011 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 3
Благодарности: 2

Профиль | Отправить 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



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - PowerShell и Excel

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход