|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] csv to xls, xlsx |
|
PowerShell - [решено] csv to xls, xlsx
|
Пользователь Сообщения: 102 |
есть скрипт который ведет лог в csv-файл
хотелось бы реализовать это с полноценным форматированием. вижу 2 варианта: 1. так и вести лог в csv и конвертировать в xls/xlsx 2. сразу вести лог в xls всего 9 столбцов $Sheet.Cells.Item(1,1) = “дата” $Sheet.Cells.Item(1,2) = “время” $Sheet.Cells.Item(1,3) = “номер документа” $Sheet.Cells.Item(1,4) = “тип документа” $Sheet.Cells.Item(1,5) = “кадастровый номер” $Sheet.Cells.Item(1,6) = “актуальность” $Sheet.Cells.Item(1,7) = “исходный файл” $Sheet.Cells.Item(1,8) = “->” $Sheet.Cells.Item(1,9) = “результат файл” c csv все просто: |
|
Отправлено: 14:03, 16-03-2015 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать $ex = new-object -com Excel.Application $wb = $ex.Workbooks.Open("D:\12.xlsx") $ws = $wb.Worksheets.Item(1) $lf = $ws.Range("A65536").End(-4162).Row + 1 $ws.Cells.Item($lf,1) = $d $ws.Cells.Item($lf,2) = $t $ws.Cells.Item($lf,3) = $sDocNumber $ws.Cells.Item($lf,4) = $DocTypeRus $ws.Cells.Item($lf,5) = $sCadastralNumber $ws.Cells.Item($lf,6) = $sDateCreateDoc $ws.Cells.Item($lf,7) = $sSourceXmlFile.name $ws.Cells.Item($lf,8) = "->" $ws.Cells.Item($lf,9) = "" $wb.Save() $ex.Quit() |
Отправлено: 14:28, 16-03-2015 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 102
|
Профиль | Отправить PM | Цитировать Цитата Kazun:
![]() что я делаю не так ? Скрытый текст
# создаем функци ведения лога: function moves_log($message) { if (!(test-path "$RezultatPath\moves_log.xlsx")) { # Если таблицы нет # Созадём объект Excel $ex = New-Object -Com Excel.Application # Добавляем рабочую книгу $wb = $ex.Workbooks.Add() # Начинаем работать с первым листом. Для простоты обращения к нему создаём соответствующую переменную: $ws = $wb.Worksheets.Item(1) # Переименовываем лист $ws.Name = 'Лог перемещений' # Заполняем ячейки - шапку таблицы # $Sheet = $Excel.WorkSheets.Item(1) $ws.Cells.Item(1,1) = “дата” $ws.Cells.Item(1,2) = “время” $ws.Cells.Item(1,3) = “номер документа” $ws.Cells.Item(1,4) = “тип документа” $ws.Cells.Item(1,5) = “кадастровый номер” $ws.Cells.Item(1,6) = “актуальность” $ws.Cells.Item(1,7) = “исходный файл” $ws.Cells.Item(1,8) = “->” $ws.Cells.Item(1,9) = “путь” $ws.Cells.Item(1,10) = “итоговый файл” # Выделяем жирным шапку таблицы $ws.Rows.Item(1).Font.Bold = $true # Выравниваем для того, чтобы их содержимое корректно отображалось в ячейке $UsedRange = $ws.UsedRange $UsedRange.EntireColumn.AutoFit() | Out-Null # Переходим к не занятой строке $lf = $ws.Range("A65536").End(-4162).Row + 1 # Заполняем $ws.Cells.Item($lf,1) = $d $ws.Cells.Item($lf,2) = $t $ws.Cells.Item($lf,3) = $sDocNumber $ws.Cells.Item($lf,4) = $DocTypeRus $ws.Cells.Item($lf,5) = $sCadastralNumber $ws.Cells.Item($lf,6) = $sDateCreateDoc $ws.Cells.Item($lf,7) = $sSourceXmlFile.name $ws.Cells.Item($lf,8) = "->" $ws.Cells.Item($lf,9) = $RezultatPath $ws.Cells.Item($lf,10) = $OutName # Выравниваем для того, чтобы их содержимое корректно отображалось в ячейке $UsedRange = $ws.UsedRange $UsedRange.EntireColumn.AutoFit() | Out-Null $wb.Save("$RezultatPath\moves_log.xlsx") $ex.Quit() } else { # Если таблица уже существует # Созадём объект Excel $ex = new-object -com Excel.Application $wb = $ex.Workbooks.Open("$RezultatPath\moves_log.xlsx") # Делаем лист активным $ws = $wb.Worksheets.Item(1) # Переходим к не занятой строке $lf = $ws.Range("A65536").End(-4162).Row + 1 Write-Host "значения" Write-Host "$d,$t,$sDocNumber,$DocTypeRus,$sCadastralNumber,$sDateCreateDoc,$sSourceXmlFile.name),$RezultatPath,$OutName" start-sleep 5 # Заполняем $ws.Cells.Item($lf,1) = $d $ws.Cells.Item($lf,2) = $t $ws.Cells.Item($lf,3) = $sDocNumber $ws.Cells.Item($lf,4) = $DocTypeRus $ws.Cells.Item($lf,5) = $sCadastralNumber $ws.Cells.Item($lf,6) = $sDateCreateDoc $ws.Cells.Item($lf,7) = $sSourceXmlFile.name $ws.Cells.Item($lf,8) = "->" $ws.Cells.Item($lf,9) = $RezultatPath $ws.Cells.Item($lf,10) = $OutName # Выравниваем для того, чтобы их содержимое корректно отображалось в ячейке $UsedRange = $ws.UsedRange $UsedRange.EntireColumn.AutoFit() | Out-Null $wb.Save() $ex.Quit() } } |
|
Отправлено: 08:12, 17-03-2015 | #3 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать $wb.SaveAs("$RezultatPath\moves_log.xlsx")
|
Отправлено: 08:27, 17-03-2015 | #4 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Из csv в xls с помощью батника | OverSense | Скриптовые языки администрирования Windows | 1 | 13-02-2014 18:38 | |
PowerShell - [решено] Как написать скрипт для преобразования файла в формате excel .xls в формат .csv | sea707 | Скриптовые языки администрирования Windows | 9 | 03-09-2012 04:10 | |
2003/XP/2000 - [решено] Пакет обеспечения совместимости Отключить автоматическре преобразование из xlsx в xls | SANIOK_AV | Microsoft Office (Word, Excel, Outlook и т.д.) | 2 | 11-10-2011 17:29 | |
PowerShell - Сложное преобразование xls или csv файла в текстовый | tarasov.evgeny | Скриптовые языки администрирования Windows | 1 | 29-05-2011 15:04 | |
Batch XLS and XLSX Converter 2010.2.606.1260 | OSZone Software | Новости программного обеспечения | 0 | 07-06-2010 14:30 |
|