2012-12-19 13 views
6

Sono abbastanza nuovo nel mondo della programmazione, quindi questa domanda potrebbe essere sciocca, ma sono bloccato e speravo di ottenere un aiuto.utilizzando il carattere ':' in XDocument per la generazione Excel - C#

Sto utilizzando XDocument per modificare e aggiungere informazioni a un foglio di lavoro Excel (che è un documento XML), in un progetto per ottenere un report Excel da Autodesk Revit. Il documento foglio è costituito da informazioni foglio compresi righe e celle di questa configurazione:

<row r="11" spans="1:11" x14ac:dyDescent="0.2"> 
    <c r="A11" s="198" t="inlineStr"> 
     <is> 
      <t>example</t> 
     </is> 
    </c> 
    <c r="B11" s="199" t="inlineStr"> 
     <is> 
      <t>string</t> 
     </is> 
    </c> 
    <c r="C11" s="200"/> 
    <c r="D11" s="201"/> 
    <c r="E11" s="201"/> 
    <c r="F11" s="202"/> 
    <c r="G11" s="203"/> 
    <c r="H11" s="204"/> 
    <c r="I11" s="205"/> 
    <c r="J11" s="205"/> 
    <c r="K11" s="206"/> 
</row> 

La parte rilevante del codice è nella riga-elemento. L'attributo spans ha un valore di "1:11", ed è qui che il mio problema è. Non mi consentirà di inserire un carattere ':' come valore dell'attributo. Ho cercato la rete e ho scoperto che ha qualcosa a che fare con la dichiarazione dello spazio dei nomi a questo link: "The ':' character, hexadecimal value 0x3A, cannot be included in a name"

Tuttavia, ottenere questo carattere ":" nel valore dell'attributo è imperativo per il funzionamento di Excel documento. Creo l'elemento riga come segue:

XElement row = new XElement("row", 
        new XAttribute("r", i.ToString()), 
        new XAttribute("spans", "1:" + collumnCount.ToString()), 
        new XAttribute("x14ac:dyDescent", "0.2")); 

Non capisco il motivo per cui non mi permette di mettere un ':' nel valore della XAttribute, in quanto questo è solo una stringa. C'è un modo per farlo funzionare?

Ho provato ad aggiungere la stringa "1:11" a un XMLAttribute, utilizzando un XMLDocument. Funziona, ma non posso credere che non sia possibile con XDocument.

Grazie in anticipo

+4

Non è la ** valore dell'attributo ** di 'spans' che si sta dando questo errore, è il ** nome attributo ** 'x14ac: dyDescent'. Stai per entrare nel meraviglioso mondo dei namespace xml ... in bocca al lupo :) – AakashM

+0

ow, vedo ... Stupido da parte mia :) Grazie, signore, per la sua rapida risposta! – jasperdesmet

+3

Oh mio Dio, perché questa domanda è ancora aperta? @AakashM dovrebbe averlo messo come risposta. –

risposta

0

È necessario includere : nei nomi degli elementi. Ora è permesso. Se vedi qualcuno farlo, che : non fa parte del nome dell'elemento, è il separatore tra lo spazio dei nomi e il nome dell'elemento. Quindi, al fine di ottenere il seguente file XML:

<rss xmlns:media="http://m.xyz.com/rss/" version="2.0"> 
    <channel vendor="ABC" lastpublishdate="05/12/2013 01:02"/> 
    <title>Videos</title> 
    <media:thumbnail width="180" height="75" /> 
</rss> 

Dovete scrivere qualcosa di simile:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Xml.Linq; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      string x = "55"; 

      XNamespace aw = "http://m.xyz.com/rss/"; 
      XDocument document = new XDocument(
       new XDeclaration("1.0", "utf-8", "yes"), 
       new XElement(
        "rss", 
        new XAttribute(XNamespace.Xmlns + "media", "http://m.xyz.com/rss/"), 
        new XAttribute("version", "2.0"), 

        new XElement("channel", 
         new XAttribute("vendor", "ABC"), 
         new XAttribute("lastpublishdate", DateTime.Now.ToString("dd/MM/yyyy hh:mm"))), 

         new XElement("title", "Videos"), 
         new XElement(
          aw + "thumbnail", 
          new XAttribute("width", x.Trim()), 
          new XAttribute("height", x.Trim()) 
         ) 
       ) 
      ); 
     } 
    } 
} 
Problemi correlati