Identificativo articolo: 288215 - Ultima modifica: martedì 7 novembre 2006 - Revisione: 3.0

INFO: Microsoft Excel 2002 and XML

Suggerimento di sistemaIl presente articolo fa riferimento a un sistema operativo diverso da quello in uso. Il contenuto dell'articolo che potrebbe non essere relativo al sistema in uso è disabilitato.
Espandi tutto | Chiudi tutto

Sommario

Excel 2002 consente di aprire e salvare i file nel formato XML (Extensible Markup Language). In questo articolo viene fornita una panoramica sul formato XML, sui fogli di stile XML e sul modo in cui possono essere utilizzati in Excel. Nell'articolo vengono affrontati i seguenti argomenti:

Informazioni

Cos'è il formato XML?

L'XML è un formato di testo per i dati strutturati. Dato che l'XML è semplice da creare e interpretare, è utilizzato in un'ampia varietà di applicazioni. Il formato XML corretto segue una serie di linee guida che stabiliscono la struttura dei dati anche se consente allo sviluppatore XML una grande flessibilità nella creazione di un numero illimitato di tag personalizzati che consentono di descrivere nel migliore dei modi i dati e le relazioni che esistono tra loro.

Come l'HTML, l'XML è un linguaggio markup in cui il testo è organizzato con una combinazione di tag, vale a dire termini racchiusi tra parentesi angolari < e >) e attributi del tipo nome = "valore". Tuttavia, mentre l'HTML specifica il significato di ogni tag e attributo e come devono essere formattati per la visualizzazione, l'XML utilizza i tag solo per delineare gli elementi di dati. Dato che è possibile utilizzare qualsiasi nome di tag in formato XML, è discrezione dell'applicazione interpretare i dati e il relativo significato. Anche se gli sviluppatori XML sono liberi di creare qualsiasi tag o gerarchia che più ritengono appropriata per i dati, esiste una serie di specifiche che deve essere seguita per garantire che l'XML sia considerato corretto. Per essere corretto l'XML deve avere le seguenti caratteristiche:
  • Deve contenere esattamente un elemento principale con un nome univoco che non viene visualizzato in nessun altro elemento del documento.
  • Gli elementi devono essere nidificati in modo corretto per fare in modo che nessun tag si sovrapponga tra gli elementi.
  • Tutti i tag degli elementi devono essere chiusi.
  • I tag iniziali e finali degli elementi devono utilizzare un tipo di lettera (maiuscola o minuscola) coerente, dato che il linguaggio XML è in grado di distinguere le lettere minuscole dalle maiuscole.
  • Tutti gli attributi degli elementi devono essere racchiusi tra virgolette, doppie o singole.
  • I caratteri speciali, come &, <, >, devono essere definiti come entità incorporate &amp;, <, >.
Quello riportato di seguito è un esempio di XML corretto:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="dictionary.xsl" ?>
<Dictionary>
  <Entries>
    <Entry>
      <Word Type="1">Energetic</Word>
      <Definition>Having, exerting, or displaying energy</Definition>
    </Entry>
    <Entry>
      <Word Type="1">Happy</Word>
      <Definition>Enjoying, displaying, or characterized by pleasure or joy</Definition>
    </Entry>
    <Entry>
      <Word Type="2">Emotion</Word>
      <Definition>A complex, strong subjective response</Definition>
    </Entry>
  </Entries>
</Dictionary>
Figura 1 - Esempio di XML corretto (Dictionary.xml)
Il codice XML della Figura 1 descrive le voci di un dizionario. L'elemento principale è <Dictionary>, che contiene un elemento figlio denominato <Entries>. <Entries> contiene tre elementi figlio, ciascuno dei quali descrive i dati per una singola voce del dizionario. A ogni voce corrispondono due elementi figlio, vale a dire <Word> e <Definition>. Il valore di ciascun elemento <Word> è il termine stesso. Gli elementi <Word> dispongono inoltre di un attributo Type che indica se il termine è un aggettivo (1) o un sostantivo (2). Gli elementi <Definition> hanno un valore testuale e nessun attributo.

Cos'è un foglio di stile XML?

