Автоматизация OpenOffice Calc на 1С Ключевые слова: UNO, OpenOffice, Calc, OpenDocument, Array, ODF, OpenXML
OpenOffice
Основная проблема при работе с 7.7 - это проблема передачи массивов через COM.
Здесь предлагается, вероятно, наилучшее решение этой проблемы.
Оно базируется на идее и коде smаhаrbА на Нью-Территории 1С.
scr = СоздатьОбъект("MSScriptControl.ScriptControl");
scr.language = "javascript";
scr.eval("Массив=new Array()");
Массив = scr.eval("Массив");
scr.AddCode("function SetItem(ind,val){Массив[ind]=val}");
ServiceManager=СоздатьОбъект("com.sun.star.ServiceManager");
scr.AddObject("ServiceManager",ServiceManager);
Desktop = ServiceManager.createInstance("com.sun.star.frame.Desktop");
Document = Desktop.LoadComponentFromURL("private:factory/scalc", "_blank", 0, Массив);
Листы = Document.getSheets();
Лист = Листы.getByIndex(0);
Для к = 0 По 10 Цикл
Лист.getCellByPosition(0,к).value = к;
КонецЦикла;
SaveParam = scr.Eval("ServiceManager.Bridge_GetStruct('com.sun.star.beans.PropertyValue')");
SaveParam.Name = "FilterName";
SaveParam.Value = "MS Excel 97";
scr.CodeObject.SetItem(0,SaveParam);
Document.storeToURL("file:///c:/Test.xls",Массив);
По адресу http://1c.proclub.ru/modules/mydownloads/personal.php?cid=5&lid=6573
можно найти первые наброски по разработке библиотеки классов 1С++ для автоматизации OO.
Очень подробный хелп + примеры по автоматизации OO через UNO можно изучить, скачав SDK:
http://api.openoffice.org/SDK/index.html
Существует инструмент Nice Office Access, который призван упростить достаточно сложную объектную модель ОО
(но он, похоже, предназначен для разработки прилозений ОО на Ява)
http://ubion.ion.ag/loesungen/004niceofficeaccess
Библиотека, упрощающая доступ к данным Open Office Calc. Предоставляет automation интерфейс, схожий с интерфейсом Excel.Application, что позволяет использовать созданные для Microsoft Excel продукты в среде OpenOffice.org с минимальными модификациями.
http://triteh.ru/xls1c/index.php
Среди библиотек непосредственой работы с OpenDocument можно отметить AODL (для .Net 1.1)
http://wiki.services.openoffice.org/wiki/AODL
Пример создания ODS файла с использованием AODL на C#:
using System;
using AODL;
using AODL.Document.Content.Tables;
namespace AodlTest
{
class MainClass
{
public static void Main(string[] args)
{
AODL.Document.SpreadsheetDocument sd;
sd = new AODL.Document.SpreadsheetDocument();
sd.New();
Table table = new Table(sd,"Table1","");
sd.TableCollection.Add(table);
Cell cell = table.createCell();
cell.OfficeValueType = AODL.Document.SpreadsheetDocuments.Tables.Style.OfficeValueTypesFloat;
cell.OfficeValue = "2.1";
table.InsertCellAt(2,3,cell);
sd.SaveTo("output.ods");
}
}
}
OO на компьютере не требуется, т.к. происходит непосредственное создание документа ODS.
Office 2007
SDK for Open XML Formats - работа с файлами Office 2007 без Office из своих приложений
Требует .Net. Размер ДЛЛ - 200 Кб. требует .NET 3.0
Все остальное - хороший хелп
http://www.microsoft.com/downloads/thankyou.aspx?familyId=ad0b72fb-4a1d-4c52-bdb5-7dd7e816d046&displayLang=en
Следуюший макрос использует специально оставленную товарищами
из Майкрософт возможность бесконечно долгого бесплатного исполйзования Эксель 2007.
Сохранение документов отключено (будет выдаваться окно активации).
Но для ВБА- разработчика (есть экспорт ВБА обьектов) и использования Эксель: составил отчет через ОЛЕ, распечатал и забыл - будет вполне достаточно.
Dim WExcel
Set WExcel = WScript.CreateObject("Excel.Application")
WExcel.Visible = True
WExcel.Workbooks.Add()
Sun ODF Plugin 1.0 for Microsoft Office
The Sun ODF Plug in for Microsoft Office gives users of Microsoft Word, Excel and Powerpoint the ability to read, edit and save to the ISO-standard Open Document Format. The ODF Plug in is available as a free download from the Sun Download Center (SDLC).
http://javashoplm.sun.com/ECom/docs/Welcome.jsp?StoreId=8&PartDetailId=ODF-WIN-G-F&TransactionId=noreg
|