using System; using unoidl.com.sun.star.lang; using unoidl.com.sun.star.uno; using unoidl.com.sun.star.frame; using unoidl.com.sun.star.beans; using unoidl.com.sun.star.awt; using unoidl.com.sun.star.container; using unoidl.com.sun.star.text; using unoidl.com.sun.star.style; namespace main { class Program { static void Main(string[] args) { // получаем контекст компонентов офиса XComponentContext xContext = uno.util.Bootstrap.bootstrap(); // получаем сервис-менеджер XMultiComponentFactory xServiceManager = (XMultiComponentFactory)xContext.getServiceManager(); // получаем экземпляр сервиса UNO Desktop // получаем интерфейс XComponentLoader Object desktop = xServiceManager.createInstanceWithContext("com.sun.star.frame.Desktop", xContext); XComponentLoader xComponentLoader = (XComponentLoader)desktop; // создаем новый документ или загружаем существующий PropertyValue[] loadProps = new PropertyValue[2]; loadProps[0] = new PropertyValue(); loadProps[0].Name = "FilterName"; loadProps[0].Value = new uno.Any("writer8"); loadProps[1] = new PropertyValue(); loadProps[1].Name = "Overwrite"; loadProps[1].Value = new uno.Any(true); XComponent xComponent = xComponentLoader.loadComponentFromURL("file:///C:/test/document.odt", "_blank", 0, loadProps); // Получаем объект XTextDocument из объекта xComponent XTextDocument xDoc = (XTextDocument)xComponent; // Получаем объект XStyleFamiliesSupplier из объекта xTextDocument XStyleFamiliesSupplier xStyleFamiliesSupplier = (XStyleFamiliesSupplier)xDoc; // Получаем объект XNameAccess, который содержит список семейств стилей XNameAccess xStyleFamilies = xStyleFamiliesSupplier.getStyleFamilies(); // Получаем список имен семейств стилей string[] styleFamilyNames = (string[])xStyleFamilies.getElementNames(); // Выводим количество семейств стилей Console.WriteLine("Number of Style Family Names: " + styleFamilyNames.Length); // Итерируем по списку имен семейств стилей и выводим имена стилей каждого семейства for (Int32 i = 0; i < styleFamilyNames.Length; i++) { string styleFamilyName = styleFamilyNames[i]; Console.WriteLine("Style Family: " + styleFamilyName); // Получаем объект XNameAccess, который содержит список стилей текущего семейства XNameAccess xStyles = (XNameAccess)xStyleFamilies.getByName(styleFamilyName).Value; // Получаем список имен стилей текущего семейства string[] styleNames = (string[])xStyles.getElementNames(); // Итерируем по списку имен стилей текущего семейства и выводим их в консоль for (Int32 j = 0; j < styleNames.Length; j++) { string styleName = styleNames[j]; Console.WriteLine(" Style: " + styleName); } } // Получаем объект документа XTextDocument xTextDocument = (XTextDocument)xComponent; //Получаем объект текста XText xText = (XText)xTextDocument.getText(); // Создаем курсор для работы с текстом XTextCursor xCursor = (XTextCursor)xText.createTextCursor(); // Выделяем весь текст в документе xCursor.gotoStart(true); xCursor.gotoEnd(true); //Получем объект XPropertySet для применения стиля текста XPropertySet xCursorProps = (XPropertySet)xCursor; //Применяем метод setPropertyValue() для установки стиля xCursorProps.setPropertyValue("ParaStyleName", new uno.Any("Title")); // получаем интерфейс XStorable для текущего документа XStorable xStorable = (XStorable)xComponent; // задаем URL для сохранения документа string saveUrl = "file:///C:/test/document.odt"; // сохраняем документ xStorable.storeAsURL(saveUrl, loadProps); // закрываем документ //xComponent.dispose(); } } }