Доброго времени суток! столкнулся с такой задачей, сестра попросила разделить строки из текстового файла (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), вопрос вот в чем, пытаться переделать этот макрос под свои задачи или же проще написать с нуля? какие будут мысли?