ПЕРЕМ ОБЪЕКТ: oCalcDoc,Document,scr,Desktop,ServiceManager,Листы,Лист,SaveParam,COB,ячейка,Курсор,Адрес,Массив
// Описания общих переменных и функций
ВЫЧИСЛИТЬ//(СТРОКА: колонка,строка,ячейка)
// Алгоритм расчета отчета
ХРАНИТЬ(ф)
ф=ВЫБОР_ФАЙЛА("")
// создаем объект Массив для дальнейшей работы
scr = СОЗДАТЬ_ОБЪЕКТ("MSScriptControl.ScriptControl");
scr.language = "javascript";
scr.eval("Массив=new Array()");
Массив = scr.eval("Массив");
scr.AddCode("function SetItem(ind,val){Массив[ind]=val}");
// собственно открытие документа
oServiceManager = СОЗДАТЬ_ОБЪЕКТ("com.sun.star.ServiceManager")
oCalcDoc = oServiceManager.createInstance("com.sun.star.frame.Desktop")
// приведем имя файла к нужному виду
Имф="file:///"+ЗАМ(ЗАМ(ф," ","%20"),"\","/")
// отркоем документ
//хотелось бы чтобы он был скрытым
Document = oCalcDoc.LoadComponentFromURL(Имф, "_default",0,Массив);
Листы = Document.getSheets();
Лист = Листы.getByIndex(0);
Курсор=Лист.createCursorByRange(Лист)
//определим диапазон заполненных ячеек
Курсор.gotoStartOfUsedArea(ДА);
Курсор.gotoEndOfUsedArea(ДА);
Адрес=Курсор.RangeAddress
Строка=Адрес.EndRow()
Графа=Адрес.EndColumn()
// ОТЛАДКА(Строка,Графа)
ЦИКЛ ДЛЯ(Стр=0,Строка)
ЦИКЛ ДЛЯ(Гр=0,Графа)
ячейка=Лист.GetCellByPosition( Гр,Стр)
// ОТЛАДКА(ячейка.Type)
ПОПЫТКА
ЕСЛИ ячейка.Type=0 ТО ПРОДОЛЖИТЬ КОНЕЦ_ЕСЛИ
ЕСЛИ ячейка.Type=1 ТО
ЯЧЕЙКА![Гр,Стр]=ячейка.Value
КОНЕЦ_ЕСЛИ
ЕСЛИ ячейка.Type=2 ТО
ЯЧЕЙКА![Гр,Стр]=ячейка.String
КОНЕЦ_ЕСЛИ
ИСКЛЮЧЕНИЕ
ОТЛАДКА(Стр,Гр)
КОНЕЦ_ПОПЫТКИ
КОНЕЦ_ЦИКЛА
КОНЕЦ_ЦИКЛА
oServiceManager.ЗАКРЫТЬ
КОНЕЦ