22 / 22 / 0
Регистрация: 13.05.2011
Сообщений: 197
1

1C И OpenOffice

21.09.2011, 16:36. Показов 24255. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Кто нибудь проболвал загружать информация из OpenOffice в 1с?

Наткнулся вот на такую штуку, но нефига не получается...

1C
1
2
3
4
5
6
7
8
9
процедура Сформировать();
перем tOO,яч;
    tOO=СоздатьОлеОбъект("TOpenOffice.Bridge");
    tOO.Open("c:\sample.xls");
    tOO.Cells(1,1).text="Это текст из 1С!";
    яч=tOO.Cells(1,2);
    сообщить("В ячейке B3 содержится текст:"+яч.text);
    tOO=0;
конецПроцедуры // Сформировать();
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.09.2011, 16:36
Ответы с готовыми решениями:

1c 7.7 и Openoffice
по умолчанию таблицы из семерки сохраняются в формате xls 5.0, что при последующем открытии и...

взаимодействие Openoffice и 1С
Ни кто не встречал статьи по взаимодействию Open Office и 1С Если да поделитесь ссылками :blink:

выгрузка в xls с открытием в OpenOffice
при выгрузке форм в xls Open Office отображает при открытии краказяблы, после открытия в exel и...

Примочка к OpenOffice - unioffice. Кто-нибуть пробовал?
Всем Доброго Времени Суток! Вобщем проблема такая: пытаются печатать отчет из 1С П 8.2 и получают...

7
309 / 309 / 1
Регистрация: 16.01.2011
Сообщений: 1,073
21.09.2011, 16:51 2
что конкретно не получается?
0
22 / 22 / 0
Регистрация: 13.05.2011
Сообщений: 197
21.09.2011, 17:13  [ТС] 3
Конкретно:
Есть фыайл созданный в экселе из которого нужно получить данные.
Использовать вот такую штуку не получается Excel = Новый COMОбъект("Excel.Application"); так как не установлен сам Excel и есть только OpenOffice. Как выгрузить данные из файла .xls в 1с не имея Excel?

Нашёл ещё вот такую штуку:
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
Функция ЗагрузитьТЗизФайла(ПутьКФайлу)
 
       //OpenOffice Calc//////////////////////////////////////////////////////////////////////////////////////////////
       Попытка 
                ServiceManager = Новый COMОбъект("com.sun.star.ServiceManager");
       Исключение
                Предупреждение(ОписаниеОшибки() + Символы.ПС + "программа OpenOffice\LibreOffice не установлена на данном компьютере!");
       Возврат Неопределено;
       КонецПопытки;
       Desktop = ServiceManager.createInstance("com.sun.star.frame.Desktop");
       Свойства = ServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue");
       Свойства.Name = "AsTemplate";
       Свойства.Value = Истина;
       Args = Новый COMSafeArray("VT_VARIANT", 2);
       Args.SetValue(0, Свойства);
       Свойства1 = ServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue");
       Свойства1.Name = "Hidden";
       Свойства1.Value = Истина;
       Args.SetValue(1,Свойства1);
       Document = Desktop.LoadComponentFromURL(ПривестиФайлКУРЛ(ПутьКФайлу), "_blank", 0, Args);
       Sheets = Document.getSheets(); 
       Sheet = Sheets.getByIndex(текЛист-1); 
       локТабЗнач = Новый ТаблицаЗначений;
       begCol = 0;
       begRow = 0;
       endCol = Sheet.Data.GetLength(6) - 1;
       endRow = Sheet.Data.GetLength() - 1;
       нКол = 0;
       локТабЗнач.Колонки.Очистить();
 
       КС = Новый КвалификаторыСтроки(50);
       Массив = Новый Массив;
       Массив.Добавить(Тип("Строка"));
 
       ОписаниеТиповСтрока = Новый ОписаниеТипов(Массив, , КС);
 
       Пока нКол <= endCol Цикл
            ИмяКол = "К"+Строка(нкол+1);
            локТабЗнач.Колонки.Добавить(ИмяКол,ОписаниеТиповСтрока);
            нКол = нКол + 1;
       КонецЦикла;
       Range = Sheet.getCellRangeByPosition(begCol, begRow, endCol, endRow);
       МассивКом = Новый COMSafeArray("VT_VARIANT", Range.Columns.Count, Range.Rows.Count);
       МассивКом = Range.getDataArray();
       тмпПростойМассив = МассивКом.Выгрузить();
       Для каждого массив из тмпПростойМассив Цикл
             ит = 0;
             НовСтрока = локТабЗНач.Добавить();
             Для каждого ЭлементМассива из массив цикл
                   НовСтрока[ит] = ЭлементМассива;
                   ит = ит + 1;
             КонецЦикла;
       КонецЦикла;
       Возврат локТабЗнач;
 
