29.05.2007, 11:01 | #1 |
Участник
|
OpenOffice форматирование
Привет всем. Я создаю документ OpenOffice эл.табл . Вставляю туда текст. Все нормально. Но совершенно не получается его отформатировать из кода. Хотя бы шрифт изменить и формат ДатаВремя назначить ячейке..
вот код, подскажите X++: static void oo_2(Args _args) { COM OpenOffice; COM oDeskTop; COM oDocument; COM oscr; COM oSheets; COM oRange; COM oSheet; COM oNumberFormats; COM oFormat; COM oMassiv; COM oSaveParam; COM oLocale; COM oParam; COM oAAA; COM oText; int i; COMVariant arg; COMVariant byte; Array arr = new Array(Types::String); //Создание экземпляра OpenOffice.org OpenOffice = new Com("com.sun.star.ServiceManager"); oDeskTop = OpenOffice.CreateInstance("com.sun.star.frame.Desktop"); // create and initialize a COMVariant object arg = COMVariant::createFromArray(arr); //Создание документа oDocument = oDeskTop.LoadComponentFromURL("private:factory/scalc", "_blank", 0, arg); oSheets = oDocument.getSheets(); oSheet = oSheets.getByIndex(0); oNumberFormats = oDocument.getNumberFormats(); oLocale = OpenOffice.bridge_GetStruct( "com.sun.star.lang.Locale" ); oParam=OpenOffice.bridge_GetStruct('com.sun.star.beans.PropertyValue'); byte = COMVariant::createFromStr("com.sun.star.util.NumberFormat.DATETIME"); // oFormat = oNumberFormats.getStandardFormat(arg.byte(2),olocale); for(i=1; i<15;i++) { oRange = oSheet.getCellByPosition(1,i); oRange.Setstring('Прелесть какая'); oRange = oSheet.getCellByPosition(2,i); oRange.SetValue(i); oRange = oSheet.getCellByPosition(3,i); oRange.SetString(date2str(today(),123,2,2,2,2,4)); oRange = oSheet.getCellByPosition(4,i); oRange.SetString(today()); oText = oRange.Text();// print(oText.charHeight()); oAAA = oText.createTextCursor(); print(oAAA.charHeight()); oAAA.CharHeight(25); print(oAAA.charHeight()); oParam.Name("Bold"); oParam.Value("true"); //oRange.setFormat(oFormat); } oRange = oSheet.getCellRangeByName("C1:C10"); pause; oSaveParam=oDocument.setPropertyValue("FilterName","MS Excel 97"); } |
|
29.05.2007, 17:25 | #2 |
Пенсионер
|
А где можно посмотреть объектную модель OpenOffice ?
__________________
Законы природы еще никто не отменял! А еще у меня растет 2 внучки!!! Кому интересно подробности тут: http://www.baby-shine.com/ |
|
30.05.2007, 05:53 | #3 |
Участник
|
признаюсь - за основу я взяла код из 1с
http://www.forum.mista.ru/topic.php?...&area=exchange А объектная модель есть здесь http://lists.altlinux.ru/pipermail/o...er/008421.html |
|
30.05.2007, 10:20 | #4 |
Участник
|
у меня получилось, но не все (рамка для ячеек не рисуется и формат даты, может еще что-нибудь вылезет...)
X++: .... //*****выделить диапазон + границы BorderStruct = OpenOffice.Bridge_GetStruct('com.sun.star.table.BorderLine'); BorderStruct.Color(24567057); BorderStruct.LineDistance(0); BorderStruct.InnerLineWidth(0); BorderStruct.OuterLineWidth(1); // oRange = oSheet.getCellByPosition(8,1,9,1); oRange = oSheet.getCellRangeByName("H2:I2"); oRange.merge(true); oRange.setPropertyValue("CellBackColor", 16764057); oRange.SetPropertyValue("LeftBorder",BorderStruct); oRange.SetPropertyValue("RightBorder",BorderStruct); oRange.SetPropertyValue("TopBorder",BorderStruct); oRange.SetPropertyValue("BottomBorder",BorderStruct); //***************************** for(i=1; i<10;i++) { oRange = oSheet.getCellByPosition(0,i); oRange.SetValue(i); oRange.setPropertyValue("CellStyle", "Result"); oRange = oSheet.getCellByPosition(1,i); oRange.Setstring('Прелесть'); oRange.setPropertyValue('CharPosture',100); oRange = oSheet.getCellByPosition(2,i); oRange.SetValue(i*i); oRange.setPropertyValue('CharWeight',200); oRange.setPropertyValue('CharUnderline',124); oRange = oSheet.getCellByPosition(3,i); oRange.SetString(date2str(today(),123,2,2,2,2,4)); oRange.setPropertyValue("CharColor", 500); oRange.setPropertyValue('CharShadowed', True); oRange = oSheet.getCellByPosition(4,i); oRange.SetString(today()); oRange.setPropertyValue("CellBackColor", 0x99CCFF); oRange.setPropertyValue("CharHeight", 12); oRange.setPropertyValue("IsTextWrapped", True); oRange = oSheet.getCellByPosition(5,i); oRange.SetString(today()); oRange.setPropertyValue("CellStyle", "Date"); } |
|
30.05.2007, 13:02 | #5 |
Пенсионер
|
Цитата:
Сообщение от PT
признаюсь - за основу я взяла код из 1с
http://www.forum.mista.ru/topic.php?...&area=exchange А объектная модель есть здесь http://lists.altlinux.ru/pipermail/o...er/008421.html
__________________
Законы природы еще никто не отменял! А еще у меня растет 2 внучки!!! Кому интересно подробности тут: http://www.baby-shine.com/ |
|
30.05.2007, 13:53 | #6 |
Участник
|
Пользовался примером - хватило...
http://rsdn.ru/article/openoffice/ooautomation.xml внизу ссылки полезные.... |
|
04.07.2007, 11:08 | #8 |
Участник
|
примеры хорошие, но у меня ни в какую не получается нарисовать рамку ячейкам.
Устала тупить самостоятельно. Подскажите где собака зарыта.. X++: static void oo_1(Args _args) { COM OpenOffice; COM oDeskTop; COM oDocument; COM oscr; COM oSheets; COM oRange; COM oSheet; COM MyStruct; COMVariant arg; Array arr = new Array(Types::String); //Создание экземпляра OpenOffice.org OpenOffice = new Com("com.sun.star.ServiceManager"); oDeskTop = OpenOffice.CreateInstance("com.sun.star.frame.Desktop"); // create and initialize a COMVariant object arg = COMVariant::createFromArray(arr); //Создание документа oDocument = oDeskTop.LoadComponentFromURL("private:factory/scalc", "_blank", 0, arg); oSheets = oDocument.getSheets(); oSheet = oSheets.getByIndex(0); oRange = oSheet.getCellRangeByPosition(2,3,5,7); oRange.setPropertyValue("CellBackColor", 1300003); MyStruct =OpenOffice.Bridge_GetStruct("com.sun.star.table.BorderLine"); MyStruct.color(13047173); MyStruct.lineDistance(0); MyStruct.innerLineWidth(0); MyStruct.outerLineWidth(1); oRange.leftBorder(MyStruct); oRange.rightBorder(MyStruct); oRange.topBorder(MyStruct); oRange.bottomBorder(MyStruct); } |
|
13.12.2007, 15:54 | #9 |
Участник
|
Цитата:
X++: void setBorder(str _borderName = "", int color = 0, int innerLineWidth = 0, int outerLineWidth = 10, int lineDistance = 0) { COM MyStruct; ComDispFunction func; COMVariant varArg1 = new COMVariant(); MyStruct = OpenOffice.Bridge_GetStruct("com.sun.star.table.BorderLine"); func = new COMDispFunction(MyStruct, "Color", COMDispContext::PropertyPut); varArg1.int(color); func.call(varArg1); func = new COMDispFunction(MyStruct, "OuterLineWidth", COMDispContext::PropertyPut); varArg1.int(outerLineWidth); func.call(varArg1); func = new COMDispFunction(MyStruct, "InnerLineWidth", COMDispContext::PropertyPut); varArg1.int(innerLineWidth); func.call(varArg1); func = new COMDispFunction(MyStruct, "LineDistance", COMDispContext::PropertyPut); varArg1.int(lineDistance); func.call(varArg1); Cell.SetPropertyValue(_borderName, MyStruct); } OpenOffice - это объект OpenOffice Передаваемые параметры: _borderName - имя линии - например "LeftBorder", "RightBorder", "TopBorder", "BottomBorder" _color - цвет _blue + (_green * 256) + (_red * 65536) _innerLineWidth - толщина внутренней линии в сотых долях миллиметра _outerLineWidth - толщина внешней линии в сотых долях миллиметра _lineDistance - расстояние между внутренней и внешней линиями |
|
|
За это сообщение автора поблагодарили: Lucky13 (2). |
Теги |
документация |
|
Похожие темы | ||||
Тема | Ответов | |||
Как открыть шаблон в OpenOffice? | 28 | |||
DeniZone: OpenOffice and Dynamics ax | 0 | |||
Ищу класс для работы с OpenOffice | 9 | |||
Axapta+OpenOffice | 3 | |||
Axapta i OpenOffice | 3 |
|