LinuxForum.Fans
Тема

Редактирование ODF

Автор: Iced 12 сообщений 3535 просмотров
#55605

Требуется разобраться, как редактируются ODF-файлы. Если конкретно, электронные таблицы *.ods (хотя принцип тут один).
Структуру ODF-файлов я в принципе понял. Это архив zip, внутри которого куча документов *.xml =) И редактируя эти xml, можно, собственно, и изменять содержимое документа.
Нет ли какого-то API, который бы всё это упростило? Редактировать текст в xml вручную занятие то ещё. =) Есть вроде какие-то средства именно для xml, слышал... Это упростит работу, но не очень уж существенно.
А нет ли API, которое работает не с xml, а напрямую с *.ods, например? Чтобы из программы одним вызовом функции можно было, к примеру... удалить ячейку, добавить ячейку, изменить содержимое, изменить форматирование, и т.п.?
Даже с xml-ками работать тоже тяжеловато, мне почему-то кажется. (хотя я не уверен, я программер начинающий, сильно ногами не бейте, если что неправильно понял).

Да, мне не требуется писать полноценный аналог openoffice =) мне требуется миниатюрное приложение... чтобы считывало что-то из таблицы, и записывало туда.

#55608

JasperReports
Статья на русском, хотя если с английским нет проблем, то лучше первая ссылка.
Хотя это и не совсем то, что ты просил...

#55615

Hvzh, пасиба =)

#55616

Iced,
Да не за что, буду рад, если помогло

#55622
mycetophylax написал:
JasperReports
Статья на русском, хотя если с английским нет проблем, то лучше первая ссылка.
Хотя это и не совсем то, что ты просил...

Могу ошибаться, но по-моему это совсем не то... судя по всему, это БД какая-то?

#55646

Не совсем. Но в твоем случае, это действительно, все равно что бульдозером грядку вскапывать. :D

P.S. Я припоминаю, что вроде бы договаривались решенные темы не закрывать. А то не поймешь, то закроете, то откроете wink .

#56067

http://opennet.ru/base/dev/libxmlforcpp.txt.html - а вот это ведь то, что мне нужно? В сочетании с libzip.
python использовать как-то совсем не хочется. Во-первых, я его не знаю (придётся тратить время на изучение), во-вторых он, извините, тормоз.
И всё-таки, что лучше использовать, libxml2 или libxml++? Что лучше? =)
И, кстати, мне нужна кроссплатформенность... кодить, разумеется, буду на линуксе, но нужно, чтобы готовая программа запускалась на оффтопике.

#56119
Iced написал:

И, кстати, мне нужна кроссплатформенность... кодить, разумеется, буду на линуксе, но нужно, чтобы готовая программа запускалась на оффтопике.

Java, но...

Iced написал:
... (придётся тратить время на изучение)...
Iced написал:

http://opennet.ru/base/dev/libxmlforcpp.txt.html - а вот это ведь то, что мне нужно? В сочетании с libzip.

Но ведь тут надо знать С++.

#56140

mycetophylax, дык C++ я знаю... не идеально, конечно, только начинаю, но лучше, чем жабу или пузон.

#56176

Ммм, запнулся на момент распаковки ods-файла.
Я так понимаю, фактически, это zip-архив. Чтобы его распаковать, нужно использовать библиотеку libzip.
Подключаю заголовок:

text
#include <zip.h>

Затем

text
int *errorp;
struct zip* zip_archive=zip_open(path,0,errorp);
zip_file content_file=zip_fopen(zip_archive,"content.xml",0);

path - строка, путь к файлу ods, открываю его, потом открываю файл content.xml. А дальше с этим файлом как работать? Через stdio? то бишь можно ли использовать все эти scanf, gets, и т.п.?
Мне его надо считать, распарсить, потом, видимо, подредактировать, и сохранить в другой архив (ведь архивы только для чтения по идее доступны).

Или я ошибаюсь, и для того, чтобы парсить xml-файл, его не нужно считывать?

#56183

Iced, для работы с xml есть куча библиотек.
От простейших вроде http://codege.ru/projects/yxml/ до навороченных вроде той же Qt
А еще чего не проверяешь errorp?
Должно быть что-то вроде
int error = 0;
... = zip_open(path,0,&error);
;)

Войдите или зарегистрируйтесь, чтобы ответить.