Комментарии 20
Я понимаю, что я давно от жизни отстал, но для Windows описание будет? Или на документацию как запустить на оной, ссылку скиньте, пожалуйста.
+1
Все будет ровно точно так же — пейтон везде работает одинаково. Как установить PyUNO на Windows — сейчас поищу.
0
Для Windows: «Since OpenOffice1.1, PyUNO is included in the default installation.»
Вот подробнее, но для наших нужд это лишнее.
Вот подробнее, но для наших нужд это лишнее.
+1
Сейчас актуальна работа с LibreOffice :)
Хотя отличаться будет, наверно, только именами сервисов.
Хотя отличаться будет, наверно, только именами сервисов.
0
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Угу, спасибо. Не знал.
В самой заметке добавил ссылку.
А он умеет читать/изменять готовые файлы?
В самой заметке добавил ссылку.
А он умеет читать/изменять готовые файлы?
+1
НЛО прилетело и опубликовало эту надпись здесь
Да, спасибо огромное еще раз. Я почему-то сразу стал искать биндинги, когда мне потребовалось. У меня не было никаких серверных задач.
Но этот xlwt выглядит явно гораздо более разумным решением. Он, небось, напрямую с xml — через схемы преобразования — шпарит. Судя по «необходимо открыть файл, создать копию в памяти, дописывать в него, и уже его сохранять».
Но этот xlwt выглядит явно гораздо более разумным решением. Он, небось, напрямую с xml — через схемы преобразования — шпарит. Судя по «необходимо открыть файл, создать копию в памяти, дописывать в него, и уже его сохранять».
0
Было дело я тоже колдовал с экселем под линукс. Правда, остановился на xlwt и дописал поверх него утилитку для более простого построения. Может будет кому полезно: github.com/lightcaster/xlrep
0
Код с заменой нерабочий. Вот накатал скриптик, в котором всё исправлено:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
import uno
from os.path import abspath, isfile, splitext
PORT = 8100
if len(sys.argv) < 4:
print 'Usage: oreplace SEARCH REPLACE PATH'
sys.exit(0)
inputFile = sys.argv[3]
searchString = sys.argv[1]
replaceString = sys.argv[2]
localCtx = uno.getComponentContext()
localSmgr = localCtx.ServiceManager
uresolver = localSmgr.createInstanceWithContext(
"com.sun.star.bridge.UnoUrlResolver", localCtx)
ctx = uresolver.resolve( \
"uno:socket,host=localhost,port=%d;urp;StarOffice.ComponentContext" % PORT)
smgr = ctx.ServiceManager
desktop = smgr.createInstanceWithContext(
"com.sun.star.frame.Desktop", ctx)
document = desktop.loadComponentFromURL( \
uno.systemPathToFileUrl(abspath(inputFile)), "_blank", 0, tuple([]))
doc = document
if hasattr(document, 'getSheets'):
sheets = document.getSheets()
doc = sheets.getCellRangesByName(u'A1:AMJ1048576')[0]
if not hasattr(doc, 'createReplaceDescriptor'):
print 'Unknown document type'
sys.exit(1)
try:
replaceDesc = doc.createReplaceDescriptor()
replaceDesc.SearchString = searchString
replaceDesc.ReplaceString = replaceString
found = doc.replaceAll(replaceDesc)
document.store()
finally:
document.close(True)
0
упс… извините за пробелы между строками кода. В предпросмотре всё было нормально. Как это можно исправить?
0
Исправить никак, на будущее — в правом верхнем углу редактора комментария есть ссылка «html-теги». Обратите внимание там на третий пункт: строчку «source …».
Что касается поиска — я специально предложил поиск для обычного документа, не для электронной таблицы. Главное — принцип, дальше каждый уж сам извращается, как умеет.
Что касается поиска — я специально предложил поиск для обычного документа, не для электронной таблицы. Главное — принцип, дальше каждый уж сам извращается, как умеет.
0
Зарегистрируйтесь на Хабре , чтобы оставить комментарий
PyUNO — быстрое незначительное редактирование xls-отчета из Python