КонецФункции
Но не могу разобраться в коде. Неужели сложно комментарий писать...
0
309 / 309 / 1
Регистрация: 16.01.2011
Сообщений: 1,073
21.09.2011, 19:20 4
первый кусок кода для 7.7
СОМ объект создается СоздатьОбъект(<Имя>)
Смотри в сторону Йокселя
1
Модератор
Эксперт 1С
3783 / 2963 / 589
Регистрация: 10.03.2011
Сообщений: 11,665
Записей в блоге: 1
21.09.2011, 23:40 5
Так надо для 7.7 или 8 ????
Через драйвер ADO можно это сделать!
1
22 / 22 / 0
Регистрация: 13.05.2011
Сообщений: 197
22.09.2011, 11:04  [ТС] 6
Надо для 8, а как через ADO это сделать? Подскажи пожалуйста.

Добавлено через 1 час 53 минуты
Нашел библиотеку TOpenOffice которая позволяет работать с OpenOffice как с Excel
OpenOffice = Новый COMОбъект("TOpenOffice.Bridge") и т.д.
Щас разбираюсь в ней. Пока вроде все норм, наверное через неё буду делать.
0
Модератор
Эксперт 1С
3783 / 2963 / 589
Регистрация: 10.03.2011
Сообщений: 11,665
Записей в блоге: 1
22.09.2011, 13:15 7
Может вот так прокатит?
C
1
2
3
4
5
6
7
8
MyCon = Новый COMОбъект ("ADODB.Connection");
MyCon.Open("Driver={Microsoft Excel Driver (*.xls)};" +
   "DriverId=790;" +
   "Dbq=d:\1.xls;" +
   "DefaultDir=d:\");
MyRst = Новый COMОбъект ("ADODB.Recordset");
MyStr = "select * from [Sklad$]";
MyRst.Open (MyStr, MyCon, 2, 3);//adOpenDynamic, adLockOptimistic
1
22 / 22 / 0
Регистрация: 13.05.2011
Сообщений: 197
22.09.2011, 16:52  [ТС] 8
Можно комментарий к этому коду?

Я вот что написал:
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
//Создаем объект "Приложение Excel" или "Приложение OpenOffice", открвыаем нужную книгу
    //Попытаемся загрузить через Excel  
    Приложение_Excel = 1;
    Попытка
        Excel = Новый COMОбъект("Excel.pplication"); //Пытаемся создаем объект Excel
        Excel.WorkBooks.Open(ПутьКФайлу); //Открываем файл
        Лист = Excel.Sheets(1);; //Устанавливаем нужный лист
    Исключение
        Приложение_Excel = 0;
    КонецПопытки;
    
    Если Приложение_Excel = 0 Тогда
        // Попытаемся загрузить через OpenOffice
        Попытка
            OpenOffice = Новый COMОбъект("TOpenOffice.Bridge"); //Пытаемся создаем объект OpenOffice
            //Открываем файл
        Исключение
            Приложение_OpenOffice = 0;
        КонецПопытки;
        
    ИначеЕсли (Приложение_Excel = 0) И (Приложение_OpenOffice = 0) Тогда
        Сообщить("Ошибка! Установите OpenOffice или Excel", СтатусСообщения.Внимание);    
        Возврат;
    КонецЕсли;
 
********** 
 
Если Приложение_Excel = 1 тогда
            Значение = Лист.Cells(Стр,КолонкаНаименование).Value;
        КонецЕсли;
        Если Приложение_Excel = 0 Тогда
            Значение = OpenOffice.Cells(Стр,КолонкаНаименование).Value;
        КонецЕсли;
 
**********
 
 
Если Приложение_Excel = 1 Тогда
        Excel.WorkBooks.Close();
        Excel.Quit();
    КонецЕсли;
    Если Приложение_Excel = 0 Тогда
        OpenOffice.Close(); 
        OpenOffice = 0;
    КонецЕсли;
Предварительно нужно скопировать библиотеку TOpenOffice на комп и запустить один раз.
Правда есть два минуса:
1. Команда OpenOffice.Open(ПутьКФайлу); открывает оболочку OpenOffice и в нем выбранный файл. В то время как аналогичная команда Excel открывает выбранный файл не показывая оболочку Экселя.
2. После закрытия файла OpenOffice.Close();, OpenOffice продолжает висеть в задачах.
Ну и конечно же нет возможности например подсчитать сколько всего строк в файле или сколько колонок и т.д.
0
22.09.2011, 16:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.09.2011, 16:52
Помогаю со студенческими работами здесь

Загрузка из openoffice
Доброго времени суток. При загрузке из openoffice в 1С ячейка с форматом время преобразуется в...

Openoffice, 2 документа в один?
Всем привет! Есть два текстовых файла .odt и цель объединить их в один. Как это реализовать...

Выбор кодировки при открытие файла через OpenOffice
Добрый день. При открытие файла с помощью openoffice получаю иероглифы, необходимо установить...

OpenOffice в 1с8.3
Подскажите есть ли способ получить данные из таблиц xls, xlsx,ods в 1с 8.3.7 linux версии? Какой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru