Προγραμματισμός

Ανάγνωση και σύνταξη υπολογιστικών φύλλων Excel

Η κοινότητα ανοιχτού κώδικα έχει δημιουργήσει πολλά έργα ανοιχτού κώδικα Java, τα οποία κυμαίνονται από λογισμικό χαρτογράφησης έως πλαίσια παιχνιδιών έως επεξεργαστές κειμένου. Σε αυτήν την ανάρτηση, παρουσιάζω ένα έργο βιβλιοθήκης ανοιχτού κώδικα για ανάγνωση και συγγραφή υπολογιστικών φύλλων του Microsoft Excel.

Προτείνεται μια βιβλιοθήκη υπολογιστικών φύλλων

Ε: Μου ζητήθηκε να επεκτείνω το λογισμικό υπολογιστικών φύλλων που βασίζεται σε Java για να διαβάζω και να γράφω υπολογιστικά φύλλα Excel. Μπορείτε να συστήσετε μια βιβλιοθήκη Java ανοιχτού κώδικα που θα με βοηθήσει σε αυτήν την εργασία;

ΕΝΑ: Ίσως θελήσετε να δείτε το JExcelAPI, το οποίο είναι μια ώριμη βιβλιοθήκη ανοιχτού κώδικα που βασίζεται σε Java και σας επιτρέπει να διαβάζετε, να γράφετε και να τροποποιείτε υπολογιστικά φύλλα του Excel. Εδώ είναι μερικά από τα πολλά χαρακτηριστικά του:

  • Διαβάζει δεδομένα από βιβλία εργασίας Excel 95, 97, 2000, XP και 2003
  • Διαβάζει και γράφει τύπους (Excel 97 και νεότερες εκδόσεις)
  • Δημιουργεί υπολογιστικά φύλλα σε μορφή Excel 2000
  • Υποστηρίζει μορφοποίηση γραμματοσειράς, αριθμού και ημερομηνίας
  • Υποστηρίζει τη σκίαση των κυττάρων, τα όρια των κυττάρων και τον χρωματισμό των κυττάρων
  • Τροποποιεί τα υπάρχοντα φύλλα εργασίας
  • Υποστηρίζει την αντιγραφή γραφημάτων
  • Υποστηρίζει την εισαγωγή και αντιγραφή εικόνων σε υπολογιστικά φύλλα

Το JExcelAPI αναπτύχθηκε από τον Andrew Kahn και κυκλοφόρησε με την άδεια GNU Lesser General Public.

Λήψη της βιβλιοθήκης JExcelAPI

Ε: Πώς μπορώ να κατεβάσω το JExcelAPI;

ΕΝΑ: Ολοκληρώστε τα παρακάτω βήματα για να κάνετε λήψη του JExcelAPI:

  1. Στρέψτε το πρόγραμμα περιήγησής σας στον ιστότοπο SourceForge του JExcelAPI.
  2. Κάντε κλικ στο jexcelapi Σύνδεσμος.
  3. Στη σελίδα που προκύπτει, κάντε κλικ σε έναν από τους συνδέσμους φακέλων. Για παράδειγμα, έκανα κλικ στο 2.6.12 Σύνδεσμος.
  4. Στη σελίδα που προκύπτει, κάντε κλικ στο όνομα αρχείου του αρχείου διανομής. Για παράδειγμα, έκανα κλικ στο jexcelapi_2_6_12.zip Σύνδεσμος.
  5. Μετά από μια μικρή καθυστέρηση, το πρόγραμμα περιήγησής σας θα σας ζητήσει να αποθηκεύσετε αυτό το αρχείο. Προχωρήστε και αποθηκεύστε το αρχείο.

Μετά τη λήψη, καταργήστε την αρχειοθέτηση αυτού του αρχείου. Πρέπει να παρατηρήσετε ένα jexcelapi αρχικός κατάλογος εντός α jexcelapi_2_6_12 Ευρετήριο.

Επίδειξη της βιβλιοθήκης JExcelAPI

Ε: Η βιβλιοθήκη JExcelAPI περιέχει επιδείξεις;

ΕΝΑ: JExcelAPI's jexcelapi Ο αρχικός κατάλογος περιέχει ένα jxl.jar αρχείο που περιέχει επιδείξεις για ανάγνωση, συγγραφή και αντιγραφή υπολογιστικών φύλλων.

Το demo ανάγνωσης διαβάζει ένα υπάρχον υπολογιστικό φύλλο, μετατρέποντάς το σε τιμή διαχωρισμένη με κόμμα (CSV) ή μορφή XML μέσω του -csv ή -xml επιλογή γραμμής εντολών. Εξετάστε τα ακόλουθα παραδείγματα:

java -jar jxl.jar -csv budget.xls java -jar jxl.jar -xml budget.xls

Αυτά τα παραδείγματα διαβάζονται budget.xls και εξάγει τα περιεχόμενά του σε μορφή CSV και XML σε τυπική έξοδο. Όταν κανένα -csv ούτε -xml καθορίζεται, -csv υποτίθεται.

Το demo εγγραφής δημιουργεί ένα δείγμα υπολογιστικού φύλλου που περιλαμβάνει τύπους, περιγράμματα, εικόνες και πολλά άλλα. Αυτό το υπολογιστικό φύλλο δημιουργείται καθορίζοντας το -γράφω επιλογή γραμμής εντολών, όπως φαίνεται παρακάτω:

java -jar jxl.jar -write sample.xls

Το σχήμα 1 δείχνει μέρος του προκύπτοντος sample.xls υπολογιστικό φύλλο.

Σχήμα 1. Χρησιμοποίησα το LibreOffice Calc για πρόσβαση στο υπολογιστικό φύλλο sample.xls

Η επίδειξη αντιγραφής αντιγράφει υπολογιστικό φύλλο δείγματος jxlrwtest.xls, ο οποίος αποθηκεύεται στον ίδιο κατάλογο με jxl.jar, σε ένα νέο υπολογιστικό φύλλο. Στο προκύπτον υπολογιστικό φύλλο, το πρώτο φύλλο (πρωτότυπο) είναι αμετάβλητο ενώ το δεύτερο φύλλο (τροποποιημένο) περιέχει τροποποιημένες τιμές.

Αυτό το demo δημιουργείται καθορίζοντας το -rw επιλογή γραμμής εντολών ακολουθούμενη από jxlrwtest.xls και το όνομα του υπολογιστικού φύλλου εξόδου. Εξετάστε την ακόλουθη γραμμή εντολών:

java -jar jxl.jar -rw jxlrwtest.xls copy.xls

Αυτή η γραμμή εντολών αντιγράφει jxlrwtest.xls προς την copy.xls. Το σχήμα 2 δείχνει το δεύτερο (τροποποιημένο) φύλλο στο LibreOffice Calc.

Εικόνα 2. Κάντε κλικ στις αρχικές και τροποποιημένες καρτέλες για να δείτε τα πρωτότυπα και τροποποιημένα φύλλα

Συμπεριλαμβάνεται το JExcelAPI για συλλογή και εκτέλεση

Ε: Πώς μπορώ να συμπεριλάβω το JExcelAPI κατά τη σύνταξη του πηγαίου κώδικα και την εκτέλεση μιας εφαρμογής;

ΕΝΑ: Για να συμπεριλάβετε το JExcelAPI κατά τη σύνταξη του πηγαίου κώδικα και την εκτέλεση μιας εφαρμογής, κάντε ένα από τα εξής:

  • Πρόσθεσε το jexcelapi αρχικός κατάλογος jxl.jar αρχείο στο δικό σας CLASSPATH μεταβλητή περιβάλλοντος.
  • Περιλαμβάνω jxl.jar μέσω του javac και Ιάβα του προγράμματος -cp επιλογή γραμμής εντολών.

Προγραμματισμός με το JExcelAPI

Ε: Πώς μπορώ να δημιουργήσω προγράμματα Java που χρησιμοποιούν το JExcelAPI;

ΕΝΑ: ο jexcelapi Ο αρχικός κατάλογος περιλαμβάνει ένα tutorial.html αρχείο που παρουσιάζει έναν βασικό οδηγό προγραμματισμού με το JExcelAPI. Το σεμινάριο σάς δείχνει πώς να διαβάσετε, να γράψετε και να αντιγράψετε υπολογιστικά φύλλα. Το σεμινάριο συζητά επίσης τη μορφοποίηση.

jexcelapi περιλαμβάνει επίσης ένα έγγραφα υποκατάλογος, ο οποίος παρέχει πρόσβαση σε εκτεταμένη τεκμηρίωση API. Στρέψτε το πρόγραμμα περιήγησης στο Web σε αυτόν τον κατάλογο index.html αρχείο και μπορείτε να εξερευνήσετε τους τύπους στα τέσσερα τεκμηριωμένα πακέτα αυτής της βιβλιοθήκης:

  • jxl: οι τύποι του κύριου πακέτου
  • jxl.demo: τύποι για τις διάφορες επιδείξεις
  • jxl.format: τύποι που σχετίζονται με τη μορφοποίηση
  • jxl.write: τύποι γραφής σε υπολογιστικό φύλλο

Λάβετε υπόψη ότι αυτή η λίστα δεν είναι πλήρης. Πρόσθετα πακέτα όπως jxl.read είναι παρόντα αλλά δεν είναι τεκμηριωμένα. Για να μάθετε περισσότερα για πακέτα, εκτελέστε βάζο tvf jxl.jar και εξετάστε τις πληροφορίες του πακέτου στην προκύπτουσα λίστα JAR.

