Ο τρόπος που χρησιμοποιείς είναι ίσως ο πιο αργός καθώς κάνεις συνέχεια κλήσεις μέσω Interop. Έχεις όμως τη δυνατότητα να χρησιμοποιήσεις όλο το object model του Excel για να πετύχεις ό,τι φορμάρισμα θέλεις. Αν όμως απλά θέλεις να εξάγεις ένα πίνακα χωρίς ειδικό format είναι υπερβολή. Άσε που απαιτεί να υπάρχει το Excel, κάτι το οποίο δεν μπορείς να θεωρείς δεδομένο.
Τρόποι να εξάγεις δεδομένα στο Excel υπάρχουν πολλοί, και τους έχουμε ξανασυζητήσει αρκετές φορές. Καταρχήν, μπορείς να έχεις πρόσβαση σε ένα αρχείο Excel μέσω του OLEDB provider, σαν να είναι μία βάση. Κάθε φύλλο εμφανίζεται ως ένας πίνακας, οπότε μπορείς να χρησιμοποιήσεις εντολές SQL για να εξάγεις δεδομένα. Ίσως να μπορείς να χρησιμοποιήσεις και DataAdapter για να το κάνεις αυτό, αν και δεν το έχω δοκιμάσει. Ως τώρα το έχω χρησιμοποιήσει για να εξάγω δεδομένα με INSERT εντολές.
Αν οι πελάτες σου χρησιμοποιούν εκδόσεις του Excel που υποστηρίζουν κάποιο XML format (από τo Office XP και μετά), μπορείς να δημιουργήσεις ένα αρχείο Excel σε μορφή XML. Δες τα "HOW TO: Transfer XML Data to Microsoft Excel 2002 by Using Visual Basic .NET" και "HOW TO: Transfer XML Data to Microsoft Excel 2002 by Using C#". Το XML format των παλαιότερων εκδόσεων του Office ήταν λίγο περίεργο, έτσι δεν είναι εύκολο να ορίσεις τη δική σου μορφοποίηση στο excel. Αν θέλεις να έχεις καλύτερο έλεγχο, μπορείς να χρησιμοποιήσεις το καινούριο XML format για το Excel 2007. Αυτό μάλιστα υποστηρίζεται από το .NET 3 και θα βρεις αρκετά έτοιμα παραδείγματα. Το Excel 2007 επιτρέπει τη δημιουργία ενός αρχείου excel στο οποίο τα δεδομένα αποθηκεύονται σε μορφή XML την οποία μπορείς να χειριστείς μέσω των κλάσεων του System.IO.Packaging. Σε κάθε περίπτωση, μπορείς να δημιουργήσεις πραγματικά Excel αρχεία τα οποία θα περιλαμβάνουν τα δεδομένα, τη μορφοποίηση και τυχόν φόρμουλες που χρειάζεσαι.
Τέλος, μπορείς να χρησιμοποιήσεις κάποιες "μπακάλικες" μεθόδους οι οποίες δεν δημιουργούν πραγματικά Excel αρχεία αλλά αρκετές φορές δουλεύουν. Μπορείς να αποθηκεύσεις τα δεδομένα σε .csv αρχεία ή σε html αρχεία με κατάληξη xls τα οποία περιέχουν ένα πίνακα με τα δεδομένα. Και στις δύο περιπτώσεις το Excel θα διαβάσει τα δεδομένα, αν δεν υπάρχουν "περίεργοι" χαρακτήρες, όπως εισαγωγικά στο csv ή < > στο html αρχείο. Σε αυτή την περίπτωση μπορεί να έχεις περίεργα προβλήματα. Τα αρχεία όμως δεν θα είναι πραγματικά αρχεία Excel και ο τελικός χρήστης θα πρέπει να αποθηκεύσει τις αλλαγές που θα κάνει σε άλλο αρχείο. Η τεχνική αυτή χρησιμοποιείται αρκετά συχνά από web sites με αμφίβολα αποτελέσματα. Μπορεί να δουλέψει στο 99% των περιπτώσεων ή να αποτύχει στο 50%, ανάλογα με τα δεδομένα που χρησιμοποιεί ο καθένας.
Παναγιώτης Καναβός, Freelancer
Twitter: http://www.twitter.com/pkanavos