I tag XML descrivono i dati in un file di testo, ma il linguaggio XML in sé non specifica il modo in cui i dati devono essere presentati all'utente. Le regole di formattazione per i dati XML sono spesso contenute nei fogli di stile XML. Tali fogli di stile sono documenti XML corretti che utilizzano il linguaggio XSL (Extensible Style Language) per trasformare i dati XML per la visualizzazione. È possibile disporre di molti fogli di stile per gli stessi dati XML. Mentre la struttura di dati XML vera e propria potrebbe rimanere invariata, i fogli di stile consentono la flessibilità di visualizzare i dati in molti modi diversi.
<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
  <xsl:template match="/">
    <HTML>
      <BODY>
        <UL>
          <xsl:for-each order-by="+ Word" select="Dictionary/Entries/Entry">
            <LI>
              <B><xsl:value-of select="Word"/></B>
              <xsl:if test="Word[@Type='1']"><I>adj.</I></xsl:if>
              <xsl:if test="Word[@Type='2']"><I>n.</I></xsl:if>
              <BR/>
              <xsl:value-of select="Definition"/>
              <BR/><BR/>
            </LI>
          </xsl:for-each>
        </UL>
      </BODY>
    </HTML>
  </xsl:template>
</xsl:stylesheet>
Figura 2: Foglio di stile XML (Dictionary.xsl)

Dictionary.xsl, illustrato nella Figura 2, è un foglio di stile che può essere utilizzato per trasformare il file Dictionary.xml di esempio. La trasformazione dà come risultato una presentazione dei dati in formato HTML che può essere visualizzata in un browser. Il foglio di stile XSL dispone le voci del dizionario in ordine alfabetico in un elenco puntato e formatta ciascun componente della voce del dizionario. Il documento XML trasformato che viene visualizzato nel browser è simile a quanto riportato di seguito:
  • Emotion n.
    A complex, strong subjective response

  • Energetic adj.
    Having, exerting, or displaying energy

  • Happy adj.
    Enjoying, displaying, or characterized by pleasure or joy

Esercizio: copiare e incollare il codice XML della Figura 1 in qualsiasi editor di testo e salvarlo come Dictionary.xml. Copiare e incollare il foglio di stile XSL della Figura 2 e salvarlo come Dictionary.xsl nella stessa cartella di Dictionary.xml. Avviare Internet Explorer e trovare il file Dictionary.xml.

In che modo Excel traduce i file XML?

Excel è in grado di aprire qualsiasi file XML corretto. I file XML possono essere aperti direttamente scegliendo Apri dal menu File. I file XML possono anche essere aperti in modo programmatico utilizzando il metodo Open o OpenXML dell'insieme Workbooks. Indipendentemente dal fatto che il documento XML venga aperto attraverso il codice o l'interfaccia utente, il file è contrassegnato in Sola lettura per evitare sostituzioni accidentali del file di origine con uno in formato XMLSS (XML Spreadsheet).

XML bidimensionale

Quando si importa il codice XML che non è in formato XMLSS, Excel utilizza un algoritmo bidimensionale speciale per caricare i dati nelle righe e nelle colonne. I fogli di lavoro di Excel sono entità bidimensionali costituite da righe e colonne. Dato che l'XML può avere più di due dimensioni, la bidimensionalità è necessaria per interpretare il codice XML per fare in modo che venga caricato nelle celle di un foglio di lavoro.

Si considerino i due esempi di codice XML riportati di seguito, che rappresentano essenzialmente gli stessi dati in modi diversi:

<?xml version="1.0"?>
<Customer>
   <CustomerID>1234</CustomerID>
   <FirstName>John</FirstName>
   <LastName>Doe</LastName>
</Customer>
Figura 3: XML con elementi figlio
<?xml version="1.0"?>
<Customer CustomerID="1234" FirstName="John" LastName="Doe"/>
Figura 4: XML con attributi
Se si carica il codice XML della Figura 3 in Excel, i dati verranno importati nelle celle come illustrato di seguito:

 ABC
1/Customer  
2/CustomerID/FirstName/LastName
31234JohnDoe

