Имя: Пароль:
1C
1C 7.7
v7: Объединение ячеек в OpenOffice при заполнении из 1с-ки.
0 Double_Medved
 
14.05.14
14:45
Добрый день! Подскажите пожалуйста, пара часов гугла не помогло. Печатаю из 1с-ки прямо в OpenOffice, и вроде бы уже почти все получилось, но вот как блин объединить ячейки?
ServiceManager = СоздатьОбъект("com.sun.star.ServiceManager");
    Desktop        = ServiceManager.createInstance("com.sun.star.frame.Desktop");
    Scr = СоздатьОбъект("MSScriptControl.ScriptControl");
    Scr.Language="javascript";
    Scr.Eval("Args=new Array()");
    Args = Scr.Eval("Args");
    Scr.AddObject("ServiceManager", ServiceManager);
    
    // Откроем шаблон
    ТекстовыйПроцессор = Desktop.LoadComponentFromURL(ПреобразоватьВURL(ИмяФайла), "_blank", 0, Args);
    
    
    Листы = ТекстовыйПроцессор.getSheets();
    Лист = Листы.getByIndex(0);  
Область = Лист.getCellRangeByPosition( 10, 10, 10, 10);
Область.Merge(1);
Вроде-бы это функция merge, но там вроде как merge(true) объединяет и merge(false) разъединяет. То есть булеан должно быть. Merge(1) и Merge(0) ни к чему не привели. Мне это нужно потому что там 2 разные таблицы подряд идут и там разный размер ячеек - то есть мне надо объединить ячейки столько раз, сколько есть в таблице.
Подскажите плиз, замучался
1 Double_Medved
 
14.05.14
14:54
Ололо всем спасибо я понял - не правильно задавал область, и все. Например если нужно объединить первую и вторую ячейку в первой строке то надо делать так Лист.getCellRangeByPosition( 0, 0, 0, 1).Merge(1) 0,0 координаты первой ячейки и 0,1 координаты второй ячейки.
2 spectre1978
 
14.05.14
14:55
getCellRangeByPosition(     [in] long      nLeft,
    [in] long      nTop,
    [in] long      nRight,
    [in] long      nBottom )

Если сопоставить это с

Область = Лист.getCellRangeByPosition( 10, 10, 10, 10);

то выходит, что вы берете диапазон размером в 1 ячейку.
И что ж там тогда объединять?
3 spectre1978
 
14.05.14
14:55
Опоздал :)