giovedì 21 luglio 2011

Fare OpenXML facile con ClosedXML


Pubblicato da Jonathan Allen

Quando si lavora con documenti Excel, gli sviluppatori tradizionalmente scegliere di utilizzare XML non elaborati o si basano su librerie di automazione dell'ufficio. Ma, come molti di voi sanno, la libreria di automazione di Office non è appropriato per i server e lavorare con l'XML può essere abbastanza noioso. ClosedXML colma la lacuna, fornendo un facile da utilizzare Office-like API senza il sovraccarico di COM.

Per introdurre questa libreria abbiamo parlato con Manuel De Leon del ClosedXML progetto.

1. Cosa ti ha spinto inizialmente a sviluppare la biblioteca ClosedXML?

E 'iniziato come un progetto parallelo, mentre stavo lavorando a una banca d'investimento a New York. Stavamo giocando con l'idea di spostare il report Excel. NET. Ho guardato nelle biblioteche diverse là fuori (quelli gratuiti e commerciali), ma si sentivano tutti un po 'goffo. Si sentivano come se fossero progettati intorno alle specifiche OpenXML, ma stavo cercando qualcosa di progettato intorno Excel e come funziona (il fatto che i file vengono salvati come OpenXML è solo incidentale).

Dal momento che non sono stati premuti per una soluzione ho deciso di crearne uno che più consono al mio stile di codifica. Poco dopo ho dovuto passare a Colorado così ho detto al mio capo mi interessava il progetto e che stavo per continuare a sviluppare come un open source. Questo mi ha dato la libertà di plasmare la biblioteca per come mi piace lavorare al posto di quello che la società aveva bisogno in questo momento. Ho praticamente demolito quello che avevo fatto e ha iniziato da zero una nuova API e migliorato, ClosedXML.

2. Quali problemi particolari vedi gli sviluppatori che hanno con le librerie Microsoft OpenXML?

Microsoft OpenXML SDK è ai documenti OpenXML come il linguaggio Assembly è di processori. Potete usarlo per ottenere il lavoro svolto ma ci vuole una enorme quantità di sforzo di fare qualcosa.

Queste sono solo alcune delle cose che rendono l'SDK difficile lavorare con:

· L'SDK non è solo intuitivo per lavorare con affatto.

· È necessario specificare manualmente ogni piccolo dettaglio, anche se non ha nulla a che fare con quello che stai cercando di realizzare.

· Anche se si lavora con documenti XML è necessario creare tutti gli elementi in un ordine specifico o il file non viene caricato.

· Ci sono parti in movimento così tanti che la fissazione di un problema diventa un gioco d'ipotesi.

Questo tocca sul perché ho scelto il ClosedXML nome. All'inizio tutto quello che volevo era di mettere "Ciao Mondo" in una cella. A poche centinaia di righe di codice in seguito (usando l'SDK) ho avuto il mio programma ciao mondo. A quel punto ho pensato "se questo è ciò che vuol dire lavorare con un framework aperto preferisco usare uno chiuso".Mi ricorda qualcuno di un commento fatto sul forum: "Quando ho visto il nome di questo progetto ho capito che era quello che cercavo, qualcuno che ottiene."

3. È l'API ClosedXML sulla base di Excel API COM? Se sì, come strettamente pensa di seguirlo?

Si è vagamente basato su Excel API COM, ma non cercare di imitare esso. Faccio osservare VBA come riferimento ogni volta che implementare qualcosa di nuovo, ma probabilmente non sarà facile porta codice VBA per ClosedXML.Detto questo le API sono abbastanza simili che se hai lavorato con VBA allora non avrete difficoltà a capire come fare le cose con ClosedXML.

Quando sto progettando una nuova parte della API mia prima domanda è "Come dovrei usare questo?" Poi guardo il modo in cui Excel lo fa, come è implementato in VBA, e come altri componenti foglio di calcolo lo fanno troppo. Da che cerco di venire con l'interfaccia più intuitiva mi viene in mente. Ruby "Principio di minima sorpresa (secondo Matz)" viene in mente.

4. Altre compagnie, come SmartXLS offrire librerie commerciali per Excel. Perché ha scelto di rilasciare la versione sotto una licenza open source, invece?

Quando ho iniziato questo progetto non ho mai pensato di commercializzarlo. Tutto quello che avevo era un prurito avevo bisogno di nulla. Dopo un mese o giù di lì ho avuto una versione a malapena di lavoro della biblioteca. Dal momento che non ho mai lavorato su un progetto open source, prima ho pensato che questa sarebbe una grande opportunità per farlo. Ho deciso di usare CodePlex perché sembrava più amichevole di repository di codice.

In questo momento mi continuare il progetto e la sua comunità. Mi piace lavorare con altre persone, ottenere il loro feedback, e sapendo che io sto facendo la differenza nel modo di lavorare.

5. Il vostro progetto attualmente alla ricerca di sviluppatori supplementari?

Aiuto è sempre benvenuto. Persone contribuiscono al progetto in modi diversi, bug, patch presentando, ecc Ogni tanto qualcuno si alza e dice "Ho bisogno di funzionalità di X e mi piacerebbe costruire per voi."

6. Ci sono piani per realizzare una versione Word per ClosedXML?

Fin dall'inizio ho sempre intrattenuto l'idea di sostenere documenti di Word. Purtroppo c'è tanto da fare con i documenti di Excel che a meno che qualcun altro decide di lavorare su di esso, tale funzionalità non saranno disponibili in tempi brevi.

Di seguito è riportato un esempio di codice per l'elaborazione di una semplice tabella memorizzata in un file Excel. Manuel scrive:

Da segnalare sono le cose che non hanno a che fare:

· Scrivere il codice standard per individuare i dati (la tabella può iniziare su A1, B1, B2, o qualsiasi altra cella).

· Mantenere un contatore fila. Abbiamo appena scorrere le righe della tabella.

· Regolare il nostro codice per saltare la prima riga (header), dal momento che è un tavolo. Righe () salta per noi.

· Trova la colonna in cui il nome è.

· Trova l'ultima cella della riga


Corso Visual Studio - Corsi Visual Studio
Corso .Net- Corso Dot.Net - Corso Vb.net
Corso C# - Corso PHP - Corso Joomla

Nessun commento:

Posta un commento