Полезная информация

Юристы зарабатывают огромные деньги и славу, оперируя хорошим знанием законов. Правила форума — простой путь к успешному общению.

№113-02-2006 10:38:10

sutni
Участник
 
Группа: Members
Зарегистрирован: 13-02-2006
Сообщений: 25

Вызов Excel их FireFox

Есть желание вызывать MS Excel из FireFox для представленея неких данных в таблицах екселя.
Написал простенькое расширение, которое пытается вызвать такой код:
if (window.GeckoActiveXObject){
        var oXL=new GeckoActiveXObject("Excel.Application");       
        }
или так:
var oXL=new GeckoActiveXObject("{00024500-0000-0000-C000-000000000046}");

появляется такая ошибка:
Ошибка: uncaught exception: [Exception... "Unable to create an instance of the desired COM classCOM Error Result = 80004002"  nsresult: "0x80570039 (NS_ERROR_XPC_COM_CREATE_FAILED)"  location: "JS frame :: chrome://quasy/content/quasyOverlay.js :: go2Excel :: line 21"  data: no]
Line 21 - это как раз var oXL=new ...
Как можно побороть? Заранее спасибо.

Отсутствует

 

№214-02-2006 17:20:29

sutni
Участник
 
Группа: Members
Зарегистрирован: 13-02-2006
Сообщений: 25

Re: Вызов Excel их FireFox

Поскольку никто не отвечает, расскажу куда мне удалось продвинутся. Может после этого дадут навигацию... :))
Во-первых, изменил CLSID на 00020812-0000-0000-C000-000000000046 - соответствующий Excel2003 (он у меня и установлен).
Во-вторых, установил http://www.iol.ie/~locka/mozilla/plugin.htm#download. Но это как я понял можно было и не делать.
Код теперь выглядит так:
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");   
if (window.GeckoActiveXObject){
    var oXL=new GeckoActiveXObject("{00020812-0000-0000-C000-000000000046}");   
    alert (oXL);
    }
       
if(oXL){
    oXL.Visible = true;
    var oWB = oXL.Workbooks.Add();
    var oS = oWB.ActiveSheet;
        }

Alert возвращает "xpconnect wrapped IDispatch".
В памяти повисает Excel. Но его не видно. Ошибка происходит в строке oXL.Visible = true :
Ошибка: uncaught exception: [Exception... "Cannot modify properties of a WrappedNative"  nsresult: "0x80570034 (NS_ERROR_XPC_CANT_MODIFY_PROP_ON_WN)"  location: "JS frame :: ..........
То есть как я понимаю, я не могу изменять никаких свойств объекта. Это как-то обойти можно?
....или приговор?

PS. Под мазиллу пишу впервые. Так что принимаются все советы.

Отсутствует

 

№314-02-2006 19:00:26

Aerina
Участник
 
Группа: Extensions
Откуда: Киев
Зарегистрирован: 30-01-2006
Сообщений: 41

Re: Вызов Excel их FireFox

Я не знакома GeckoActiveXObject, так что как разобраться с ошибкой не подскажу. Но могу предложить просто пойти другим путем. http://www.iosart.com/firefox/xpcom/ - сделайте свою компоненту... тут очень хороший пример. Если  Вы просто при нажатии на кнопку тулбара(или каком-то другом событии) создадите элемент своей компоненты и передатите в нее все необходимые данные, то там с помощью COM спокойно запустите Excel.

Отсутствует

 

№415-02-2006 11:33:11

sutni
Участник
 
Группа: Members
Зарегистрирован: 13-02-2006
Сообщений: 25

Re: Вызов Excel их FireFox

Aerina пишет

Я не знакома GeckoActiveXObject, так что как разобраться с ошибкой не подскажу. Но могу предложить просто пойти другим путем. http://www.iosart.com/firefox/xpcom/ - сделайте свою компоненту... тут очень хороший пример. Если  Вы просто при нажатии на кнопку тулбара(или каком-то другом событии) создадите элемент своей компоненты и передатите в нее все необходимые данные, то там с помощью COM спокойно запустите Excel.

Большое человеческое спасибо!

Отсутствует

 

№515-02-2006 14:16:38

sutni
Участник
 
Группа: Members
Зарегистрирован: 13-02-2006
Сообщений: 25

Re: Вызов Excel их FireFox

Можно тогда ещё один вопросик?
Как в метод интерфейса передать массив? А точнее двумерный массив. Например строк.

interface IUSUExcel : nsISupports
{
  long PutTable(in string titleTable, in "НУЖЕН 2-мерный массив строк" bodyTable );
};

Ожидаются ли тут проблемы на этапе передачи данных от JS к xpcom?

Нигде не могу найти примера....

Отсутствует

 

№615-02-2006 14:50:58

Aerina
Участник
 
Группа: Extensions
Откуда: Киев
Зарегистрирован: 30-01-2006
Сообщений: 41

Re: Вызов Excel их FireFox

sutni пишет

Можно тогда ещё один вопросик?
Как в метод интерфейса передать массив? А точнее двумерный массив. Например строк.

interface IUSUExcel : nsISupports
{
  long PutTable(in string titleTable, in "НУЖЕН 2-мерный массив строк" bodyTable );
};

Ожидаются ли тут проблемы на этапе передачи данных от JS к xpcom?

Нигде не могу найти примера....

Ну, тяжело сказать... вообще-то JS - подозрительно относится к массивам... Надо искать примеры на JS - а я мало работала с этим языком. Я передавала только строчку, это получалось и возвращала строку.

Что за информацию Вам надо передать? если что-то о страничке - то не легче передать все содержимое странички... а там в компоненте его на части разложить?...

Отсутствует

 

№715-02-2006 15:18:43

sutni
Участник
 
Группа: Members
Зарегистрирован: 13-02-2006
Сообщений: 25

Re: Вызов Excel их FireFox

В принципе можно передавать длинную строку, в которую включать разделители. А С++ уже формировать массив. Но это как-то не по-человечески :)). Да и опасно.
С передачей всего содержимого страницы видится ещё больше сложностей.
Сформировать 2-х мерный массив на JS легко. Вот как описать массив в интерфейсе не понятно.

