Скрипт для автоматического открытия OpenOffice.org с параметрами

2 октября 2009
Рубрика: Заметки
Теги: , ,

Zeboton

В одном из моих проектов для обмена достаточно большим объёмом данными между компьютером пользователя и WEB-приложением используется CSV-файл с следующими характеристиками:
Кодировка — UTF-8.
Разделитель поля — точка с запятой ( ; ).
Разделитель текста — пустая строка (ничего не используется).

Со всех сторон (и клиентской, и серверной) всё хорошо работает, но есть один пунктик, который очень сильно достаёт тех кто работает с файлом — каждый раз при открытии файла в OpenOffice.org 3 Calc (Электронные таблицы) постоянно запрашивается кодировка файла и разделители. Напрягает.

После обращения на несколько ресурсов с вопросом как это можно автоматизировать, меня совершенно справедливо отправили на форум компании ИнфраРесурс, и там почти сразу некий добрый человек smaharbA предложил простое и изысканное решение моего вопроса.

Я в начале думал, что OpenOffice.org 3 Calc нужно передать параметры кодировки и разделителей через командную строку, а оказалось это делается через макрос.

Для создания макроса откройте OpenOffice.org 3 Calc и выберите в меню Сервис — Макросы — Управление макросами — OpenOffice.org Basic…
OpenOffice.org 3 Calc Создание макроса — Меню // MeAndUbuntu.ru

В открывшемся окне выберите пункт Мои макросы — Standard и щёлкните на кнопке Создать, расположенной в правой колонке с кнопками.

В новом окне удалите все строки, кроме первой, и вставьте на их место следующий код:
Sub OpenCSV(f)
dim a(1) As new com.sun.star.beans.PropertyValue
a(0).Name = "FilterName"
a(0).Value = "Text - txt - csv (StarCalc)"
a(1).Name = "FilterFlags"
a(1).Value = "59,,76"
StarDesktop.LoadComponentFromURL(ConvertToURL(f), "_blank", 0, a )
End Sub

В строке «a(1).Value = «59,,76»» «59» означает символ точка с запятой, а «76» кодировку — UTF8. Так что если у вас другая кодировка CSV файла или другие разделители, то цифры будут другие. (Спрашивать какие цифры подходят вам нужно не здесь, а в теме, где получил ответ я)

В результате у вас должно получиться что-то типа этого:
OpenOffice.org 3 Calc Создание макроса — Редактирование // MeAndUbuntu.ru

OpenOffice.org 3 Calc Cоздание макроса — Список // MeAndUbuntu.ru

Теперь макрос создан, пора создать скрипт, который бы открывал файл.
В Linux он может иметь любое название, главное не забыть сделать файл исполняемым. Содержимое файла:

soffice -calc "macro:///Standard.Module1.OpenCSV(/home/serg/tmp/test.csv)"

Вместо /home/serg/tmp/test.csv нужно подставить свой полный путь к файлу.

В Windows нужно сначала создать текстовый файл (.txt). Записать в него:

start soffice -calc "macro:///Standard.Module1.OpenCSV(c:\test.csv)"

Вместо c:\test.csv нужно указать полный путь до файла CSV, а этот текстовый файл переименовать в файл с расширением .bat.

Теперь при двойном щелчке на этот файл будет автоматически открываться OpenOffice.org 3 Calc, а в нём готовый для работы CSV файл.

И на последок, ещё раз хотелось бы выразить благодарность г-ну smaharbA за помощь.

Похожие записи: