Имя: Пароль:
1C
1С v8
Как получить ширину колонки OpenOffice?
0 ferry
 
04.10.12
14:56
Для экселя было ExcelЛист.Columns(Column).ColumnWidth
А для опенофиса?
Файл открываю вот таким вот образом
OpenOffice = Новый COMОбъект("com.sun.star.ServiceManager");
   
   scr = Новый COMОбъект("MSScriptControl.ScriptControl");
   scr.language = "javascript";
   
   scr.eval("MassivParametrov = new Array()");
   MassivParametrov = scr.eval("MassivParametrov");
   
   scr.AddObject("OpenOffice", OpenOffice);
   
   scr.eval("MassivParametrov[0]=OpenOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue')");
   scr.eval("MassivParametrov[0].Name='Hidden'");
   scr.eval("MassivParametrov[0].Value=true");
   
   Desktop = OpenOffice.createInstance("com.sun.star.frame.Desktop");
   ИмяФайла =  СтрЗаменить(ИмяФайла," ","%20");
   ИмяФайла =  СтрЗаменить(ИмяФайла,"\","/");
   ФайлОбмена = Desktop.LoadComponentFromURL("file:/" + "/localhost/"+ИмяФайла, "_blank", 0, MassivParametrov);      

И заодно как получить количество колонок и строк?
ТекущийЛист = ФайлОбмена.sheets.getByIndex(НомерЛистаExcel-1);
ТекущийЛист.rows.count - 1;
ТекущийЛист.columns.count - 1;
возвращает 65536 и 1024 соответсвенно
1 zladenuw
 
04.10.12
14:58
CellCursor     = ТекущийЛист.createCursor();
   CellCursor.gotoStartOfUsedArea(Ложь);
   CellCursor.gotoEndOfUsedArea(Истина);
   CellRangeAddress = CellCursor.getRangeAddress();
   begCol = CellRangeAddress.StartColumn; //начальная колонка диапазона

   begRow = CellRangeAddress.StartRow; //нач ячейка

   endCol = CellRangeAddress.EndColumn;
   endRow = CellRangeAddress.EndRow;
   Range = ТекущийЛист.getCellRangeByPosition(begCol, begRow, endCol, endRow);
2 zladenuw
 
04.10.12
14:59
3 zladenuw
 
04.10.12
15:04
единственность что не нравилось по началу. что при получение диапазона получаем массив строк, а в ёкселе массив колонок.
4 ferry
 
04.10.12
15:08
спасибо...в принципи дальнейшее использование у меня такое
КоличествоСтрокНаЛисте = endRow;    
КоличествоКолонокНаЛисте = endCol;
Для ТекСтрокаДок = begRow По КоличествоСтрокНаЛисте Цикл

       Для НомерСтолбца = begCol По КоличествоКолонокНаЛисте Цикл
           ТабличныйДокумент.Область("R" + Формат(ТекСтрокаДок+1, "ЧГ=") +"C" + Формат(НомерСтолбца+1, "ЧГ=")).Текст = ТекущийЛист.getCellByPosition(НомерСтолбца, ТекСтрокаДок).Value;
КонецЦикла;            
       
   КонецЦикла;

вот бы еще ширину...но щас попробую на форуме посмотреть...еще раз спасибо
5 ferry
 
04.10.12
15:13
:(
я была на этом форме...ширину вроде взяла как они сказали
ТабличныйДокумент.Область("C" + Формат(НомерСтолбца+1, "ЧГ=")).ШиринаКолонки = ТекущийЛист.getCellByPosition(НомерСтолбца, 0).getColumns.getByIndex(0).Width;
но получила ругань:
Ошибка при получении значения атрибута контекста (getColumns): Метод не найден
что-то сделала не так?
6 zladenuw
 
04.10.12
15:15
getColumns()
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.