Имя пользователя:
Пароль:
 | Правила  

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

Ответить
Настройки темы
PowerShell - [решено] Пакетное преобразование xls ->xlsx (xls -> csv)

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


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

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


Требуется скрипт для преобразования всех файлов в определенной папке xls в xlsx (или csv).

Отправлено: 08:19, 07-07-2021

 

Забанен


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

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


Через COM Excel.Application: открыли документ, перевели в нужный формат, сохранили результат. А ежели в системе не развёрнут офисный пакет, на коленке пишется парсер ФС xls файла, конвертирующий данные таблиц в xml с последующей упаковкой в zip и сменой расширения на xlsx (в случае с csv можно использовать методы БД). И третий вариант - онлайн конверторы. curl'ом слать файлы на конвертацию, и если возвращается статус 200 (или любой иной удачный, согласно API), забрать результат также curl'ом.

Отправлено: 09:41, 07-07-2021 | #2



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

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


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


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

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


Цитата greg zakharov:
Через COM Excel.Application: открыли документ, перевели в нужный формат, сохранили результат. »
Офисный пакет установлен, проблема в том что там на месте пользователи не очень то дружат с компом/экселем. А файлов в папке много, которые требуется пересохранить - выгрузка из 1С сохраняет всегда в xls. Идеальный вариант: пользователь запускает скрипт или он отрабатывает автоматически конвертируя все файлы xls в папке в xlsx. VBA не хочу, сколько будет стоить скрипт на posh?

Отправлено: 10:22, 07-07-2021 | #3


Аватара для YuS_2

Crazy


Contributor


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

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


Цитата Ent0ma:
сколько будет стоить скрипт на posh? »
он будет бесценным (ну или пару кружек пива)
Код: Выделить весь код
param (
	$folderin = '.\TEST',
	$folderout = '.\OUT',
	$flt = '*.xls',
	$ext = '.xlsx'
)

$fldin = gi $folderin
if (!(test-path $folderout)){md $folderout|out-null}
$fldout = gi $folderout
$excel = new-object -com "Excel.Application"
dir $fldin.fullname -filter $flt -file|%{
	$workbook = $excel.workbooks.open($_.fullname)
	$newname = $fldout.fullname + '\' + $_.basename + $ext
	$workbook.saveas($newname, 51)
}
$excel.quit()

-------
scio me nihil scire. Ѫ

Это сообщение посчитали полезным следующие участники:

Отправлено: 12:57, 07-07-2021 | #4


Забанен


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

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


YuS_2, дружище, ты забыл высвободить COM, только его экземпляр закрыл.

Отправлено: 13:54, 07-07-2021 | #5


Аватара для Elven

Ветеран


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

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


YuS_2, есть же beerware license

Вообще есть вот такой вариант
Сейчас нет возможности проверить, но скорей всего все это сделать можно будет в пару команд.
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:55, 07-07-2021 | #6


Аватара для YuS_2

Crazy


Contributor


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

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


Цитата greg zakharov:
забыл высвободить COM, только его экземпляр закрыл. »
Да чего ему сделается? сессию закроют, объект попустит
Ну или добавить в конец скрипта, если принципиально:
Код: Выделить весь код
[runtime.interopservices.marshal]::releasecomobject($excel)
Цитата Elven:
есть же beerware license »
то шутка была... мне в реале хватает на пиво, чтобы за такие скрипты на пиво сшибать. Просто виртуального - можно похлебать...

-------
scio me nihil scire. Ѫ


Отправлено: 14:21, 07-07-2021 | #7


Аватара для Elven

Ветеран


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

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


YuS_2, beerware license не обязует пиво покупать, только намекает что автор кода не против этого.

Отправлено: 14:56, 07-07-2021 | #8


Ветеран


Contributor


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

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


Цитата Ent0ma:
VBA не хочу »
А vbs?
Код: Выделить весь код
BoxIn = "Z:\Box_In"
BoxInOld = "_Old.xls"

Set Book = CreateObject("Excel.Application")
Book.Visible = False 'True  ' False

With CreateObject("Scripting.FileSystemObject")
    If Not .FolderExists(BoxIn + "\" + BoxInOld) Then Call .CreateFolder(BoxIn + "\" + BoxInOld)
    
    For Each iFile In .GetFolder(BoxIn).Files
        If LCase(Right(iFile, 4)) = ".xls" And Not .FileExists(iFile + "x") Then
            With Book
                .Workbooks.Open iFile
                Call .ActiveWorkbook.SaveAs(iFile + "x", 51, , , , False)
                .ActiveWorkbook.Close
            End With
        End If
        .MoveFile iFile, BoxIn + "\" + BoxInOld + "\" + iFile.Name
    Next
End With
Book.Quit

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 07-07-2021 в 17:02.

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:56, 07-07-2021 | #9


Ветеран


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

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


Цитата Elven:
Вообще есть »
не хочет он с xls работать:
---
Exception: C:\...\PowerShell\Modules\ImportExcel\7.1.2\Public\Import-Excel.ps1:99
Line |
99 | … throw "Import-Excel does not support reading this extensi …
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Import-Excel does not support reading this extension type .xls
---

Отправлено: 17:02, 07-07-2021 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - [решено] Поиск по файлам xlsx и xls Sisin Microsoft Office (Word, Excel, Outlook и т.д.) 7 22-09-2015 15:48
PowerShell - [решено] csv to xls, xlsx firstarey Скриптовые языки администрирования Windows 3 17-03-2015 08:27
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




 
Переход