Excel considera gli attributi esattamente come elementi figlio. Per eliminare la collisione dei nomi con gli elementi esistenti, Excel fa precedere il simbolo at (@) ai nomi degli attributi per coerenza con gli standard di assegnazione dei nomi degli schemi XSL. Per questo motivo, il codice XML della Figura 4 viene caricato nelle celle nello stesso modo, a eccezione delle celle A2, B2 e C2 che contengono rispettivamente "/@CustomerID", "/@FirstName" e "/@LastName".

Il codice XML delle Figure 3 e 4 segue una struttura bidimensionale, semplice da verificare. Si consideri invece il codice XML riportato di seguito, che non può essere facilmente interpretato come bidimensionale a causa dell'aggiunta del livello <Order>:

<?xml version="1.0"?>
<Customers>
  <Customer>
    <CustomerID>1234</CustomerID>
    <FirstName>John</FirstName>
    <LastName>Doe</LastName>
    <Orders>
      <Order ProdID="AAA" Amt="10"/>
      <Order ProdID="BBB" Amt="3"/>
    </Orders>
  </Customer>
  <Customer>
    <CustomerID>5678</CustomerID>
    <FirstName>Alice</FirstName>
    <LastName>Smith</LastName>
    <Orders>
      <Order ProdID="AAA" Amt="5"/>
    </Orders>
  </Customer>
</Customers>
Figura 5: XML con due livelli al di sotto dell'elemento principale

Nel codice XML della Figura 5 è presente un cliente con due ordini e un altro cliente con un ordine. Excel deve importare il codice XML in modo tale che la relazione tra Orders e Customers sia conservata. Excel importa il codice XML in tre righe, come illustrato di seguito:


 ABCDEFG
1/Customer      
2/Customer#id/Customer/CustomerID/Customer/CustomerID/#agg/Customer/FirstName/Customer/LastName/Customer/Orders/Order/@Amt/Customer/Orders/Order/@ProdID
3112341234JohnDoe10AAA
411234 JohnDoe3BBB
5256785678AliceSmith5AAA


Sono presenti due colonne aggiuntive, vale a dire una colonna #id che associa la riga con il nodo <Customer> e una colonna #agg che rappresenta ciò che può essere considerato come "aggiunta". Con #agg il valore del primo nodo del livello superiore è elencato una volta e omesso per le righe rimanenti.

Si noti inoltre che la colonna <Amt> precede la colonna <ProdID> anche se è visualizzata dopo <ProdID> nel codice XML vero e proprio. L'algoritmo bidimensionale carica gli elementi in ordine alfabetico da sinistra a destra, non nell'ordine naturale in cui sono disposti nel documento XML originale.

Fogli di stile

L'utilizzo dei fogli di stile può consentire vantaggi importanti per l'apertura dei file XML in Excel. Mediante un foglio di stile il controllo della collocazione dei dati nelle celle è migliore ed è inoltre possibile formattare le celle. Quando si apre un file XML in Excel e tale file contiene una o più istruzioni di elaborazione xml-stylesheet, verrà richiesto di selezionare i fogli di stile desiderati per la trasformazione.

Ancora una volta si consideri il codice della Figura 5. Se si aggiunge un'istruzione di elaborazione al codice XML (<?xml-stylesheet type="text/xsl" href="Customer.xsl" ?>), sarà possibile controllare in quali colonne del foglio di lavoro vengono visualizzati i dati e applicare la formattazione personalizzata. Quello riportato di seguito è un esempio di foglio di stile che può essere utilizzato per la trasformazione del codice XML di esempio.

