Имя: Пароль:
1C
 
Как получить значение ячейки из файла excel?
0 Shaytan
 
12.10.04
17:05
Есть *.xls файл мне нужно последовательно считать каждую ячейку (в ячейке находится текст). Как обратиться к ячейке? Или может лучше сохранить как текстовый файл и не париться?
1 Волшебник
 
12.10.04
17:15
Через OLE:
Excel = ПолучитьCOMОбъект(,Путь);
далее как в 7.7
2 Shaytan
 
12.10.04
17:41
А подробнее?
3 Shaytan
 
12.10.04
17:43
Мне надо подключится к excel через COM, открыть из него файл и считывать ячейки? (1) Я этого в 7.7 не делал
4 Diman
 
12.10.04
17:47
Хотелось бы узнать, что у тебя получится... ;)))

v8: Траблы с вызовом Excel
5 miki
 
12.10.04
17:48
...
     ExcelApp = СоздатьОбъект("Excel.Application");
...
   РабочаяКнига=ExcelApp.WorkBooks;
   РабочаяКнига.Open(<ИмяФайла_XLS>);
   Лист=ExcelApp.WorkSheets(1);
...
Далее пускаешь цикл по строкам с счетчиком <Счетчик_строк>
В цикле
...
       Значение=Лист.Cells(<Счетчик_строк>,<Номер_Колонки>).Value;
//<Номер_Колонки> - нужная колонка
...
КонецЦикла;
6 Shaytan
 
12.10.04
17:57
Спасибо всем. попробую.
7 Shaytan
 
13.10.04
13:09
Сделал так, может кому пригодится:
Об_Excel=Новый COMОбъект("Excel.Application");
   Об_файл = Новый Файл(ПутьКФайлуИсточнику);
   Ч_НачСтрока=0;
   Если Об_файл.Существует() Тогда
       Стр_Конект = "Driver={Microsoft Excel Driver (*.xls)};DriverId=790;Dbq="+Об_файл.ПолноеИмя+";DefaultDir="+Об_файл.Путь+";";                      
       Об_Конект = Новый COMОбъект("ADODB.Connection");
       Попытка
           Об_Конект.Open(Стр_Конект);          
       Исключение
           Сообщить ("Не возможно подключится к Microsoft Excel Driver!!!
           |Возможно файл ["+Об_файл.ПолноеИмя+"] открыт другим пользователем!!!");
           Возврат;
       КонецПопытки;
       
       Попытка
           Стр_SQL = "SELECT FIO FROM [A:A] where FIO <>'' ORDER BY FIO";
           Об_РекордСет=Об_Конект.Execute(Стр_SQL);          
       Исключение
           Сообщить ("Не возможно получить данные из файла ["+Об_файл.ПолноеИмя+"] открыт другим пользователем!!!");
           Возврат;          
       КонецПопытки;
        НоваяГрупп =  Справочники.ФизическиеЛица.СоздатьГруппу();
        НоваяГрупп.Наименование =  Об_файл.Имя;
       НоваяГрупп.Записать();          
       СМ_ФизЛица = Справочники.ФизическиеЛица;
       
       Пока Об_РекордСет.EOF = Ложь Цикл
           НовыйЭлемент = СМ_ФизЛица.СоздатьЭлемент();
           Состояние = " Загрузка " +  СокрЛП(Об_РекордСет.Fields(0).value);
           НовыйЭлемент.Наименование = СокрЛП(Об_РекордСет.Fields(0).value);
           НовыйЭлемент.Родитель = НоваяГрупп.Ссылка;
           НовыйЭлемент.Записать();
           Об_РекордСет.MoveNext();
       КонецЦикла; //Об_РекордСет.EOF<>-1
       Состояние = "Загрузка завершена!";
       Об_Конект.Close();
       Об_Конект=Неопределено;
       Об_РекордСет=Неопределено;
   Иначе
       Сообщить ("Не верно указано имя файла!!!");
       возврат;                      
   КонецЕсли; // Об_файл.Существует()    
   
КонецПроцедуры
8 ШпиЁн
 
01.11.04
06:02
Выражение звучало: SELECT FIO FROM [A:A] where FIO <>'' ORDER BY FIO
Обругали: Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][Драйвер ODBC Excel] Слишком мало параметров. Требуется 1.
Не совсем понял за что отругали!!!?
9 Shaytan
 
01.11.04
09:18
Не знаю. Я привел кусок рабочего кода. FIO <> '' - две одинарные ковычки. Это простейший пример где в фойле EXСEL  данные находятся в первой колонке первого листа, и название колонки FIO.