Имя: Пароль:
1C
1С v8
MS Office & OpenOffice
0 zladenuw
 
06.09.12
11:44
Можно ли прочитать область листа в Опене.
Для мс делал так

 ExcelФайл = ПолучитьCOMОбъект(мВыбФайл);
       Состояние("Обработка файла Microsoft Excel...");
       // Читаем данные первого листа книги
       Попытка
           ExcelЛист = ExcelФайл.Sheets(1);        
       Исключение
           Предупреждение("Файл открыт, закройте его!!!",,"ОШИБКА");
           Возврат;
       КонецПопытки;
       //
       RowCount     = 6500;
       ВсегоКолонок = 3;
       НомерПервойКолонки = 1;
       //
       СоздатьТЧДанных();
       //Обратаем всю область данных
           Область = ExcelЛист.Range(ExcelЛист.Cells(1,НомерПервойКолонки), ExcelЛист.Cells(RowCount,ВсегоКолонок));
           Данные = Область.Value.Выгрузить();        
       //Создание пустых строк по RowCount    
       Для Счетчик = 1 По RowCount Цикл
           НоваяСтрока = ТЧДанных.Добавить();
       КонецЦикла;
       
       //Заполнение Тч данными
       Для Счетчик = 0 По ВсегоКолонок-1 Цикл
           ТЧДанных.ЗагрузитьКолонку(Данные[Счетчик], "Колонка"+Счетчик);
       КонецЦикла;
       Создать();
       ExcelФайл.Close();
1 zladenuw
 
06.09.12
11:53
2 zladenuw
 
06.09.12
12:17
Ура. получилось
Перем MassivParametrov;

функция URLИзИмениФайла(Знач ИмяФайла)  
   ИмяФайла =  СтрЗаменить(ИмяФайла," ","%20");
   ИмяФайла =  СтрЗаменить(ИмяФайла,"\","/");
   Возврат "file:/" + "/localhost/" + ИмяФайла;
   
Конецфункции


Функция ПрочитатьФайл(ИмяФайла) Экспорт

   ФайлОбмена = Соединение.LoadComponentFromURL(URLИзИмениФайла(ИмяФайла), "_blank", 0, MassivParametrov);
   ТекущийЛист = ФайлОбмена.sheets.getByIndex(1);

   //лпМассив = ВернутьМассивДиапазонДляOpenOffice();
   
   begCol = 0; //начальная колонка диапазона
   begRow = 0; //нач ячейка
   endCol = 3;
   endRow = 20;
   Range = ТекущийЛист.getCellRangeByPosition(begCol, begRow, endCol, endRow);
   лпМассивCOM = Новый COMSafeArray("VT_VARIANT", Range.Columns.Count, Range.Rows.Count);
   Состояние(НСтр("ru=""Получение диапазона данных из файла..."";uk=""Отримання діапазону даних з файлу..."""));
   лпМассивCOM = Range.getDataArray();    
   лпПростойМассив = лпМассивCOM.Выгрузить();
   
КонецФункции // ПрочитатьФайл()



//Подключение к серверу автоматизации OpenOffice
Попытка
   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");
   
   Соединение = OpenOffice.createInstance("com.sun.star.frame.Desktop");
   
   
Исключение
   Предупреждение(ОписаниеОшибки() + Символы.ПС + "программа OpenOffice не установлена на данном компьютере!");        
КонецПопытки;
2 + 2 = 3.9999999999999999999999999999999...