Экспорт в CSV нескольких листов из электронной таблицы ODS (или XLS)

Автор kompilainenn, 2 августа 2017, 19:50

0 Пользователи и 1 гость просматривают эту тему.

kompilainenn

Опция командной строки --convert-to csv делает экспорт только первого листа. Какие есть методы экспортить несколько листов или скажем все с данными? Конечно интересует автоматизация, ручками делается всё

ps: что-то по форуму не нашел похожей темы, хотя может криво искал?
Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут

JohnSUN

Где-то когда-то кто-то подвёл итог длинной дискуссии "В общем, пишем макрос, который пробежится по всем листам заданной книги и по какому-то условию выбросит в отдельные файлы некоторые листы, суём этот макрос в какую-то из библиотек офиса и указываем этот макрос"... Не нашёл, наверное, потому, что это обсуждение было не у нас...
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

rami

Цитата: JohnSUN от  2 августа 2017, 18:12Не нашёл, наверное, потому, что это обсуждение было не у нас...
Где-то у нас было, нужно искать...

Документ CSV в принципе одностраничный и не может ничего содержать кроме текста.

economist


Option VBASupport 1
Option Compatible

Sub ExportSheetsToTXT
Open "C:\DOWNLOAD\export.txt" for output as #1
For each sh in Worksheets
For each n in sh.UsedRange.Rows
Print #1, Cells(n.row,1) & ";" & Cells(n.row,2) & ";" & Cells(n.row,3)
Next n
Next sh
Close #1
End Sub
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

kompilainenn

Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут

rami

Цитата: kompilainenn от  3 августа 2017, 09:19
а если каждый лист в отдельный файл?
Вот так:
Sub Main
Dim args(1) as new com.sun.star.beans.PropertyValue, sh
args(0).Name = "FilterName"
args(0).Value = "scalc: Text - txt - csv (StarCalc)"
args(1).Name = "FilterOptions"
args(1).Value = "44,34,0,1"

For Each sh In ThisComponent.Sheets
ThisComponent.CurrentController.setActiveSheet(sh)
ThisComponent.storeToURL("file:///Папка/для/импорта/" & sh.name & ".csv",args())  'Исправить путь к целевой папке
Next
End Sub