Open source-fellesskapet har skapt mange open source Java-prosjekter, som spenner fra kartprogramvare til spillrammer til tekstbehandlere. I dette innlegget introduserer jeg et open source biblioteksprosjekt for lesing og skriving av Microsoft Excel-regneark.
Anbefaler et regnearkbibliotek
Spørsmål: Jeg har blitt bedt om å utvide selskapets Java-baserte regnearkprogramvare til å lese og skrive Excel-regneark. Kan du anbefale et open source Java-bibliotek som vil hjelpe meg med denne oppgaven?
EN: Det kan være lurt å sjekke ut JExcelAPI, som er et modent, Java-basert open source-bibliotek som lar deg lese, skrive og endre Excel-regneark. Her er noen av de mange funksjonene:
- Leser data fra Excel 95, 97, 2000, XP og 2003 arbeidsbøker
- Leser og skriver formler (bare Excel 97 og nyere)
- Genererer regneark i Excel 2000-format
- Støtter formatering av skrift, nummer og dato
- Støtter celleskygge, cellegrenser og cellefarging
- Endrer eksisterende regneark
- Støtter kartkopiering
- Støtter innsetting og kopiering av bilder i regneark
JExcelAPI ble utviklet av Andrew Kahn og ble utgitt under GNU Lesser General Public License.
Laste ned JExcelAPI-biblioteket
Spørsmål: Hvordan laster jeg ned JExcelAPI?
EN: Fullfør følgende trinn for å laste ned JExcelAPI:
- Pek nettleseren din til JExcelAPIs SourceForge-nettsted.
- Klikk på
jexcelapi
lenke. - På den resulterende siden klikker du på en av mappekoblingene. For eksempel klikket jeg på
2.6.12
lenke. - Klikk på filnavnet for distribusjonsarkivet på den resulterende siden. For eksempel klikket jeg på
jexcelapi_2_6_12.zip
lenke. - Etter en kort forsinkelse, bør nettleseren din be deg om å lagre denne filen. Fortsett og lagre filen.
Etter nedlastingen, fjern arkiveringen av denne filen. Du bør observere en jexcelapi
hjemmekatalog innen en jexcelapi_2_6_12
katalog.
Demonstrerer JExcelAPI-biblioteket
Spørsmål: Inneholder JExcelAPI-biblioteket noen demoer?
EN: JExcelAPI jexcelapi
hjemmekatalog inneholder en jxl.jar
fil som inneholder demoer for lesing, skriving og kopiering av regneark.
Den leste demoen leser et eksisterende regneark og konverterer det til kommaadskilt verdi (CSV) eller XML-format via -csv
eller -xml
kommandolinjealternativ. Tenk på følgende eksempler:
java -jar jxl.jar -csv budget.xls java -jar jxl.jar -xml budget.xls
Disse eksemplene leses budsjett.xls
og sende innholdet i CSV- og XML-format til standardutdata. Når ingen av dem -csv
heller ikke -xml
er spesifisert, -csv
er antatt.
Skrivedemoen oppretter et eksempel regneark som inkluderer formler, rammer, bilder og mer. Dette regnearket genereres ved å spesifisere -skrive
kommandolinjealternativ, som vist nedenfor:
java -jar jxl.jar -skriver sample.xls
Figur 1 viser en del av det resulterende sample.xls
regneark.
Figur 1. Jeg brukte LibreOffice Calc for å få tilgang til regnearket sample.xls
Kopidemoen kopierer et regneark jxlrwtest.xls
, som er lagret i samme katalog som jxl.jar
, til et nytt regneark. I det resulterende regnearket er det første arket (original) uendret, mens det andre arket (modifisert) inneholder modifiserte verdier.
Denne demoen genereres ved å spesifisere -rw
kommandolinjealternativ etterfulgt av jxlrwtest.xls
og navnet på utdataarket. Vurder følgende kommandolinje:
java -jar jxl.jar -rw jxlrwtest.xls copy.xls
Denne kommandolinjen kopieres jxlrwtest.xls
til copy.xls
. Figur 2 viser det andre (modifiserte) arket i LibreOffice Calc.
Figur 2. Klikk på de originale og modifiserte fanene for å vise originalen og de modifiserte arkene
Inkludert JExcelAPI for kompilering og utførelse
Spørsmål: Hvordan inkluderer jeg JExcelAPI når jeg kompilerer kildekode og kjører et program?
EN: Gjør ett av følgende for å inkludere JExcelAPI når du kompilerer kildekode og kjører et program:
- Legg til
jexcelapi
hjemmekatalogerjxl.jar
filen til dinCLASSPATH
miljøvariabel. - Inkludere
jxl.jar
viajavac
ogjava
programmet-cp
kommandolinjealternativ.
Programmering med JExcelAPI
Spørsmål: Hvordan lager jeg Java-programmer som utnytter JExcelAPI?
EN: De jexcelapi
hjemmekatalog inkluderer en tutorial.html
fil som presenterer en grunnleggende veiledning om programmering med JExcelAPI. Opplæringen viser deg hvordan du leser, skriver og kopierer regneark. Opplæringen diskuterer også formatering.
jexcelapi
inkluderer også en dokumenter
underkatalog, som gir tilgang til omfattende API-dokumentasjon. Pek nettleseren din til denne katalogen index.html
filen, og du kan utforske typene i dette bibliotekets fire dokumenterte pakker:
jxl
: hovedpakkens typerjxl. demo
: typer for forskjellige demoerjxl.format
: typer relatert til formateringjxl.write
: typer for skriving til et regneark
Merk at denne listen ikke er uttømmende. Tilleggspakker som jxl.les
er til stede, men er ikke dokumentert. For å lære om flere pakker, kjør jar tvf jxl.jar
og undersøke pakkeinformasjonen i den resulterende JAR-listen.
For å hjelpe deg i gang med JExcelAPI har jeg laget en enkel JExcelAPIDemo
applikasjon som demonstrerer å lage et nytt regneark som er lagret i output.xls
og deretter lese og skrive ut innholdet i dette regnearket. Sjekk ut oppføring 1.
Oppføring 1. Skrive og lese et enkelt regneark
importere java.io.File; importere java.io.IOException; importere jxl.Cell; importere jxl.Sheet; importere jxl.Workbook; importere jxl.read.biff.BiffException; importere jxl.write.Label; importere jxl.write.Number; importere jxl.write.WritableSheet; importere jxl.write.WritableWorkbook; importere jxl.write.WriteException; offentlig klasse JExcelAPIDemo {public static void main (String [] args) kaster BiffException, IOException, WriteException {WritableWorkbook wworkbook; wworkbook = Workbook.createWorkbook (ny fil ("output.xls")); WritableSheet wsheet = wworkbook.createSheet ("Første ark", 0); Label label = new Label (0, 2, "A label record"); wsheet.addCell (etikett); Nummernummer = nytt nummer (3, 4, 3.1459); wsheet.addCell (nummer); wworkbook.write (); wworkbook.close (); Arbeidsbok arbeidsbok = Workbook.getWorkbook (ny fil ("output.xls")); Arkark = arbeidsbok.getSheet (0); Cellecelle1 = ark.getCell (0, 2); System.out.println (cell1.getContents ()); Cellecelle2 = ark.getCell (3, 4); System.out.println (cell2.getContents ()); arbeidsbok.lukk (); }}
Oppføring 1 oppretter først en skrivbar arbeidsbok ved å påkalle en av Arbeidsbok
fabrikksmetoder. Deretter opprettes et skrivbart ark for denne arbeidsboken, og deretter legges det til en etikett og et nummer som arkets to celleverdier. Arbeidsboken blir deretter skrevet og lukket.
Oppføring 1 fortsetter ved å få en arbeidsbok tilknyttet output.xls
og lese innholdet. De getSheet ()
metoden gir tilgang til det første arket i denne arbeidsboken. Det er getCell ()
metoden kalles for å få tilgang til de to cellene, hvis innhold deretter blir sendt ut.
Antar at jxl.jar
ligger i den gjeldende katalogen, utfør følgende kommando for å kompilere liste 1:
javac -cp jxl.jar JExcelAPIDemo.java
Forutsatt suksess, utfør følgende kommando for å kjøre JExcelAPIDemo
:
java -cp jxl.jar ;. JExcelAPIDemo
Du bør følge følgende utdata:
Et etikettrekord 3.146
Figur 3 viser deg output.xls
i LibreOffice-sammenheng.
Figur 3. Det ensomme arket viser to celleverdier
Hva blir det neste?
Neste gang presenterer jeg et sett med puslespillere som tar for seg utviklingen av Java-biblioteker. Disse puslespillere fokuserer på kilde- og binærkodekompatibilitet mellom klientprogrammer og bibliotekene som disse programmene bruker.
last ned Last ned kilden Få kildekoden for dette innleggets applikasjoner. Skapt av Jeff Friesen for JavaWorldFølgende programvare ble brukt til å utvikle postens kode:
- 64-biters JDK 7u6
- JExcelAPI 2.6.12
Innleggets kode ble testet på følgende plattform (er):
- JVM på 64-biters Windows 7 SP1
Denne historien, "Lese og skrive Excel-regneark" ble opprinnelig utgitt av JavaWorld.