Имя: Пароль:
1C
1С v8
Изменить цвет ячеек в OpenOffice Writer.
,
0 lopolopserg
 
10.12.14
09:33
Доброго времени суток!
Впервые решил Создать док OpenOffice из 1с. Благодаря Мисте нашел почти всё что хотел. Хроме одного:
Как сделать в таблице "белые линии" или без обрамления.

Буду благодарен любой помощи! Спасибо!

Таблица создаётся, текст вставляется.
Код создание таблицы:

//Создаём таблицу    
Table = Document.createInstance("com.sun.star.text.TextTable");
Table.initialize(1, 2); // строки, столбцы

InsertPoint = Document.Text.getEnd();
InsertPoint.getText().insertTextContent(InsertPoint, Table, false);



//Вставляем текст реквизитов в ячейки таблицы        
ДанныеСтроки = Новый COMSafeArray("VT_VARIANT", 2);
ДанныеСтроки.SetValue(0, ЗаполениеПодвала1());
ДанныеСтроки.SetValue(1, ЗаполениеПодвала2());
Данные = Новый COMSafeArray("VT_VARIANT", 1);
Данные.SetValue(0, ДанныеСтроки);
Table.setDataArray(Данные);

// Устанавливаем ширину таблицы и столбцов

Table.Width = 10000;
TableColumnSeparators = Table.TableColumnSeparators;
TableColumnSeparators.GetValue(0).Position = 2000;
Table.TableColumnSeparators = TableColumnSeparators;
1 Йохохо
 
10.12.14
09:42
(c) AndrewMacro
Sub Borders
  Dim aBorder, oRange, oDoc, oSheets
  Dim TableBorder As New com.sun.star.table.TableBorder
  Dim aTopLine As New com.sun.star.table.BorderLine

  oDoc = ThisComponent
  oSheets = oDoc.Sheets(0)
  oRange  = oSheets.getCellRangeByPosition(8,2,8,5)
  aBorder = oRange.TableBorder
  aTopLine.OuterLineWidth = 250
  aTopLine.InnerLineWidth = 0
  aTopLine.Color = 170000

  oRange.TableBorder.IsTopLineValid = 1
  aBorder.TopLine = aTopLine
  oRange.TableBorder = aBorder
End Sub
2 lopolopserg
 
10.12.14
09:43
(1) а это не для Экселя разве?
3 Йохохо
 
10.12.14
09:45
(2) Useful Macro Information
For OpenOffice.org
By
Andrew Pitonyak
4 lopolopserg
 
10.12.14
09:48
Ладно. Я так понял, чтобы изменить "свойства таблицы" нужно в таблицу (или ячейку) встать курсором. Не подскажете?
5 Йохохо
 
10.12.14
09:49
(4) где ты увидел определение курсора по листу?) там рендж oSheets.getCellRangeByPosition(8,2,8,5)
6 lopolopserg
 
10.12.14
09:52
(5) запутался. так это для электронной таблицы код или для текстового документа?

у меня в текстовом документе таблица. как я найду грубо oSheets.getCellRangeByPosition(8,2,8,5)?

или чего-то не понимаю.
7 Йохохо
 
10.12.14
10:14
(6) это называется OO Writer, сходу не нашел примера
8 lopolopserg
 
10.12.14
10:19
(7) Понятно. В общем не получилось пока у меня. Гугл тоже пока не помогает. Если время будет, то можно примерчик из под 1с-ки.
Спасибо!
9 lopolopserg
 
10.12.14
12:16
Разобрался. Так работает. В коллекцию Мисты.

//Вставляем текст реквизитов в ячейки таблицы        
ДанныеСтроки = Новый COMSafeArray("VT_VARIANT", 2);
ДанныеСтроки.SetValue(0, ЗаполениеПодвала1());
ДанныеСтроки.SetValue(1, ЗаполениеПодвала2());
Данные = Новый COMSafeArray("VT_VARIANT", 1);
Данные.SetValue(0, ДанныеСтроки);
Table.setDataArray(Данные);

// Устанавливаем ширину таблицы и столбцов

Table.Width = 10000;
TableColumnSeparators = Table.TableColumnSeparators;
TableColumnSeparators.GetValue(0).Position = 5000;
//TableColumnSeparators.GetValue(1).Position = 1000;
Table.TableColumnSeparators = TableColumnSeparators;
    
  v = Table.TableBorder;
  
  x = v.TopLine;         x.OuterLineWidth = 0;  v.TopLine = x;
  x = v.LeftLine;        x.OuterLineWidth = 0;  v.LeftLine = x;
  x = v.RightLine;       x.OuterLineWidth = 0;  v.RightLine = x;
  x = v.TopLine;         x.OuterLineWidth = 0;  v.TopLine = x;
  x = v.VerticalLine;    x.OuterLineWidth = 0;  v.VerticalLine = x;
  x = v.HorizontalLine ; x.OuterLineWidth = 0;  v.HorizontalLine = x;
  x = v.BottomLine ;     x.OuterLineWidth = 0;  v.BottomLine = x;

  Table.TableBorder = v
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший