|
v8: Чтение файла Excel Xml через ADODB | ☑ | ||
---|---|---|---|---|
0
D_E_S2
28.08.11
✎
19:54
|
Пытаюсь прочитать данные из файла Xml, который был сохранен из Excel (не знаю уж кому понадобилось сохранять таблицу в этом формате).
Использую строку соединения: Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\temp\nf.xml;Extended Properties="Excel 12.0;HDR=YES;IMEX=1;" Метод Open() выдает ошибку "...Внешняя таблица не имеет предполагаемый формат.". Пробовал также через "Microsoft.Jet.OLEDB.4.0" и "Excel 8.0" - результат аналогичный. Если файл открыт в приложении в момент чтения или пересохранен в формате "xls", то данные считываются нормально. Возможно ли как-то побороть это или через ADODB можно прочитать не все что было сохранено в Excel? |
|||
1
Живой Ископаемый
28.08.11
✎
20:06
|
стоп, АДОДБ не имеет отношения к приложению... Объясню на примере.. Ексель может вполне себе сохранить в формат CSV - комма сепарэйтед чего-то там.. Но когда мы через АДОДБ пытаемся подключится к такому файлу - мы ничего не говорим про Ексель
strConnection = "Driver={Microsoft Text Driver (*.txt; *.csv)};" & _ "Dbq=" & Server.MapPath(".\csv\") & ";"Extensions=asc,csv,tab,txt;Persist Security Info=False" мы указываем драйвер, который к Екселю не имеет прямого отношения. Ексель сам им пользуется... Так вот в случае с ХМЛ я вовсе не уверен что существует драйвер: http://www.connectionstrings.com/ |
|||
2
Живой Ископаемый
28.08.11
✎
20:10
|
но хотя... вы собственно тут Ексель указываете только в Екстендет пропертиз... Ну.. нужно читать документацию к конкретным драйверам, которые вы пытаетесь использовать: ACE, Jet, Excell... но в общем, все равно нет...
в конце концов, если это для вас одноразовая акция - перегоните имеющийся хмл в тот формат, с которым вам удобнее всего работать, и читайте уже из него |
|||
3
D_E_S2
28.08.11
✎
20:10
|
"...не уверен что существует драйвер"
Я 2 часа времени убил именно из-за того, что Excel в итоге открывает этот файл (хоть и с преобразованием) и, как-то же, сохраняет в нем. :( |
|||
4
Живой Ископаемый
28.08.11
✎
20:11
|
2(3) это может быть его собственная функция...
|
|||
5
Живой Ископаемый
28.08.11
✎
20:12
|
То есть например через ОЛЕ вы с помощью екселя сможете прочитать это файл, а с помощью ОЛЕДБ - нет
|
|||
6
D_E_S2
28.08.11
✎
20:14
|
Мда... Получается или через OLE "перегонять" в формат XLSX, или "забить"...
|
|||
7
Живой Ископаемый
28.08.11
✎
20:15
|
угу
|
|||
8
Живой Ископаемый
28.08.11
✎
20:16
|
Ну или читать непосредственно как ХМЛ через ЧтениеХМЛ или другие спец.объекты для чтения ХМЛ
|
|||
9
izekia
28.08.11
✎
20:16
|
а почему бы просто не вытянуть необходимые данные из хмл?
зачем нужно дергать ексель или адо? |
|||
10
D_E_S2
28.08.11
✎
20:21
|
Это Excel такой потому-что...
|
|||
11
D_E_S2
28.08.11
✎
20:21
|
а не обычный XML
|
|||
12
Живой Ископаемый
28.08.11
✎
20:22
|
непонятно... пару первых строчек можно?
|
|||
13
izekia
28.08.11
✎
20:25
|
(10) там обычный хмл + стили различные из екселя и тп ...
данные легко вытягиваются если с XQuery знаком |
|||
14
D_E_S2
28.08.11
✎
20:26
|
<?xml version="1.0"?>
<?mso-application progid="Excel.Sheet"?> <Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:html="http://www.w3.org/TR/REC-html40"> <DocumentProperties xmlns="urn:schemas-microsoft-com:office:office"> <Author>Unknown</Author> <LastAuthor>Денис</LastAuthor> <Created>2008-06-01T17:32:12Z</Created> <LastSaved>2008-06-01T17:43:06Z</LastSaved> <Version>14.00</Version> </DocumentProperties> <OfficeDocumentSettings xmlns="urn:schemas-microsoft-com:office:office"> <AllowPNG/> </OfficeDocumentSettings> <ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel"> <WindowHeight>9690</WindowHeight> <WindowWidth>19320</WindowWidth> <WindowTopX>360</WindowTopX> <WindowTopY>30</WindowTopY> <RefModeR1C1/> <ProtectStructure>False</ProtectStructure> <ProtectWindows>False</ProtectWindows> </ExcelWorkbook> ...и далее данные <Worksheet ss:Name="Лист1"> <Names> <NamedRange ss:Name="_FilterDatabase" ss:RefersTo="=Лист1!R2C1:R101C24" ss:Hidden="1"/> </Names> <Table ss:ExpandedColumnCount="52" ss:ExpandedRowCount="101" x:FullColumns="1" x:FullRows="1" ss:StyleID="s63" ss:DefaultRowHeight="15"> <Column ss:StyleID="s63" ss:Width="143.25"/> <Column ss:StyleID="s63" ss:AutoFitWidth="0" ss:Width="90" ss:Span="1"/> <Column ss:Index="4" ss:StyleID="s63" ss:AutoFitWidth="0" ss:Width="171"/> <Column ss:StyleID="s63" ss:AutoFitWidth="0" ss:Width="65.25" ss:Span="1"/> <Column ss:Index="7" ss:StyleID="s63" ss:AutoFitWidth="0" ss:Width="58.5"/> <Column ss:StyleID="s63" ss:AutoFitWidth="0" ss:Width="57"/> <Column ss:StyleID="s63" ss:AutoFitWidth="0" ss:Width="63"/> <Column ss:StyleID="s63" ss:Width="60.75"/> <Column ss:StyleID="s63" ss:AutoFitWidth="0" ss:Width="66"/> <Column ss:StyleID="s63" ss:AutoFitWidth="0" ss:Width="62.25"/> <Column ss:StyleID="s63" ss:AutoFitWidth="0" ss:Width="77.25" ss:Span="1"/> <Column ss:Index="15" ss:StyleID="s63" ss:AutoFitWidth="0" ss:Width="90" ss:Span="1"/> Эту фигню разбирать еще нуднее чем пересохранить файл в нормальном формате. :) |
|||
15
Живой Ископаемый
28.08.11
✎
20:27
|
а...
|
|||
16
izekia
28.08.11
✎
20:29
|
(14) там описание стилей отдельно от данных, вытягивается все легко, если голову задействовать
|
|||
17
D_E_S2
28.08.11
✎
20:33
|
Да пересохранить файл в нужный формат тоже не особо сложно (и читать уже данные из него), но хотелось бы без лишних изворотов обойтись. Видимо не получится...
|
|||
18
izekia
28.08.11
✎
20:43
|
вот здесь все данные:
<Row> <Cell><Data ss:Type="Number">1</Data></Cell> <Cell><Data ss:Type="String">ser</Data></Cell> <Cell ss:StyleID="s62"><Data ss:Type="DateTime">2011-02-19T00:00:00.000</Data></Cell> </Row> <Row> <Cell><Data ss:Type="Number">2</Data></Cell> <Cell><Data ss:Type="Number">4</Data></Cell> </Row> <Row> <Cell ss:Index="2"><Data ss:Type="Number">433</Data></Cell> <Cell><Data ss:Type="String">dfr4</Data></Cell> </Row> |
|||
19
andrewks
28.08.11
✎
20:56
|
(18) ну и начинай выбирать в xml ноды "Row", в чём проблема?
|
|||
20
izekia
28.08.11
✎
20:58
|
(19) большое, блин, спасибо ... а я-то сижу думаю чем бы мне заняться)
|
|||
21
andrewks
28.08.11
✎
21:00
|
(20) чего язвишь? тебе же только данные надо вытянуть, без всяких там оформлений, стилей, и прочего? правильно я понял?
|
|||
22
izekia
28.08.11
✎
21:05
|
(21) не поверишь ... мне это нафиг не надо)
|
|||
23
andrewks
28.08.11
✎
21:07
|
(22) ы-ы-ы, попутал )))
|
|||
24
andrewks
28.08.11
✎
21:09
|
(22) ты откуда этот кусок выложил? я поэтому и подумал, что это ТС
|
|||
25
izekia
28.08.11
✎
21:15
|
(24) ну сам записал в этом формате, чтобы наглядно показать, что данные легко вытянуть
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |