Имя: Пароль:
1C
1С v8
Загрузка данных из большого файла excel
,
0 Lepochkin
 
23.10.13
16:50
Есть экселевский файл в нем 433 колонки.
Загружаю вот так

    СтрПодключения = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + ИмяФайла  + ";Extended Properties=Excel 8.0;";
    
    Connection = Новый COMОбъект("ADODB.Connection");
    Connection.ConnectionString =  СтрПодключения;
    Попытка
        Connection.Open();
    Исключение
        сообщить(ОписаниеОшибки());
    КонецПопытки;
    
    ТекстЗапроса = "SELECT * FROM [Лист1$]";    

    состояние("Запрос к листу EXСEL");
    Запрос = Новый COMОбъект("ADODB.Recordset");
    Запрос.Activeconnection = Connection;
    Попытка
        Запрос.Open(ТекстЗапроса);
    Исключение
        Сообщить ("Проблемы с выполнением запроса");
        Возврат;
    КонецПопытки;
    
    КоличествоКолонок = Запрос.Fields.Count;
    Если Не Запрос.EOF Тогда
        Запрос.MoveFirst();
        ид1 = 1;
        Пока Запрос.EOF = Ложь Цикл
            ОбработкаПрерыванияПользователя();
            _КодУТ = Запрос.Fields(0).Value;
            Для ид = 1 По КоличествоКолонок-1 Цикл
                //----Заполняем данные
            КонецЦикла;    
            Запрос.MoveNext();
            Состояние("Чтение данных из Эксель... " + ид1);
            ид1 = ид1 + 1;
        КонецЦикла;
    КонецЕсли;
    Запрос.Close();
    Connection.Close();

И все бы хорошо, но обрабатываются только первые 255 колонок. В чем ошибка?
1 shuhard
 
23.10.13
16:54
(0)[КоличествоКолонок = Запрос.Fields.Count;]
а что здесь ?
2 Lepochkin
 
23.10.13
17:02
255
3 Lepochkin
 
23.10.13
17:03
255 колонок было ограничение в 2003 экселе. Microsoft.ACE.OLEDB.12.0 - это вроде как поставщик 2007, но почему-то все равно срабатывает это ограничение
4 Infsams654
 
23.10.13
17:04
(2) а что тогда надо. Кстати до 2007-го, как раз максимальное количество колонок столько и было
5 Dmitry1c
 
23.10.13
17:05
КоличествоКолонок = 433;

Ваш кэп
6 Lepochkin
 
23.10.13
17:10
(5) Вы о чем? Если вот так обратиться Запрос.Fields(257).Value, то будет ошибка. Потому что Count = 255
7 shuhard
 
23.10.13
17:12
(6) что-то мешает залезть на MSDN и позырить ?
8 Lepochkin
 
23.10.13
17:23
(7) Знания :-) Подскажите поподробнее
9 МихаилМ
 
23.10.13
17:25
Extended Properties="Excel 12.0
10 Lepochkin
 
23.10.13
17:28
(9) Не помогло
11 mikecool
 
23.10.13
17:44
странно, где Маньяк со своей приблудой? кастую в ветку )
12 DailyLookingOnA Sunse
 
23.10.13
17:46
MSDN:
255 is the column limit for provider i guess. Anyway try to use 'Range" in select command and see what is happening.

string sql = "select * from [Foglio1$A1:BP1200]"; // apply range to the query