Я изучал возможность использования LibreOffice SDK для редактирования файлов ODF (документы Writer и Calc/таблицы ODS) и был весьма поражен, когда наткнулся на это в исходном примере:
/** Connect to a running office that is accepting connections.
@return The ServiceManager to instantiate office components. */
private XMultiServiceFactory connect( String [] args )
{
m_xContext = uno.util.Bootstrap.bootstrap();
return (XMultiServiceFactory) m_xContext.getServiceManager();
}
Вы серьезно ожидаете, что установите LibreOffice на любой компьютер (вполне возможно, сервер) и подключитесь к его работающему экземпляру только для редактирования электронной таблицы? Если так, то я думаю, что это абсурд. Существуют библиотеки, позволяющие редактировать электронные таблицы Excel (например, EPPlus и NPOI), которые позволяют просто открыть файл в библиотеке, а не запускать Excel в фоновом режиме. Есть ли способы сделать что-то подобное для файлов LibreOffice?
Это есть, но написано на Java. Я не знаю о порте C#.
Похоже, это коммерческая библиотека на C#, но я ее не использовал:
https://www.independentsoft.de/odf/index.html
Библиотека Essential File Format SyncFusion имеет некоторую поддержку документов формата Oasis:
https://help.syncfusion.com/file-formats/introductionhttps://help.syncfusion.com/file-formats/docio/word-to-odt
Вам также может оказаться полезной эта статья, в которой рассказывается о взаимодействии более низкого уровня с форматом файла ODF:
https://www.codeproject.com/Articles/38425/How-to-Read-and-Write-ODF-ODS-Files-OpenDocument-2
Наконец, этот пример кода может оказаться полезным для чтения электронной таблицы:
https://weblogs.asp.net/gunnarpeipman/reading-opendocument-spreadsheets-using-c
Спасибо за это. Я нахожу довольно ироничным, что, несмотря на широко разрекламированную открытость стандарта ODF, обещающую разработчикам более легкую работу с этими документами, все же, вероятно, гораздо проще программно редактировать электронную таблицу Excel, если вы не используете Java.