|
Загрузка данных из большого файла 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
|
|
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший