Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

23 Сентябрь 2021, 20:09 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Вы можете задать вопрос по LibreOffice или Apache OpenOffice без регистрации, используя форму
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Ошибка при работе с OpenOffice Calc  (Прочитано 7800 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Ryan
Участник
**
Offline Offline

Пол: Мужской
Расположение: Краснодар
Сообщений: 16


« Ответ #13950: 9 Октябрь 2011, 16:53 »

ошибка исправлена, тема закрыта
P.S. судя по всему ошибка возникала, потому что в процедуре
dispatchURL использовались устаревшие методы,
работающий код:

Код:
// ---------------------------------------------------------
Procedure dispatchURL(Docum, aUrl, scr)                                     
scr.eval("noProps=new Array()");
noProps=scr.eval("noProps");
frame = Docum.getCurrentController().getFrame();
oDisp = OpenOffice.CreateInstance("com.sun.star.frame.DispatchHelper");
oDisp.executeDispatch(frame,aUrl, "", 0, noProps);
EndProcedure

// ---------------------------------------------------------
Процедура перебросить()   
ВременныйПуть = "D:\";

Попытка
OpenOffice = Новый ComObject("com.sun.star.ServiceManager");
Исключение
Сообщить(ОписаниеОшибки() + "; OpenOffice не установлен на данном компьютере!");
Возврат;
КонецПопытки;

scr= Новый ComObject("MSScriptControl.ScriptControl");

scr.language="javascript";
scr.eval("Массив=new Array()");
Массив=scr.eval("Массив");
scr.AddObject("OpenOffice",OpenOffice);
scr.eval("Массив[0]=OpenOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue')");
scr.eval("Массив[0].Name='Hidden'");
scr.eval("Массив[0].Value=true");

DeskTop = OpenOffice.CreateInstance("com.sun.star.frame.Desktop"); 


Excel1 = DeskTop.LoadComponentFromURL("private:factory/scalc", "_blank", 0, Массив);

Excel1.lockControllers();
Excel1.addActionLock();

БазКнига = Excel1.getSheets();

Временныйпуть1 = СтрЗаменить(ВременныйПуть, "\", "/");
Временныйпуть1 = СтрЗаменить(ВременныйПуть1, " ", "%20");

Для Сч = 2 по 5 Цикл                                                   
Попытка   
Excel2= DeskTop.LoadComponentFromURL("file:///" + ВременныйПуть1 + Строка(Сч) + ".xls", "_blank", 0, Массив);
Книга = Excel2.getSheets();
Исключение
Продолжить;
КонецПопытки;

Лист = Книга.getByIndex(0);//getByName("Sheet1");
БазКнига.InsertNewByName(Строка(Сч), 0); 
БазЛист = БазКнига.getByName(Строка(Сч));
Excel2.getCurrentController().Select(Лист); 
dispatchURL(Excel2, ".uno:SelectAll", scr);
dispatchURL(Excel2, ".uno:Copy", scr);
Excel1.getCurrentController().Select(БазЛист);
dispatchURL(Excel1, ".uno:Paste", scr);

Excel2.Close(-1);
КонецЦикла;

SaveParam=Excel1.setPropertyValue("FilterName","MS Excel 97");
scr.eval("Массив[0].Name='FilterName'");
scr.eval("Массив[0].Value='MS Excel 97'");
Excel1.storeToURL("file:///" + ВременныйПуть1+"Отчет.xls",Массив);   
Excel1.unLockControllers();
Excel1.removeActionLock();

Excel1.close(-1);


Вложения = ВременныйПуть+"Отчет.xls";
Сообщить("Отчет сохранен - " + Вложения);   
Excel1 = "";
Excel2 = "";
КонецПроцедуры
Записан
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!