Отсутствует

 

№815-02-2006 16:21:07

sutni
Участник
 
Группа: Members
Зарегистрирован: 13-02-2006
Сообщений: 25

Re: Вызов Excel их FireFox

Ещё одна глупая просьба.
Не могу воспользоваться утилитой xpidl.exe для создания xpt-файла. Похоже, что проблема в том, что у меня нет файлов libIDL-0.6.dll и glib-1.2.dll и неоткуда их взять.
Может кто кинет ссылку. Или почтой... на sutni@mail.ru

Отсутствует

 

№915-02-2006 16:37:00

Aerina
Участник
 
Группа: Extensions
Откуда: Киев
Зарегистрирован: 30-01-2006
Сообщений: 41

Re: Вызов Excel их FireFox

http://www.mozilla.org/projects/plugins/ - посмотрите здесь  (Plugin samples in the tree) - в этом разделе одна из первых ссылок - там порыться в примерах - есть длл. Я их брала от туда

Отсутствует

 

№1015-02-2006 17:00:40

sutni
Участник
 
Группа: Members
Зарегистрирован: 13-02-2006
Сообщений: 25

Re: Вызов Excel их FireFox

http://www.mozilla.org/projects/plugins … sWin32.zip
Второй раз выручаешь. :;)  ... и это только за сегодня....

Отсутствует

 

№1116-02-2006 12:30:26

sutni
Участник
 
Группа: Members
Зарегистрирован: 13-02-2006
Сообщений: 25

Re: Вызов Excel их FireFox

Выгрузку в Excel сделал. Из локального файла всё работает замечательно. Если кому нужно поделюсь.
В виде компоненты ещё не оформлял. Хочу потестировать код и осмыслить будущую структуру компоненты.
Поэтому сейчас использую комманду
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
Столкнулся с такой проблемой: при попытке выполнить код с сервера такое сообщение:
Сценарию с http://localhost было отказано в правах: UniversalXPConnect.
Наверное в мозилле нужно какие-то настройки сделать....
Использую FireFox 1.5.0.1 из под WinXP.
Помогите.

Добавлено:
С вызовом из crome та-же история. Написал специально xul-файлик (типа посредник), в котором при открытии пытаюсь выполнить код:
function ToExcel()
{
    try {
        netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
        const cid = "@mydomain.com/XPCOMExcel/USUExcel;1";
        obj = Components.classes[cid].createInstance();
        obj = obj.QueryInterface(Components.interfaces.IUSUExcel);
        obj.OpenExcel();
             }
    window.close();
}
Cообщает то-же что и из обычного html.

Отредактировано sutni (16-02-2006 12:58:15)

Отсутствует

 

№1216-02-2006 13:15:01

sutni
Участник
 
Группа: Members
Зарегистрирован: 13-02-2006
Сообщений: 25

Re: Вызов Excel их FireFox

Нашел.
user_pref("signed.applets.codebase_principal_support", true);

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]