<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
  <xsl:template match="/">
    <HTML>
      <HEAD>
        <STYLE>   
          .HDR { background-color:bisque;font-weight:bold }
          .CustomerRow { border-top:thin solid black }
        </STYLE>
      </HEAD>
   
      <BODY>
        <TABLE>
          <COLGROUP WIDTH="100" ALIGN="CENTER"></COLGROUP>
          <COLGROUP WIDTH="100" ALIGN="LEFT"></COLGROUP>
          <COLGROUP SPAN="2" WIDTH="80" ALIGN="CENTER"></COLGROUP>
          <TD CLASS="HDR">Customer ID</TD>
          <TD CLASS="HDR">Name</TD>
          <TD CLASS="HDR">Product ID</TD>
          <TD CLASS="HDR">Amount</TD>
          <xsl:for-each select="Customers/Customer">
            <TR>
              <TD CLASS = "CustomerRow">
                <xsl:value-of select="CustomerID"/>
              </TD>
              <TD CLASS = "CustomerRow">
                <xsl:value-of select="FirstName"/> <xsl:value-of select="LastName"/>
              </TD>
              <TD CLASS = "CustomerRow">
                <xsl:value-of select="./Orders/Order/@ProdID"/>
              </TD>
              <TD CLASS = "CustomerRow">
                <xsl:value-of select="./Orders/Order/@Amt"/>
              </TD>
            </TR>
            <xsl:for-each select="./Orders/Order">
              <xsl:if expr="(childNumber(this)) > 1">
                <TR>
                  <TD> </TD><TD> </TD>
                  <TD><xsl:value-of select="@ProdID"/></TD>
                  <TD><xsl:value-of select="@Amt"/></TD>
                </TR>
              </xsl:if>
            </xsl:for-each>
          </xsl:for-each>
        <TR><TD CLASS="CustomerRow" COLSPAN="4"> </TD></TR>
        </TABLE>
      </BODY>
    </HTML>
  </xsl:template>
</xsl:stylesheet>
Figura 6 - Foglio di stile XML (Customer.xsl)
Il foglio di stile trasforma il codice XML in codice HTML valido che Excel può tradurre in formato nativo. Quando si apre il codice XML applicandovi questo foglio di stile, Excel visualizza i dati sotto forma di una tabella costituita da quattro colonne con le intestazioni Customer ID, Name, Product ID e Amount. Nella tabella è inoltre presente la formattazione delle celle, ad esempio degli attributi dei tipi di carattere, dei colori di sfondo delle celle e dei bordi.

Esercizio: copiare e incollare il codice XML della Figura 5 in qualsiasi editor di testo e salvarlo come Customer.xml. Copiare quindi il foglio di stile XSL della Figura 6 e salvarlo come Customer.xsl nella stessa cartella di Customer.xml. Avviare Excel 2002 e aprire il file con e senza il foglio di stile applicato per verificare la differenza.

Risoluzione dei problemi di apertura dei file XML

Se si tenta di aprire un file XML non corretto, verrà visualizzato un avviso o un errore dell'analisi dello script. L'avviso visualizzato fornisce una descrizione del motivo per cui il documento XML non può essere aperto. La descrizione può anche fornire dettagli sul nodo che ha causato l'errore della traduzione. In alcuni casi in cui è presente un errore di analisi, potrebbe essere visualizzata una finestra di dialogo che elenca gli errori invece di un messaggio di avviso. Gli errori di analisi degli script sono registrati in un file denominato XMLErr.log contenuto nella cartella Temp. Per esaminare rapidamente il contenuto di XMLErr.log, attenersi alla seguente procedura:
  1. Al prompt dei comandi digitare cd %temp% e premere INVIO. La visualizzazione passerà alla cartella Temp.
  2. Al prompt dei comandi digitare type xmlerr.log e premere INVIO per visualizzare il contenuto del file registro.
Un altro problema che potrebbe verificarsi all'apertura del file XML è dato dalla visualizzazione della procedura guidata per l'importazione del testo. I file XML sono semplicemente file di testo strutturati in modo specifico. Perché Excel riconosca che il file che sta per essere aperto sia in codice XML e non in testo semplice, il primo elemento del file XML deve essere una dichiarazione XML che contiene almeno il nome riservato xml e il numero della versione. Il documento XML deve inoltre contenere almeno un elemento, vale a dire l'elemento principale:
<?xml version="1.0"?>
<MyXML>
</MyXML>

Il formato XMLSS (XML Spreadsheet)

Excel può salvare le cartelle di lavoro in formato XML. Quando si effettua questa operazione, Excel salva la cartella di lavoro nel formato XMLSS, che descrive il contenuto della cartella di lavoro rendendo permanenti dati e formule delle celle, formati di cella e impostazioni del foglio di lavoro e delle cartelle di lavoro. Alcune funzionalità di Excel tuttavia non possono essere permanenti in XML, ad esempio:
  • Grafici
  • Oggetti OLE
  • Disegno di forme
  • Progetti VBA
  • Gruppi e bordi
