|
Проблемы с созданием COM соединения с Open Office | ☑ | ||
---|---|---|---|---|
0
ampfer11
30.03.16
✎
10:14
|
Если коротко, то необходимо обработки загрузки в ТЧ документа Заказ Покупателя из Excel перевести на Open Office. Конф-я УПП 1.3
COM соединение c Excel работает нормально. Меняю на Open Office //Эксел = Новый COMОбъект("Excel.Application"); Офис = Новый ComОбъект("TOpenOffice.Bridge"); Лист = Офис.Workbooks.Open(Файл).Sheets(НомерЛиста); На второй строке получаю ошибку. Ошибка при вызове конструктора (ComОбъект): -2147221005(0x800401F3): Недопустимая строка с указанием класса В Инете нашел решение, нужно подцепить библиотеку comcntr.dll из BIN каталога релиза конфигурации. Кладу библиотеку в корень С: и запускаю командную строку RegSrv.exe "C:\comcntr.dll" Выдает ошибку "Проверьте, что двоичный файл хранится на указанном пути или запустите отладку.." Почему ReSrv.exe (из Windows\System32 не видит параметр не пойму??? Помогите разобраться pls |
|||
1
lubitelxml
30.03.16
✎
10:19
|
по поводу регистрации comcntr.dll - попробуй её руками поставить как службу (без regSrv.exe)
|
|||
2
Patriot1C
30.03.16
✎
10:21
|
ServiceManager = Новый COMОбъект("com.sun.star.ServiceManager");
Desktop = ServiceManager.CreateInstance("com.sun.star.frame.Desktop"); Desktop.getCurrentFrame().getContainerWindow().setVisible(Ложь); //невидимым основное окно. //установим параметры - не показывать таблицу Calc Параметры = Новый COMSafeArray("VT_DISPATCH", 1); Свойство = ServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue"); Свойство.Name = "Hidden"; Свойство.Value = true; Параметры.SetValue(0,Свойство); Document = Desktop.LoadComponentFromURL("file:///" + ИмяФайла, "_blank", 0, Параметры); Состояние("Обработка файла Office Calc ..."); Листы = Document.getSheets(); Лист = Листы.getByIndex(НомерЛистаCalc-1); |
|||
3
ampfer11
30.03.16
✎
12:51
|
Спасибо Патриот,
На этой строке Desktop.getCurrentFrame().getContainerWindow().setVisible(Ложь); уходит с попытки |
|||
4
ampfer11
30.03.16
✎
15:01
|
Еще раз Спасибо Патриоту. Все получилось (правда без второй строки)
И немного помучился с дурацкой нумерацией с 0 и тем, что в Open Office сначала колонка. потом ряд в отличии от Excel ServiceManager = Новый COMОбъект("com.sun.star.ServiceManager"); Desktop = ServiceManager.CreateInstance("com.sun.star.frame.Desktop"); //Desktop.getCurrentFrame().getContainerWindow().setVisible(Ложь); //невидимым основное окно. //установим параметры - не показывать таблицу Calc Параметры = Новый COMSafeArray("VT_DISPATCH", 1); Свойство = ServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue"); Свойство.Name = "Hidden"; Свойство.Value = true; Параметры.SetValue(0,Свойство); Doc = Desktop.LoadComponentFromURL(ПривестиФайлКУРЛ(Файл), "_blank", 0, Параметры); Состояние("Обработка файла Office Calc ..."); Листы = Doc.getSheets(); Лист = Листы.GetByIndex(НомерЛиста-1); //Эксел = Новый COMОбъект("Excel.Application"); // Эксел = Новый ComОбъект("TOpenOffice.Bridge"); //Лист = Эксел.Workbooks.Open(Файл).Sheets(НомерЛиста); НомерСтроки = НачальнаяСтрока; ТаблицаДанные = Новый ТаблицаЗначений; ТаблицаДанные.Колонки.Добавить("Артикул"); ТаблицаДанные.Колонки.Добавить("Наименование"); ТаблицаДанные.Колонки.Добавить("Количество"); ТаблицаДанные.Колонки.Добавить("Цена"); ТаблицаДанные.Колонки.Добавить("Опция"); ТаблицаДанные.Колонки.Добавить("ЕдИзм"); Пока СокрЛП(Лист.getCellByPosition(0, НомерСтроки-1).GetString()) <> "" Цикл СтрокаТаб = ТаблицаДанные.Добавить(); СтрокаТаб.Артикул = СокрЛП(Лист.getCellByPosition(КолонкаАртикул-1,НомерСтроки-1).GetString()); СтрокаТаб.Наименование = СокрЛП(Лист.getCellByPosition(КолонкаНаименование-1,НомерСтроки-1).GetString()); СтрокаТаб.Количество = Число(СокрЛП(Лист.getCellByPosition(КолонкаКоличество-1,НомерСтроки-1).GetValue())); СтрокаТаб.Цена = Число(СокрЛП(Лист.getCellByPosition(КолонкаЦена-1, НомерСтроки-1).GetValue())); СтрокаТаб.Опция = СокрЛП(Лист.getCellByPosition(КолонкаОпция-1, НомерСтроки-1).GetValue()); СтрокаТаб.ЕдИзм = СокрЛП(Лист.getCellByPosition(КолонкаЕдИзм-1, НомерСтроки-1).GetString()); НомерСтроки = НомерСтроки + 1; КонецЦикла; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |