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

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

Ответить
Настройки темы
PowerShell - [решено] csv to xls, xlsx

Пользователь


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

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


есть скрипт который ведет лог в 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) = “результат файл”
если использовать 2-й вариант, то каким образом реализовать дописывание файла?
c csv все просто:

Код: Выделить весь код
Add-Content -Path "$RezultatPath\moves_log.csv" -Value $message

с message передаются значения
$Outlog = "$d;$t;$sDocNumber;$DocTypeRus;$sCadastralNumber;$sDateCreateDoc;$($sSourceXmlFile.name);->;"

Отправлено: 14:03, 16-03-2015

 

Ветеран


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

Профиль | Отправить 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
Благодарности: 8

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


Цитата Kazun:
Код: »
не создает сам xlsx файл
что я делаю не так ?
Скрытый текст
Код: Выделить весь код
# создаем функци ведения лога:
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
Благодарности: 861

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


$wb.SaveAs("$RezultatPath\moves_log.xlsx")
Это сообщение посчитали полезным следующие участники:

Отправлено: 08:27, 17-03-2015 | #4



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

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

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




 
Переход