Лучший отвечающий
Создание сценария, который переводит .xls в .csv

Вопрос
-
Добрый день. Буду рад помощи.
Итак, есть база,в ней около 1000 документов в xls формате. Для загрузки в SP2012 папку нужно первести в формат CSV.
Скажите, пожалуйста, можно ли написать какой-ть батник или еще что-то,чтобы делать это было не так тяжело?Проще говоря, переводить автоматически?
- Перемещено Dmitriy VereshchakMicrosoft contingent staff, Moderator 25 марта 2015 г. 14:14 Из Win7
25 марта 2015 г. 12:43
Ответы
-
Как то так :
$ExcelWB = new-object -comobject excel.application
Get-ChildItem -Path c:\folder -Filter "*.xls" | ForEach-Object{
$Workbook = $ExcelWB.Workbooks.Open($_.Fullname)
$newName = ($_.Fullname).Replace($_.Extension,".csv")
$Workbook.SaveAs($newName,6)
$Workbook.Close($false)
}
$ExcelWB.quit()Печенкин Николай
- Предложено в качестве ответа lokise 25 марта 2015 г. 14:43
- Помечено в качестве ответа KazunEditor 29 марта 2015 г. 6:45
25 марта 2015 г. 12:57
Все ответы
-
Как то так :
$ExcelWB = new-object -comobject excel.application
Get-ChildItem -Path c:\folder -Filter "*.xls" | ForEach-Object{
$Workbook = $ExcelWB.Workbooks.Open($_.Fullname)
$newName = ($_.Fullname).Replace($_.Extension,".csv")
$Workbook.SaveAs($newName,6)
$Workbook.Close($false)
}
$ExcelWB.quit()Печенкин Николай
- Предложено в качестве ответа lokise 25 марта 2015 г. 14:43
- Помечено в качестве ответа KazunEditor 29 марта 2015 г. 6:45
25 марта 2015 г. 12:57 -
Как то так :
$ExcelWB = new-object -comobject excel.application
Get-ChildItem -Path c:\folder -Filter "*.xls" | ForEach-Object{
$Workbook = $ExcelWB.Workbooks.Open($_.Fullname)
$newName = ($_.Fullname).Replace($_.Extension,".csv")
$Workbook.SaveAs($newName,6)
$Workbook.Close($false)
}
$ExcelWB.quit()
Печенкин Николай
Записал вот что
$ExcelWB = new-object -comobject excel.application
Get-ChildItem -Path C:\Беспалевная папка\DSR\Продажи -Filter "*.xls" | ForEach-Object{
$Workbook = $ExcelWB.Workbooks.Open($_.Fullname)
$newName = ($_.Fullname).Replace($_.Extension,".csv")
$Workbook.SaveAs($newName,6)
$Workbook.Close($false)
}
$ExcelWB.quit(Ошибка:
Отсутствует ">" в вызове метода.
+ CategoryInfo : ParserError: (CloseParenToken:TokenId) [], ParentContainsErrorRecordException
строка:7 знак:24
+ $ExcelWB.quit($ExcelWB <<<< = new-object -comobject excel.application
+ FullyQualifiedErrorId : MissingEndParenthesisInMethodCall25 марта 2015 г. 13:25 -
- Изменено Vector BCOModerator 25 марта 2015 г. 14:29
- Предложено в качестве ответа Dmitriy VereshchakMicrosoft contingent staff, Moderator 25 марта 2015 г. 14:30
- Отменено предложение в качестве ответа Mansitto 26 марта 2015 г. 5:00
25 марта 2015 г. 14:28Модератор -
Вы забыли скобку закрыть -- $ExcelWB.quit( -- $ExcelWB.quit(). Только что проверил, все работает.
Печенкин Николай
25 марта 2015 г. 14:34 -
Вы забыли скобку закрыть -- $ExcelWB.quit( -- $ExcelWB.quit(). Только что проверил, все работает.
Печенкин Николай
Да. Работает.Спасибо. Но е сть одно но. У меня несколько тысяч файлов. По этому скрипту обрабатывается только 1. Как можно реализовать обработку хотя бы 500 файлов?- Изменено Mansitto 26 марта 2015 г. 5:04
26 марта 2015 г. 5:00 -
Добрый день.
Вы делаете что то не то... Скрипт берет все файлы по одному по пути C:\Беспалевная папка\DSR\Продажи
с расширением xls и пересохраняет. Т.е. ВСЕ файлы. Либо напутали с путем, либо с расширением. На картинке результат прохода.
Печенкин Николай
26 марта 2015 г. 5:18 -
Добрый день.
Вы делаете что то не то... Скрипт берет все файлы по одному по пути C:\Беспалевная папка\DSR\Продажи
с расширением xls и пересохраняет. Т.е. ВСЕ файлы. Либо напутали с путем, либо с расширением. На картинке результат прохода.
Печенкин Николай
26 марта 2015 г. 5:21 -
Добрый день
Поменяйте в скрипте -Filter "*.xls" на -Filter "*.xlsx"
Печенкин Николай
26 марта 2015 г. 5:23 -
И опять же. Создал специально папку c:\folder,удалил все xlsx,оставил xls.
Вывожу
$ExcelWB = new-object -comobject excel.application
Get-ChildItem -Path c:\folder -Filter "*.xls" | ForEach-Object{
$Workbook = $ExcelWB.Workbooks.Open($_.Fullname)
$newName = ($_.Fullname).Replace($_.Extension,".csv")
$Workbook.SaveAs($newName,6)
$Workbook.Close($false)
}
$ExcelWB.quit()и ничего.
попробовал добавить еще xlsx
Вывожу
$ExcelWB = new-object -comobject excel.application
Get-ChildItem -Path c:\folder -Filter "*.xls","*.xlsx" | ForEach-Object{
$Workbook = $ExcelWB.Workbooks.Open($_.Fullname)
$newName = ($_.Fullname).Replace($_.Extension,".csv")
$Workbook.SaveAs($newName,6)
$Workbook.Close($false)
}
$ExcelWB.quit()так же ничего
26 марта 2015 г. 5:23 -
Добрый день
Поменяйте в скрипте -Filter "*.xls" на -Filter "*.xlsx"
Печенкин Николай
Да, пробовал. Не помогает,и добавлял новый, к xls26 марта 2015 г. 5:25 -
Добрый день.
Я прям не знаю как вы делаете, вот, только что проверил )
$ExcelWB = new-object -comobject excel.applicationGet-ChildItem -Path c:\folder -Filter "*.xlsx" | ForEach-Object{
$Workbook = $ExcelWB.Workbooks.Open($_.Fullname)
$newName = ($_.Fullname).Replace($_.Extension,".csv")
$Workbook.SaveAs($newName,6)
$Workbook.Close($false)
}
$ExcelWB.quit()Только что пришло в голову ))) а Excel то умеет открывать xlsx на машине на которой запускаете ?
Печенкин Николай
- Изменено lokise 26 марта 2015 г. 6:01 Добавление
26 марта 2015 г. 5:55 -
Добрый день.
Я прям не знаю как вы делаете, вот, только что проверил )
$ExcelWB = new-object -comobject excel.applicationGet-ChildItem -Path c:\folder -Filter "*.xlsx" | ForEach-Object{
$Workbook = $ExcelWB.Workbooks.Open($_.Fullname)
$newName = ($_.Fullname).Replace($_.Extension,".csv")
$Workbook.SaveAs($newName,6)
$Workbook.Close($false)
}
$ExcelWB.quit()Только что пришло в голову ))) а Excel то умеет открывать xlsx на машине на которой запускаете ?
Печенкин Николай
26 марта 2015 г. 8:13 -
Ну результат в предыдущем посте. У меня работает
Печенкин Николай
26 марта 2015 г. 8:31 -
Ну результат в предыдущем посте. У меня работает
Печенкин Николай
Теперь вообще перестало работать26 марта 2015 г. 8:49 -
Я дал вам рабочий скрипт, больше не знаю чем помочь )
Печенкин Николай
26 марта 2015 г. 9:44