Question

J'utilise une lecture cfspreadsheet pour lire une feuille dans un objet de requête.

<cfspreadsheet action="read" src="TestExcel.xls" sheet="1" query="spreadsheetData" headerrow="1" excludeHeaderRow="true"> 

Le problème est que certains en-têtes contiennent plus d’un mot.Je me retrouve donc avec une requête un peu comme ceci :

ID  Name    Start Date  End Date
3   Test    1/1/2009    1/1/2013
17  Test 2  11/11/2010  11/11/2012

Si j'essaie d'accéder à l'une des colonnes comportant un espace dans le nom de la colonne, j'obtiens une erreur.

<cfoutput query="spreadsheetData">
   #start date#
</cfoutput>

J'ai essayé #[start date]# aussi, mais cela n'a pas fonctionné.Je ne peux pas contrôler le format de la feuille Excel que je reçois.Existe-t-il un moyen d'accéder aux colonnes d'en-tête à plusieurs mots ?

Était-ce utile?

La solution

Lorsque vous utilisez la notation entre crochets, le contenu doit se terminer sous la forme d'une chaîne, donc :

<cfoutput query="spreadsheetData">
    #spreadsheetData['start date'][CurrentRow]#
</cfoutput>


Si vous n'utilisez pas de guillemets, vous transmettez une variable, ce qui se fait ainsi :

<cfset ColumnName = 'start date' />

<cfoutput query="spreadsheetData">
    #spreadsheetData[ColumnName][CurrentRow]#
</cfoutput>


Notez que vous devez utiliser le nom de la requête avant les crochets - si vous écrivez simplement [ColumnName] alors il s'agit d'une notation de création de tableau en ligne, sans accès à la variable.

De plus, si vous l'utilisez en dehors d'une boucle de requête (c'est-à-dire pas dans cfoutput/cfloop avec l'attribut de requête), vous devez également définir la portée du CurrentRow variable, c'est-à-dire

spreadsheetData[ColumnName][spreadsheetData.CurrentRow]

(ou fournissez votre propre numéro/variable explicite).


Comme Leigh le note ci-dessous, pour un comportement spécifique à cfspreadsheet, vous pouvez également spécifier le columnnames attribut, pour renommer la colonne en quelque chose de directement accessible, par exemple.

<cfspreadsheet query=".." columnNames="Foo,Bar,StartDate,Etcetera" ..>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top