Je pensais que ce serait une simple opération de chargement et de bouclage XML, mais pour une raison inconnue, je ne peux rien lire dans une feuille de calcul Excel Excel.Comment lire les données de feuille de calcul Excel xml dans ASP Classic
Le contenu de la feuille de calcul Excel, qui semble être une sortie normalisée, est la suivante:
<?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"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:user="urn:my-scripts">
<DocumentProperties
xmlns="urn:schemas-microsoft-com:office:office">...
</DocumentProperties>
<OfficeDocumentSettings
xmlns="urn:schemas-microsoft-com:office:office">...
</OfficeDocumentSettings>
<ExcelWorkbook
xmlns="urn:schemas-microsoft-com:office:excel">...
</ExcelWorkbook>
<Styles>...</Styles>
<Worksheet ss:Name="Sheet1" ss:Protected="1">
<Names>
<NamedRange ss:Name="Print_Titles" ss:RefersTo="=Sheet1!C2,Sheet1!R7"/>
</Names>
<Table ss:ExpandedColumnCount="34" ss:ExpandedRowCount="32" x:FullColumns="1" x:FullRows="1" ss:DefaultRowHeight="13.2">
<Column ss:Hidden="1" ss:Width="175.2"/>
<Column ss:Width="250.20000000000002"/>
<Column ss:Width="60" ss:Span="31"/>
<Row ss:AutoFitHeight="0" ss:Height="150" ss:StyleID="s67">...</Row>
<Row ss:Height="15">
<Cell ss:StyleID="s69">
<Data ss:Type="String">W89231</Data>
</Cell>
<Cell ss:StyleID="s70">
<Data ss:Type="String">Tom Brown</Data>
<NamedCell ss:Name="Print_Titles"/>
</Cell>
<Cell ss:StyleID="s69">
<Data ss:Type="String">1E+</Data>
</Cell>
<Cell ss:StyleID="s69">
<Data ss:Type="String">1m</Data>
</Cell>
etc etc
Après avoir lu que byTagName est pas la meilleure méthode que j'essayé ce qui suit code singlenode d'abord:
strFilename = "1B.xml"
Set oXMLDoc = Server.CreateObject("MSXML2.DOMDocument.6.0")
oXMLDoc.async = False
oXMLDoc.Load (Server.MapPath(strFilename))
Set NodeList = oXMLDoc.documentElement.selectNodes("Workbook/Worksheet")
For Each Node In NodeList
Response.Write Node.selectSingleNode("row/cell/data/text()")
Next
Mais absolument rien ne se passe.
Je suis donc retourné à la byTagName éprouvée et essayé les suivantes:
strFilename = "1B.xml"
Set oXMLDoc = Server.CreateObject("MSXML2.DOMDocument.6.0")
oXMLDoc.async = False
oXMLDoc.Load (Server.MapPath(strFilename))
Set oRows = oXMLDoc.documentElement.getElementsByTagName("Row")
Response.Write oRows.length
Les commentaires de oRows.length est égal à zéro
Je ne peux pas sembler entrer dans les DOM, même si c'est un format de feuille de calcul Excel standard XML.
Je serais très reconnaissant si quelqu'un pouvait expliquer comment je peux lire les lignes et extraire les valeurs de données nécessaires.
Cordialement
Tom
Tom - vous pouvez le charger en tant que texte, envelopper que quelque chose comme ... et essayez de charger que XML dans MSXML. Il est peut-être confondu avec les deux nœuds de niveau supérieur. –
Salut VWombat - trouvé le problème était tout à faire avec les espaces de noms. Cette partie semble vraiment mal documentée sur le web –
Tom - pourquoi ne pas écrire une réponse à votre propre question alors. Peut-être que cela aidera à augmenter le pool de documentation? –