v8: Чтение файла Excel Xml через ADODB #566812


#0 by D_E_S2
Пытаюсь прочитать данные из файла Xml, который был сохранен из Excel (не знаю уж кому понадобилось сохранять таблицу в этом формате). Использую строку соединения: Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D: emp f.xml;Extended Properties="Excel 12.0;HDR=YES;IMEX=1;" Метод Open выдает ошибку "...Внешняя таблица не имеет предполагаемый формат.". Пробовал также через "Microsoft.Jet.OLEDB.4.0" и "Excel 8.0" - результат аналогичный. Если файл открыт в приложении в момент чтения или пересохранен в формате "xls", то данные считываются нормально. Возможно ли как-то побороть это или через ADODB можно прочитать не все что было сохранено в Excel?
#1 by Живой Ископаемый
стоп, АДОДБ не имеет отношения к приложению... Объясню на примере.. Ексель может вполне себе сохранить в формат CSV - комма сепарэйтед чего-то там.. Но когда мы через АДОДБ пытаемся подключится к такому файлу - мы ничего не говорим про Ексель strConnection = "Driver={Microsoft Text Driver (*.txt; *.csv)};" & _ "Dbq=" & Server.MapPath(".csv") & ";"Extensions=asc,csv,tab,txt;Persist Security Info=False" мы указываем драйвер, который к Екселю не имеет прямого отношения. Ексель сам им пользуется... Так вот в случае с ХМЛ я вовсе не уверен что существует драйвер:
#2 by Живой Ископаемый
но хотя... вы собственно тут Ексель указываете только в Екстендет пропертиз... Ну.. нужно читать документацию к конкретным драйверам, которые вы пытаетесь использовать: ACE, Jet, Excell... но в общем, все равно нет... в конце концов, если это для вас одноразовая акция - перегоните имеющийся хмл в тот формат, с которым вам удобнее всего работать, и читайте уже из него
#3 by D_E_S2
Я 2 часа времени убил именно из-за того, что Excel в итоге открывает этот файл (хоть и с преобразованием) и, как-то же, сохраняет в нем. :(
#4 by Живой Ископаемый
2 это может быть его собственная функция...
#5 by Живой Ископаемый
То есть например через ОЛЕ вы с помощью екселя сможете прочитать это файл, а с помощью ОЛЕДБ - нет
#6 by D_E_S2
Мда... Получается или через OLE "перегонять" в формат XLSX, или "забить"...
#7 by Живой Ископаемый
угу
#8 by Живой Ископаемый
Ну или читать непосредственно как ХМЛ через ЧтениеХМЛ или другие спец.объекты для чтения ХМЛ
#9 by izekia
а почему бы просто не вытянуть необходимые данные из хмл? зачем нужно дергать ексель или адо?
#10 by D_E_S2
Это Excel такой потому-что...
#11 by D_E_S2
а не обычный XML
#12 by Живой Ископаемый
непонятно... пару первых строчек можно?
#13 by izekia
там обычный хмл + стили различные из екселя и тп ... данные легко вытягиваются если с XQuery знаком
#14 by D_E_S2
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" ...и далее данные Эту фигню разбирать еще нуднее чем пересохранить файл в нормальном формате. :)
#15 by Живой Ископаемый
а...
#16 by izekia
там описание стилей отдельно от данных, вытягивается все легко, если голову задействовать
#17 by D_E_S2
Да пересохранить файл в нужный формат тоже не особо сложно (и читать уже данные из него), но хотелось бы без лишних изворотов обойтись. Видимо не получится...
#18 by izekia
вот здесь все данные:
#19 by andrewks
ну и начинай выбирать в xml ноды "Row", в чём проблема?
#20 by izekia
большое, блин, спасибо ... а я-то сижу думаю чем бы мне заняться)
#21 by andrewks
чего язвишь? тебе же только данные надо вытянуть, без всяких там оформлений, стилей, и прочего? правильно я понял?
#22 by izekia
не поверишь ... мне это нафиг не надо)
#23 by andrewks
ы-ы-ы, попутал )))
#24 by andrewks
ты откуда этот кусок выложил? я поэтому и подумал, что это ТС
#25 by izekia
ну сам записал в этом формате, чтобы наглядно показать, что данные легко вытянуть
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С