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.drawing; using unoidl.com.sun.star.awt; using unoidl.com.sun.star.sheet; using unoidl.com.sun.star.container; 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); //Получаем объект документа XSpreadsheetDocument xDoc = (XSpreadsheetDocument)xComponent; //Получаем объект XDrawPagesSupplier для обеспечения доступа к объекту рисунка XDrawPagesSupplier xSheetSupplier = (XDrawPagesSupplier)xDoc; //Получаем объект XDrawPages XDrawPages xDP = xSheetSupplier.getDrawPages(); XIndexAccess xIA = (XIndexAccess)xDP; //Получаем объект коллекции форм XShapes xShapes = (XShapes)xIA.getByIndex(0).Value; XMultiServiceFactory xServiceFactory = (XMultiServiceFactory)xDoc; //Создаем объект GraphicObjectShape через XMultiServiceFactory XShape xShape = (XShape)xServiceFactory.createInstance("com.sun.star.drawing.GraphicObjectShape"); //Получаем доступ к свойствам xShape XPropertySet xProps = (XPropertySet)xShape; //Путь к изображению string path_qr_img = "file:///C:/test/test.jpg"; //Устанавливаем размер и позицию изображения Size size = new Size(); Point position = new Point(); size.Width = 10000; size.Height = 10000; position.X = (int)(0.9 * (10000 - size.Width)); position.Y = (int)(0.5 * (15000 - size.Width)); xShape.setSize(size); xShape.setPosition(position); xProps.setPropertyValue("GraphicURL", new uno.Any(path_qr_img)); //Добавляем изображение с установленными параметрами xShapes.add(xShape); //Создаем объект EllipseShape через XMultiServiceFactory XShape xShapeEllipse = (XShape)xServiceFactory.createInstance("com.sun.star.drawing.EllipseShape"); //Получаем доступ к свойствам xShapeEllipse XPropertySet xPropsEllipse = (XPropertySet)xShapeEllipse; //Устанавливаем размер и позицию эллипса Size sizeEllipse = new Size(); Point positionEllipse = new Point(); sizeEllipse.Width = 10000; sizeEllipse.Height = 10000; positionEllipse.X = (int)(0.9 * (30000 - size.Width)); positionEllipse.Y = (int)(0.5 * (15000 - size.Width)); xShapeEllipse.setSize(sizeEllipse); xShapeEllipse.setPosition(positionEllipse); //Устанавилвает красный цвет эллипса xPropsEllipse.setPropertyValue("FillColor", new uno.Any(0xFF0000)); //Добавляем эллипс с установленными параметрами xShapes.add(xShapeEllipse); // получаем интерфейс XStorable для текущего документа XStorable xStorable = (XStorable)xComponent; // задаем URL для сохранения документа string saveUrl = "file:///C:/test/document.ods"; // сохраняем документ xStorable.storeAsURL(saveUrl, loadProps); // закрываем документ //xComponent.dispose(); } } }