Il formato XMLSS è comune per Excel 2002 e per il componente foglio di calcolo di Office XP, pertanto i file in formato XMLSS possono essere condivisi dai due elementi. È anche possibile creare fogli di stile personalizzati per i file XMLSS per trasformare i dati in un altro formato che possa essere condiviso da qualsiasi altra applicazione.

Integrazione dell'XML nelle soluzioni Excel

L'utilizzo dei dati XML consente agli sviluppatori di avere molte opportunità per le soluzioni di Excel 2002.

È ad esempio possibile creare cartelle di lavoro costituite da più fogli in formato XMLSS in fase di runtime senza automatizzare Excel, operazione che richiede il caricamento del file eseguibile di Excel. Dato che Excel rappresenta una server di automazione out-of-process, le chiamate al modello di oggetti di Excel possono ridurre il livello delle prestazioni. È possibile creare il formato XMLSS in-process utilizzando solo il parser Microsoft XML (MSXML) e i fogli di stile XML oppure è possibile utilizzare il componente in-process foglio di calcolo di Office XP per creare un foglio di calcolo e recuperare il formato XMLSS. In entrambi i casi il formato XMLSS risultante potrà essere aperto direttamente in Excel come formato nativo. Inviando il formato XMLSS ai browser client mediante il tipo di contenuto MIME (Multipurpose Internet Mail Extensions) di Excel, le applicazioni Web come quelle che utilizzano le pagine ASP (Active Server Pages) possono creare cartelle di lavoro complesse senza dover eseguire Excel nel server. Per disporre di codice di esempio che mostri i possibili impieghi della creazione del formato XMLSS, fare clic sui numeri degli articoli della Microsoft Knowledge Base riportati di seguito:

288130  (http://support.microsoft.com/kb/288130/ ) HOWTO: Utilizzare ASP per creare un foglio di calcolo XML per la visualizzazione sul lato client
285891  (http://support.microsoft.com/kb/285891/ ) HOWTO: Utilizzare Visual Basic o ASP per creare un foglio di calcolo XML per Excel 2002
Un altro impiego potenziale del codice XML in una soluzione Excel è quello di estrarre i dati da un intervallo di celle in un formato che possa essere facilmente condiviso con altre applicazioni. Il formato XMLSS può essere estratto dalle celle di un foglio di lavoro richiamando la proprietà Valuedell'oggetto Range con il parametro xlRangeValueXMLSpreadsheet. È possibile utilizzare un foglio di stile per trasformare il formato XMLSS in un formato XML qualsiasi che possa essere utilizzato da un'altra applicazione. Un impiego possibile di quanto appena descritto è quello di trasformare il codice XMLSS nel formato XML personalizzato che possa essere inviato ed elaborato da un'applicazione Web. Per disporre di un esempio di questa tecnica, vedere l'articolo della Microsoft Knowledge Base riportato di seguito:

278976  (http://support.microsoft.com/kb/278976/ ) HOWTO: Utilizzare XSL per trasformare un foglio di calcolo XML di Excel per l'utilizzo sul lato server

Riferimenti

Per ulteriori informazioni, vedere i seguenti siti Web (informazioni in lingua inglese):
World Wide Web Consortium (W3C)
http://www.w3.org (http://www.w3.org)

Introduzione all'XML
http://msdn.microsoft.com/xml/c-frame.htm?/xml/general/intro.asp (http://msdn.microsoft.com/xml/c-frame.htm?/xml/general/intro.asp)

Esercitazioni XML
http://msdn.microsoft.com/xml/c-frame.htm?/xml/tutorial/default.asp (http://msdn.microsoft.com/xml/c-frame.htm?/xml/tutorial/default.asp)

Guida per lo sviluppatore XSLT
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk/html/6b8e4b12-f090-49e5-a2e4-b8fb913ac320.asp (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk/html/6b8e4b12-f090-49e5-a2e4-b8fb913ac320.asp)


Guida per lo sviluppatore XML
http://msdn.microsoft.com/library/en-us/xmlsdk/htm/xml_devgd_overview_91b9.asp (http://msdn.microsoft.com/library/en-us/xmlsdk/htm/xml_devgd_overview_91b9.asp)

Le informazioni in questo articolo si applicano a
  • Microsoft Excel 2002 Standard Edition
Chiavi: 
kbinfo KB288215
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.