У меня есть программа, которая создает файл CSV.Python UNO (libreoffice): Как включить авто фильтры для листа
Теперь я хотел бы использовать Python UNO сценарий, который должен сделать несколько вещей:
1.) открыть файл CSV в электронной таблице
2.) включить автоматический фильтр для всех столбцов
3.) создать макрос и добавить его в документ
4.) сохраните файл как файл ODS
Этот вопрос касается только 2.)
1.) работает
за 3.) я, наверное, создать еще один вопрос 1.) работает (с pyoo и с unotools)
Мои шаги:
I запуск вручную:
libreoffice --accept='socket,host=localhost,port=2202;urp;' --norestore --nologo --nodefault
Мой питон скрипт:
С pyoo
import pyoo
# Step 0) connect to UNO bridge
desktop = pyoo.Desktop('localhost', 2002)
# Step 1) open the doc and get the sheet
# This works only if the field separator is a comma.
# I don't know how for example to specify tab as separator instead
doc = desktop.open_spreadsheet('tst.csv')
# I see the spreadsheet opening
sheet = doc.sheets[0] # I get an object of type Sheet
# Step2) set autofilter for active sheet
# no idea how to do
# Step3) create a macro and add it to the document
# no idea how to do but will create another question as
# soon as step2 is solved
# Step 4) save the sheet
doc.save("tst_pyoo.ods")
Или с unotools
import unotools
from unotools.component.calc import Calc
from unotools.unohelper import convert_path_to_url
# Step 0) connect to UNO bridge
context = unotools.connect(unotools.Socket('localhost', 2002))
# Step 1) open document
doc = Calc(ctx, convert_path_to_url('tst.csv')
# I see the spreadsheet opening
sheet = doc.get_sheet_by_index(0)
# I get an object of type unotools.component.calc.Spreadsheet
# Step2) set autofilter for active sheet
# no idea how to do
# Step3) create a macro and add it to the document
# no idea how to do but will create another question as
# soon as step2 is solved
# Step 4)
doc.store_to_url(convert_path_to_url("tst_unotools.ods"))
Заранее спасибо за любые отзывы
Размышляя о следующем вопросе, будет ли макрос в шаге 3 написан на Basic или Python? –
либо все будет в порядке. Предпочтение для python, но Basic в порядке. Макрос будет довольно простым. – gelonida
Obe больше комментариев. Если бы я мог выполнить шаг 3, а затем выполнить макрос, то макрос мог бы выполнить настройку автофильтра. Не очень элегантный, но и потенциальное решение. – gelonida