|
Работа с Оpen Office из 1С на примере Calc | ☑ | ||
---|---|---|---|---|
0
kejsi
28.01.18
✎
00:23
|
есть пара вопросов:
1. Устанавливаю ширину колонки - а меняется ширина всех колонок. код такой Попытка ServiceManager = Новый COMОбъект("com.sun.star.ServiceManager"); Исключение Предупреждение(ОписаниеОшибки() + Символы.ПС + "программа OpenOffice не установлена на данном компьютере!"); Возврат ОписаниеОшибки(); КонецПопытки; Desktop = ServiceManager.createInstance("com.sun.star.frame.Desktop"); Свойства = ServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue"); Свойства.Name = "AsTemplate"; Свойства.Value = ложь; Args = Новый COMSafeArray("VT_VARIANT", 3); Args.SetValue(0, Свойства); Свойства1 = ServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue"); Свойства1.Name = "Hidden"; Свойства1.Value = Истина; Args.SetValue(1, Свойства1); Document = Desktop.LoadComponentFromURL("private:factory/scalc", "_blank", 0, Args); Sheets = Document.getSheets(); Sheet = Sheets.getByIndex(0); мИтКол = 0; ТаблицаРезультата=док.Товары.Выгрузить(); Для каждого кол из ТаблицаРезультата.Колонки Цикл Sheet.getCellByPosition(мИтКол,0).setString(кол.Имя); мИтКол = мИтКол + 1; КонецЦикла; ВсегоСтрок = ТаблицаРезультата.Количество(); ВсегоКолонок = ТаблицаРезультата.Колонки.Количество(); МассивКОМ = Новый COMSafeArray("VT_VARIANT", ВсегоСтрок,ВсегоКолонок); иткол = 0; итстр = 0; Для каждого стр из ТаблицаРезультата Цикл Для каждого кол из ТаблицаРезультата.Колонки Цикл стрРез = СокрЛП(стр[кол.Имя]); МассивКОМ.SetValue(итстр,иткол,стрРез); иткол = иткол+1; КонецЦикла; иткол = 0; итстр = ?(итстр=ВсегоСтрок,0,итстр+1); КонецЦикла; begCol = 0; begRow = 1; endCol = ВсегоКолонок-1; endRow = ВсегоСтрок; Columns0=Sheet.getColumns().getByIndex(0); Columns0.OptimalWidth=0; Columns0.Width=200; Range = Sheet.getCellRangeByPosition(begCol, begRow, endCol, endRow); Range.setDataArray(МассивКОМ); //Document.storeToURL(ПривестиФайлКУРЛ(ПутьКФайлу),Args); Свойства2 = ServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue"); Свойства2.Name = "FilterName"; Свойства2.Value = "MS Excel 97"; Args.SetValue(2,Свойства2); Document.GetCurrentController().GetFrame().GetContainerWindow().SetVisible(Истина); и вот где Columns0.Width=200; меняется ширина всех колонок на 200 2. Как установить защиту на лист паролем (чтобы нельзя было ничего изменить кроме 2х указанных ячеек) 3. Может у кого есть полная обработка указанная в примере http://wiki.mista.ru/doku.php?id=1c:v8:howto:rabota_s_open_office_iz_1s_na_primere_calc просто там не хватает пары процедур в частности НачатьВыводВOpenDocument Спасибо |
|||
1
kejsi
29.01.18
✎
22:30
|
Может кто-то поможет? Буду очень благодарен!
|
|||
2
cw014
29.01.18
✎
22:38
|
Что гугл говорит про твои вопросы?
|
|||
3
cw014
29.01.18
✎
22:39
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |