всё остальное из Excel файлов - это Зло?
xls - зло, xlsb - тоже; но это, мягко говоря, не "всё"
Да, как-то день потратил пытаясь понять, почему у меня процентов 10 из xls просто не грузится данных в ячейках.
"просто не грузится" это полбеды, вот роняет запрос - беда )))
а в чём затык? вроде известный факт
Совсем неизвестный, для тех кто Apriori))) Я из автокада навыгружал себе в формате .xls, И думал счастье будет. А оказалось, что как в старом анекдоте, то что вы считали оргазмом оказалось астмой... И вот теперь думаю... А там же ведь есть .txt. Лучше так буду делать
Можно обращаться к бинарникам и не ловить при этом ошибки о некорректном формате. Для этого придется использовать функцию Binary.Buffer(). Как это выглядит? При создании запроса к файлу автоматически генерится код вида Excel.Workbook( File.Contents("C:\Folder\file.xlsb" ), null, true) Так вот его нужно переделать так: Excel.Workbook( Binary.Buffer( File.Contents("C:\Folder\file.xlsb" ) ), null, true ) В таком случае все содержимое файла уедет в память и дальнейшее обращение функции Excel.Workbook будет происходить именно с памятью, а не с диском. Таким образом мы избегаем конфликта этой функции, которая пытается сделать предпросмотр данных через коннектор ACE.oledb, который к этому не очень предрасположен. Т.е. сначала коннектор полностью грузит содержимое файла в память, и только потом уже PQ лезет в память своими потными ручонками. Проверял, схема рабочая, НО выгрузка очень медленная. А с более-менее большими файлами работать просто мучение. Так что если уж очень надо, то пользуйтесь, но лучше все же текст или xlsx. Возможно такой же прием поможет избежать и глюков при работе с файлами формата xls, но это не проверял, так что не гарантирую. Всех благ.
if...then...else
либо список на два поделить и каждый отдельно обработать
Я вот что-то совсем уже не хочу с .xls дело иметь...
тогда на VBA написать кусок кода и пересохранить всё из xls в xslx
Я таки так и сделал)
...неэффективно, кмк... Хотя....
Как проявляется неэффективность?
У меня заготовлена функция, которая собирает. У меня теперь есть знание, что она не катит для .xls Но, думаю, что if...then...else это не решение, потому что не знаю сколько надо писать условий для каждого расширения...
Обсуждают сегодня