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.sheet; using unoidl.com.sun.star.container; using uno.util; using unoidl.com.sun.star.reflection; using uno; 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("calc8"); loadProps[1] = new PropertyValue(); loadProps[1].Name = "Overwrite"; loadProps[1].Value = new uno.Any(true); XComponent xComponent = xComponentLoader.loadComponentFromURL("file:///C:/test/document.ods", "_blank", 0, loadProps); // получаем интерфейс XStorable для текущего документа XStorable xStorable = (XStorable)xComponent; //Создание объекта xToolkit XToolkit xToolkit = (XToolkit)xServiceManager.createInstanceWithContext("com.sun.star.awt.Toolkit", null); // Получаем интерфейс XWindowPeer XWindowPeer xWP = xContext as XWindowPeer; // Получаем интерфейс XMessageBoxFactory для создания диалогового окна XMessageBoxFactory xMB = (XMessageBoxFactory)xToolkit; // Получаем интерфейс XSpreadsheetDocument для работы с таблицами XSpreadsheetDocument xDoc = (XSpreadsheetDocument)xComponent; // Получаем интерфейс XSpreadsheets для работы с листами XSpreadsheets xSheets = xDoc.getSheets(); // Получаем интерфейс XIndexAccess для получения количества листов XIndexAccess xSheetIA = (XIndexAccess)xSheets; // Получаем количество листов Int32 sheetCount = xSheetIA.getCount(); string sheetCountString = sheetCount.ToString(); string numberOfSheets = "Number of sheets: " + sheetCountString; // Создаем диалоговое окно с сообщением XMessageBox xMessageBox = xMB.createMessageBox(xWP, MessageBoxType.MESSAGEBOX, MessageBoxButtons.BUTTONS_OK, "Title", numberOfSheets); xMessageBox.execute(); for (Int32 i = 0; i < xSheetIA.getCount(); ++i) { //Итерируем по листам и выводим их имя в диалоговое окно var xSheetInterface = xSheetIA.getByIndex(i).Value; XNamed xSheetName = (XNamed)xSheetInterface; string sheetName = xSheetName.getName(); XMessageBox xMB1 = xMB.createMessageBox(xWP, MessageBoxType.MESSAGEBOX, MessageBoxButtons.BUTTONS_OK, "Title", sheetName); xMB1.execute(); } // задаем URL для сохранения документа string saveUrl = "file:///C:/test/document.ods"; // Сохранение документа xStorable.storeAsURL(saveUrl, loadProps); //xComponent.dispose(); } } }