![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Пакетное преобразование xls ->xlsx (xls -> csv) |
|
|
PowerShell - [решено] Пакетное преобразование xls ->xlsx (xls -> csv)
|
Новый участник Сообщения: 2 |
Требуется скрипт для преобразования всех файлов в определенной папке xls в xlsx (или csv).
|
|
Отправлено: 08:19, 07-07-2021 |
Забанен Сообщения: 793
|
Через COM Excel.Application: открыли документ, перевели в нужный формат, сохранили результат. А ежели в системе не развёрнут офисный пакет, на коленке пишется парсер ФС xls файла, конвертирующий данные таблиц в xml с последующей упаковкой в zip и сменой расширения на xlsx (в случае с csv можно использовать методы БД). И третий вариант - онлайн конверторы. curl'ом слать файлы на конвертацию, и если возвращается статус 200 (или любой иной удачный, согласно API), забрать результат также curl'ом.
|
Отправлено: 09:41, 07-07-2021 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 2
|
Профиль | Отправить PM | Цитировать Цитата greg zakharov:
|
|
Отправлено: 10:22, 07-07-2021 | #3 |
Crazy Сообщения: 1235
|
Профиль | Отправить PM | Цитировать Цитата Ent0ma:
![]() 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() |
|
------- Отправлено: 12:57, 07-07-2021 | #4 |
Забанен Сообщения: 793
|
YuS_2, дружище, ты забыл высвободить COM, только его экземпляр закрыл.
|
|
Отправлено: 13:54, 07-07-2021 | #5 |
Ветеран Сообщения: 992
|
Профиль | Сайт | Отправить PM | Цитировать YuS_2, есть же beerware license
Вообще есть вот такой вариант Сейчас нет возможности проверить, но скорей всего все это сделать можно будет в пару команд. |
Отправлено: 13:55, 07-07-2021 | #6 |
Crazy Сообщения: 1235
|
Профиль | Отправить PM | Цитировать Цитата greg zakharov:
![]() Ну или добавить в конец скрипта, если принципиально: Цитата Elven:
![]() |
||
------- Отправлено: 14:21, 07-07-2021 | #7 |
Ветеран Сообщения: 992
|
Профиль | Сайт | Отправить PM | Цитировать YuS_2, beerware license не обязует пиво покупать, только намекает что автор кода не против этого.
|
Отправлено: 14:56, 07-07-2021 | #8 |
Ветеран Сообщения: 2735
|
Профиль | Отправить PM | Цитировать Цитата Ent0ma:
А 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
|
Профиль | Отправить PM | Цитировать Цитата Elven:
--- 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 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Разное - [решено] Поиск по файлам 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 |
|