Требуется разобраться, как редактируются ODF-файлы. Если конкретно, электронные таблицы *.ods (хотя принцип тут один).
Структуру ODF-файлов я в принципе понял. Это архив zip, внутри которого куча документов *.xml =) И редактируя эти xml, можно, собственно, и изменять содержимое документа.
Нет ли какого-то API, который бы всё это упростило? Редактировать текст в xml вручную занятие то ещё. =) Есть вроде какие-то средства именно для xml, слышал... Это упростит работу, но не очень уж существенно.
А нет ли API, которое работает не с xml, а напрямую с *.ods, например? Чтобы из программы одним вызовом функции можно было, к примеру... удалить ячейку, добавить ячейку, изменить содержимое, изменить форматирование, и т.п.?
Даже с xml-ками работать тоже тяжеловато, мне почему-то кажется. (хотя я не уверен, я программер начинающий, сильно ногами не бейте, если что неправильно понял).
Да, мне не требуется писать полноценный аналог openoffice =) мне требуется миниатюрное приложение... чтобы считывало что-то из таблицы, и записывало туда.
Редактирование ODF
JasperReports
Статья на русском, хотя если с английским нет проблем, то лучше первая ссылка.
Хотя это и не совсем то, что ты просил...
Hvzh, пасиба =)
Iced,
Да не за что, буду рад, если помогло
JasperReports
Статья на русском, хотя если с английским нет проблем, то лучше первая ссылка.
Хотя это и не совсем то, что ты просил...
Могу ошибаться, но по-моему это совсем не то... судя по всему, это БД какая-то?
http://opennet.ru/base/dev/libxmlforcpp.txt.html - а вот это ведь то, что мне нужно? В сочетании с libzip.
python использовать как-то совсем не хочется. Во-первых, я его не знаю (придётся тратить время на изучение), во-вторых он, извините, тормоз.
И всё-таки, что лучше использовать, libxml2 или libxml++? Что лучше? =)
И, кстати, мне нужна кроссплатформенность... кодить, разумеется, буду на линуксе, но нужно, чтобы готовая программа запускалась на оффтопике.
И, кстати, мне нужна кроссплатформенность... кодить, разумеется, буду на линуксе, но нужно, чтобы готовая программа запускалась на оффтопике.
Java, но...
... (придётся тратить время на изучение)...
http://opennet.ru/base/dev/libxmlforcpp.txt.html - а вот это ведь то, что мне нужно? В сочетании с libzip.
Но ведь тут надо знать С++.
mycetophylax, дык C++ я знаю... не идеально, конечно, только начинаю, но лучше, чем жабу или пузон.
Ммм, запнулся на момент распаковки ods-файла.
Я так понимаю, фактически, это zip-архив. Чтобы его распаковать, нужно использовать библиотеку libzip.
Подключаю заголовок:
#include <zip.h>Затем
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-файл, его не нужно считывать?
Iced, для работы с xml есть куча библиотек.
От простейших вроде http://codege.ru/projects/yxml/ до навороченных вроде той же Qt
А еще чего не проверяешь errorp?
Должно быть что-то вроде
int error = 0;
... = zip_open(path,0,&error);
;)