Импорта данных из OpenOfficeCalc

Импорта данных из OpenOfficeCalc

Искал по форуму не нашел, каким образом просмотреть файл из OpenOfficeCalc?
Ну нет у них Excel, есть OpenOffice/
 
Попытался сделать чтение файла из OpenOffice.Calc

Код:
ПЕРЕМ ОБЪЕКТ: oCalcDoc,Document,scr,Desktop,ServiceManager,Листы,Лист,SaveParam,COB,ячейка,Курсор,Адрес,Массив
 
// Описания общих переменных и функций
ВЫЧИСЛИТЬ//(СТРОКА: колонка,строка,ячейка)
// Алгоритм расчета отчета
ХРАНИТЬ(ф)
ф=ВЫБОР_ФАЙЛА("")
// создаем объект Массив для дальнейшей работы
 scr = СОЗДАТЬ_ОБЪЕКТ("MSScriptControl.ScriptControl");
   scr.language = "javascript";
   scr.eval("Массив=new Array()");
   Массив = scr.eval("Массив");
   scr.AddCode("function SetItem(ind,val){Массив[ind]=val}");

// собственно открытие документа

oServiceManager = СОЗДАТЬ_ОБЪЕКТ("com.sun.star.ServiceManager")
oCalcDoc = oServiceManager.createInstance("com.sun.star.frame.Desktop")
// приведем имя файла к нужному виду
Имф="file:///"+ЗАМ(ЗАМ(ф," ","%20"),"\","/")
// отркоем документ
//хотелось бы чтобы он был скрытым
Document = oCalcDoc.LoadComponentFromURL(Имф, "_default",0,Массив);

   Листы = Document.getSheets();
   Лист = Листы.getByIndex(0);
   Курсор=Лист.createCursorByRange(Лист)
   //определим диапазон заполненных ячеек
   Курсор.gotoStartOfUsedArea(ДА);
   Курсор.gotoEndOfUsedArea(ДА);
   Адрес=Курсор.RangeAddress
   Строка=Адрес.EndRow()
   Графа=Адрес.EndColumn()

//   ОТЛАДКА(Строка,Графа)

   ЦИКЛ ДЛЯ(Стр=0,Строка)
     ЦИКЛ ДЛЯ(Гр=0,Графа)
       ячейка=Лист.GetCellByPosition( Гр,Стр)
      // ОТЛАДКА(ячейка.Type)
 
   ПОПЫТКА
       ЕСЛИ ячейка.Type=0 ТО ПРОДОЛЖИТЬ КОНЕЦ_ЕСЛИ
       ЕСЛИ ячейка.Type=1 ТО
       ЯЧЕЙКА![Гр,Стр]=ячейка.Value
       КОНЕЦ_ЕСЛИ     
       ЕСЛИ ячейка.Type=2 ТО
       ЯЧЕЙКА![Гр,Стр]=ячейка.String
       КОНЕЦ_ЕСЛИ
    ИСКЛЮЧЕНИЕ
   ОТЛАДКА(Стр,Гр)
    КОНЕЦ_ПОПЫТКИ
 
 
     КОНЕЦ_ЦИКЛА
   КОНЕЦ_ЦИКЛА


oServiceManager.ЗАКРЫТЬ       


КОНЕЦ
 
Последнее редактирование:
Со скрытием документа разбирался, могу поднять. Плохо, что после этого Офис закрыть программно не удается (мне не удалось) -висит в процессах...
 
Тогда выложите примеры работы с OpenOffice в обмен опытом, может кому-то тоже понадобиться...
 
Так в том и дело, что если документ скрыть,то ручками не закроешь, а все предлагаемые в интернете варианты программного закрытия у меня не сработали - висят в процессах soffice.bin и soffice.exe.Убивать их средствами Windows? Варварство, однако
 
Я его закрывал крестиком, а потом обрабатывал ячейки.

Но посмотрю, может действительно висит...

Доброго дня! Я здесь новичок, прошу прощения, что влезаю в разговор, но OOo действительно висит в процессах, даже после "ручного" закрытия-открытия. Насколько я понимаю это сделано разработчиками для ускорения запуска документов.
 
Возможно это связано с тем, что если устанавливается ООо то там есть быстрый запуск, который все время висит в процессах.
 
Я его закрывал крестиком, а потом обрабатывал ячейки.

Но посмотрю, может действительно висит...

Я как-то совсем нить потерял... Непонятно, если закрыть документ, то как потом обрабатывать его ячейки? Или у нас какое-то несовпадение в терминологии... И в таких случаях, когда документ просто открывался, а потом закрывается вручную,никаких проблем с висящими процессами у меня вроде не было. Все мои посты в данной теме, кроме первого являются ответом на пару комментариев в вашем коде :
// открываем документ
// хотелось, чтобы он был скрытым
 
Я как-то совсем нить потерял... Непонятно, если закрыть документ, то как потом обрабатывать его ячейки? Или у нас какое-то несовпадение в терминологии... И в таких случаях, когда документ просто открывался, а потом закрывается вручную,никаких проблем с висящими процессами у меня вроде не было. Все мои посты в данной теме, кроме первого являются ответом на пару комментариев в вашем коде :
// открываем документ
// хотелось, чтобы он был скрытым

Да, хотелось бы чтобы как в Excel выбрал файлик и Получил отчетик, а в случае с Calc выбрал файлик, ЗАКРЫЛ его вручную, получил отчетик.

Поэтому и появился комментарий - хотелось бы чтобы файл явно не открывался.
 
Похожий вопрос.
Если работать с doc документом через ворд (макросами), то winword тоже рвется остаться в процессах. СОЗДАТЬ_ОБЪЕКТ нельзя как то к текущему серверу ворда а не новый экземпляр ? или как правильно это делать.
 
Назад
Сверху