Για να σας βοηθήσω να ξεκινήσετε με το JExcelAPI, έχω δημιουργήσει ένα απλό JExcelAPIDemo εφαρμογή που δείχνει τη δημιουργία ενός νέου υπολογιστικού φύλλου στο οποίο είναι αποθηκευμένο έξοδος.xls και μετά διαβάζοντας και εξάγοντας τα περιεχόμενα αυτού του υπολογιστικού φύλλου. Δείτε την Καταχώριση 1.

Λίστα 1. Γράφοντας και διαβάζοντας ένα απλό υπολογιστικό φύλλο

εισαγωγή java.io.File; εισαγωγή java.io.IOException; εισαγωγή jxl.Cell; εισαγωγή jxl.Sheet; εισαγωγή jxl.Workbook; εισαγωγή jxl.read.biff.BiffException; εισαγωγή jxl.write.Label; εισαγωγή jxl.write.Number; εισαγωγή jxl.write.WritableSheet; εισαγωγή jxl.write.WritableWorkbook; εισαγωγή jxl.write.WriteException; δημόσια τάξη JExcelAPIDemo {public static void main (String [] args) ρίχνει BiffException, IOException, WriteException {WritableWorkbook wworkbook; wworkbook = Workbook.createWorkbook (νέο αρχείο ("output.xls")); WritableSheet wsheet = wworkbook.createSheet ("Πρώτο φύλλο", 0); Ετικέτα ετικέτας = νέα Ετικέτα (0, 2, "A label record"); wsheet.addCell (ετικέτα); Αριθμός αριθμού = νέος αριθμός (3, 4, 3.1459); wsheet.addCell (αριθμός); wworkbook.write (); wworkbook.close (); Workbook workbook = Workbook.getWorkbook (νέο αρχείο ("output.xls")); Φύλλο φύλλου = workbook.getSheet (0); Cell cell1 = sheet.getCell (0, 2); System.out.println (cell1.getContents ()); Cell cell2 = sheet.getCell (3, 4); System.out.println (cell2.getContents ()); workbook.close (); }}

Η καταχώριση 1 δημιουργεί πρώτα ένα εγγράψιμο βιβλίο εργασίας, επικαλούμενος ένα από αυτά ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΙΩΝεργοστασιακές μεθόδους. Στη συνέχεια δημιουργείται ένα εγγράψιμο φύλλο για αυτό το βιβλίο εργασίας και στη συνέχεια προστίθενται μια ετικέτα και ένας αριθμός ως οι τιμές των δύο κελιών του φύλλου. Στη συνέχεια, το βιβλίο εργασίας γράφεται και κλείνει.

Η καταχώριση 1 συνεχίζεται με τη σύνδεση ενός βιβλίου εργασίας έξοδος.xls και διαβάζοντας το περιεχόμενό του. ο getSheet () Η μέθοδος παρέχει πρόσβαση στο πρώτο φύλλο αυτού του βιβλίου εργασίας. Του getCell () καλείται μέθοδος για πρόσβαση στα δύο κελιά, τα περιεχόμενα των οποίων στη συνέχεια εξάγονται.

Υποθέτοντας ότι jxl.jar βρίσκεται στον τρέχοντα κατάλογο, εκτελέστε την ακόλουθη εντολή για να μεταγλωττίσετε την Καταχώριση 1:

javac -cp jxl.jar JExcelAPIDemo.java

Υποθέτοντας την επιτυχία, εκτελέστε την ακόλουθη εντολή για εκτέλεση JExcelAPIDemo:

java -cp jxl.jar ;. JExcelAPIDemo

Πρέπει να παρατηρήσετε την ακόλουθη έξοδο:

Μια εγγραφή ετικέτας 3.146

Το σχήμα 3 σας δείχνει έξοδος.xls σε ένα πλαίσιο LibreOffice.

Σχήμα 3. Το μοναχικό φύλλο εμφανίζει δύο τιμές κυψέλης

Τι έπεται?

Την επόμενη φορά, θα παρουσιάσω ένα σύνολο παζλ που αντιμετωπίζουν την εξέλιξη των βιβλιοθηκών Java. Αυτά τα παζλ εστιάζουν στην συμβατότητα πηγής και δυαδικού κώδικα μεταξύ προγραμμάτων πελατών και βιβλιοθηκών που χρησιμοποιούν αυτά τα προγράμματα.

λήψη Λήψη της πηγής Λήψη του πηγαίου κώδικα για τις εφαρμογές αυτής της ανάρτησης. Δημιουργήθηκε από τον Jeff Friesen για το JavaWorld

Το ακόλουθο λογισμικό χρησιμοποιήθηκε για την ανάπτυξη του κώδικα της ανάρτησης:

  • 64-bit JDK 7u6
  • JExcelAPI 2.6.12

Ο κώδικας της ανάρτησης δοκιμάστηκε στις ακόλουθες πλατφόρμες:

  • JVM σε Windows 7 SP1 64-bit

Αυτή η ιστορία, "Ανάγνωση και σύνταξη υπολογιστικών φύλλων Excel" δημοσιεύθηκε αρχικά από το JavaWorld.