Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

16 Апрель 2021, 20:42 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Вы можете задать вопрос по LibreOffice или Apache OpenOffice без регистрации, используя форму
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Экспорт столбцов в несколько текстовых файлов  (Прочитано 510 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Zoldic
Новичок
*
Offline Offline

Сообщений: 3


« Ответ #57476: 13 Февраль 2021, 08:51 »

Доброго времени суток! столкнулся с такой задачей, сестра попросила разделить строки из текстового файла (txt) записи расположены строками по два значения и разделены знаком ; образуют как бы по два столбца, все это вручную делается легко, но когда файлов тысячи, то задача не так тривиальна. В начале нужно открыть через LibreOffice calc текстовый файл, потом разделить текст, сделал шаблон, кидаю файл в рабочую область и открывается импорт текста, заранее настроенный шаблон на разделение точка с запятой, жму ок и имею два столбца с текстом, первая задача выполнена, вторая задача нужно столбцы сохранить по отдельности в разные текстовые файлы с расширением (txt) по разным папкам и эти две задачи нужно объединить и автоматизировать. Решил записать макрос на LibreOffice, все настроил, но не тут то было, действия записываются только с одним столбцом, забросил эту идею. Нашел множество макросов с нужными мне функциями, но они для exel, синтаксис похож, но многие команды libreoffice не поддерживает, нашел похожий макрос написанный для libreoffice:
Код:
Sub ExportAllToCsv
document = ThisComponent
 
' Use the global string tools library to generate a base filename for each CSV
' based on the current prefixless filename
GlobalScope.BasicLibraries.loadLibrary("Tools")
BaseFilename = Tools.Strings.GetFileNameWithoutExtension(document.getURL(), "/")
 
' Work out number of sheets for looping over them later.
Sheets = document.Sheets
NumSheets = Sheets.Count - 1
 
' Set up a propval object to store the filter properties
Dim Propval(1) as New com.sun.star.beans.PropertyValue
Propval(0).Name = "FilterName"
Propval(0).Value = "Text - txt - csv (StarCalc)"
Propval(1).Name = "FilterOptions"
Propval(1).Value ="59,34,0,1,1"   'ASCII  59 = ;  34 = "

For I = 0 to NumSheets
' For each sheet, assemble a filename and save using the filter
SheetName = Sheets(I).Name
document.getCurrentController.setActiveSheet(Sheets(I))
Filename = "/tmp/" + BaseFilename + "." + SheetName + ".csv"
FileURL = convertToURL(Filename)
document.StoreAsURL(FileURL, Propval())
Next I
 
' Libreoffice thinks our filename is now the last-exported-CSV filename, so close.
Msgbox "Files saved as /tmp/" + BaseFilename + ".*.csv. You'll need to close the spreadsheet now."
End Sub

но проблема в том что он не разделяет столбцы на отдельные файлы и не сохраняет в формат(txt) а в (csv), вопрос вот в чем, пытаться переделать этот макрос под свои задачи или же проще написать с нуля? какие будут мысли?

* SHOP (2).txt (2181.44 Кб - загружено 15 раз.)
Записан
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!