Komunita otvorených zdrojov vytvorila veľa otvorených zdrojov Java projektov, ktoré siahajú od grafického softvéru cez herné rámce až po textové procesory. V tomto príspevku predstavujem projekt knižnice otvoreného zdroja na čítanie a zápis tabuliek programu Microsoft Excel.
Odporúčanie knižnice tabuliek
Otázka: Bol som požiadaný o rozšírenie tabuľkového softvéru založeného na spoločnosti Java pre čítanie a zápis tabuliek programu Excel. Môžete mi odporučiť otvorenú knižnicu Java, ktorá mi s touto úlohou pomôže?
A: Možno budete chcieť vyskúšať JExcelAPI, čo je vyspelá otvorená knižnica založená na prostredí Java, ktorá vám umožňuje čítať, písať a upravovať tabuľky programu Excel. Tu je niekoľko z jeho mnohých funkcií:
- Číta údaje zo zošitov Excel 95, 97, 2000, XP a 2003
- Číta a zapisuje vzorce (iba Excel 97 a novšie)
- Generuje tabuľky vo formáte Excel 2000
- Podporuje formátovanie písma, čísla a dátumu
- Podporuje tieňovanie buniek, ohraničenie buniek a vyfarbenie buniek
- Upravuje existujúce pracovné listy
- Podporuje kopírovanie grafov
- Podporuje vkladanie a kopírovanie obrázkov do tabuliek
JExcelAPI vyvinul Andrew Kahn a bol vydaný pod GNU Lesser General Public License.
Sťahuje sa knižnica JExcelAPI
Otázka: Ako stiahnem JExcelAPI?
A: Stiahnite si JExcelAPI podľa nasledujúcich pokynov:
- Nasmerujte prehliadač na web SourceForge spoločnosti JExcelAPI.
- Kliknite na ikonu
jexcelapi
odkaz. - Na výslednej stránke kliknite na jeden z odkazov na priečinky. Napríklad som klikol na
2.6.12
odkaz. - Na výslednej stránke kliknite na názov súboru archívu distribúcie. Napríklad som klikol na
jexcelapi_2_6_12.zip
odkaz. - Po krátkom oneskorení by vás prehliadač mal vyzvať na uloženie tohto súboru. Pokračujte a uložte súbor.
Po stiahnutí zrušte archiváciu tohto súboru. Mali by ste dodržiavať a jexcelapi
domovský adresár v rámci a jexcelapi_2_6_12
adresár.
Ukážka knižnice JExcelAPI
Otázka: Obsahuje knižnica JExcelAPI nejaké ukážky?
A: JExcelAPI jexcelapi
domovský adresár obsahuje a jxl.jar
súbor, ktorý obsahuje ukážky na čítanie, zápis a kopírovanie tabuliek.
Čítaná ukážka načíta existujúcu tabuľku a prevedie ju na hodnoty oddelené čiarkou (CSV) alebo XML pomocou formátu -csv
alebo -xml
možnosť príkazového riadku. Zvážte nasledujúce príklady:
java -jar jxl.jar -csv budget.xls java -jar jxl.jar -xml budget.xls
Tieto príklady sa čítajú rozpočet.xls
a výstup jeho obsahu vo formáte CSV a XML na štandardný výstup. Keď ani jeden -csv
ani -xml
je zadané, -csv
sa predpokladá.
Ukážková ukážka zápisu vytvorí vzorovú tabuľku, ktorá obsahuje vzorce, ohraničenia, obrázky a ďalšie. Táto tabuľka sa generuje zadaním - napíš
možnosť príkazového riadku, ako je uvedené nižšie:
java -jar jxl.jar -write sample.xls
Obrázok 1 zobrazuje časť výsledného vzorka.xls
tabuľkový kalkulátor.
Obrázok 1. Na prístup k tabuľke sample.xls som použil program LibreOffice Calc
Ukážková ukážka kopíruje vzorovú tabuľku jxlrwtest.xls
, ktorý je uložený v rovnakom adresári ako jxl.jar
, do novej tabuľky. Vo výslednej tabuľke je prvý hárok (pôvodný) nezmenený, zatiaľ čo druhý hárok (upravený) obsahuje upravené hodnoty.
Táto ukážka je generovaná zadaním -rw
možnosť príkazového riadku, za ktorou nasleduje jxlrwtest.xls
a názov výstupnej tabuľky. Zvážte nasledujúci príkazový riadok:
java -jar jxl.jar -rw jxlrwtest.xls copy.xls
Tento príkazový riadok sa kopíruje jxlrwtest.xls
do copy.xls
. Obrázok 2 zobrazuje druhý (upravený) hárok v LibreOffice Calc.
Obrázok 2. Kliknutím na pôvodné a upravené karty zobrazíte pôvodné a upravené listy
Vrátane JExcelAPI na kompiláciu a vykonávanie
Otázka: Ako zahrniem JExcelAPI pri kompilácii zdrojového kódu a spustení aplikácie?
A: Ak chcete zahrnúť JExcelAPI do kompilácie zdrojového kódu a spustenia aplikácie, vykonajte jeden z nasledujúcich krokov:
- Pridajte znak
jexcelapi
domovský adresárjxl.jar
súbor do vášhoCLASSPATH
premenná prostredia. - Zahrnúť
jxl.jar
cezjavac
ajava
programu-cp
možnosť príkazového riadku.
Programovanie pomocou JExcelAPI
Otázka: Ako môžem vytvoriť programy Java, ktoré využívajú JExcelAPI?
A: The jexcelapi
domovský adresár obsahuje a tutorial.html
súbor, ktorý predstavuje základný tutoriál o programovaní pomocou JExcelAPI. V tejto príručke sa dozviete, ako čítať, písať a kopírovať tabuľky. V príručke sa tiež diskutuje o formátovaní.
jexcelapi
tiež zahŕňa a doc
podadresár, ktorý poskytuje prístup k rozsiahlej dokumentácii API. Nasmerujte webový prehľadávač na tento adresár index.html
súbor a môžete preskúmať typy v štyroch zdokumentovaných balíkoch tejto knižnice:
jxl
: typy hlavného balíkajxl.demo
: typy pre rôzne ukážkyjxl.formát
: typy súvisiace s formátovanímjxl.písať
: typy na zápis do tabuľky
Tento zoznam nie je vyčerpávajúci. Dodatočné balíčky ako napr jxl.read
sú prítomné, ale nie sú zdokumentované. Ak sa chcete dozvedieť o ďalších balíkoch, vykonajte príkaz jar tvf jxl.jar
a preskúmajte informácie o balíku vo výslednom zozname JAR.
Aby som vám pomohol začať s JExcelAPI, vytvoril som jednoduchý JExcelAPIDemo
aplikácia, ktorá demonštruje vytvorenie novej tabuľky, ktorá je uložená v priečinku výstup.xls
a potom prečítať a odoslať obsah tejto tabuľky. Pozrite sa na zoznam 1.
Zoznam 1. Písanie a čítanie jednoduchej tabuľky
import java.io.File; import java.io.IOException; import jxl.Cell; import jxl.Sheet; import jxl.Workbook; import jxl.read.biff.BiffException; import jxl.write.Label; import jxl.write.Number; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; import jxl.write.WriteException; verejná trieda JExcelAPIDemo {public static void main (String [] args) hodí BiffException, IOException, WriteException {WritableWorkbook wworkbook; wworkbook = Workbook.createWorkbook (nový súbor ("output.xls")); WritableSheet wsheet = wworkbook.createSheet ("Prvý hárok", 0); Štítok štítku = nový štítok (0, 2, „Záznam štítku“); wsheet.addCell (štítok); Number number = new Number (3, 4, 3.1459); wsheet.addCell (číslo); wworkbook.write (); wworkbook.close (); Workbook workbook = Workbook.getWorkbook (new File ("output.xls")); Hárok listu = workbook.getSheet (0); Bunka bunka1 = sheet.getCell (0, 2); System.out.println (cell1.getContents ()); Bunka bunka2 = sheet.getCell (3, 4); System.out.println (cell2.getContents ()); workbook.close (); }}
Výpisom 1 sa najskôr vytvorí zapisovateľný zošit vyvolaním jedného z nich Pracovný zošit
továrenské metódy. Potom sa pre tento zošit vytvorí list, ktorý je možné zapísať, a potom sa ako hodnoty buniek v hárku pridá štítok a číslo. Potom je zošit napísaný a uzavretý.
Zoznam 1 pokračuje získaním spojeného zošita s výstup.xls
a čítanie jeho obsahu. The getSheet ()
metóda poskytuje prístup k prvému hárku v tomto zošite. Jeho getCell ()
metóda sa volá na prístup k dvom bunkám, ktorých obsah sa potom odošle.
Za predpokladu, že jxl.jar
sa nachádza v aktuálnom adresári, vykonajte nasledujúci príkaz na zostavenie záznamu č. 1:
javac -cp jxl.jar JExcelAPIDemo.java
Za predpokladu úspechu spustite nasledujúci príkaz JExcelAPIDemo
:
java -cp jxl.jar ;. JExcelAPIDemo
Mali by ste dodržiavať nasledujúci výstup:
Štítkový záznam 3.146
Obrázok 3 vás ukazuje výstup.xls
v kontexte LibreOffice.
Obrázok 3. Osamelý list zobrazuje dve hodnoty buniek
Čo bude ďalej?
Nabudúce predstavím množinu hlavolamov, ktoré sa zaoberajú vývojom knižníc Java. Tieto hlavolamy sa zameriavajú na kompatibilitu zdrojového a binárneho kódu medzi klientskými programami a knižnicami, ktoré tieto programy používajú.
download Stiahnite si zdroj Získajte zdrojový kód pre aplikácie tohto príspevku. Vytvoril Jeff Friesen pre JavaWorldNa vývoj poštového kódu bol použitý nasledujúci softvér:
- 64-bit JDK 7u6
- JExcelAPI 2.6.12
Kód príspevku bol testovaný na nasledujúcich platformách:
- JVM v 64-bitovom systéme Windows 7 SP1
Tento príbeh, „Čítanie a písanie tabuliek programu Excel“, bol pôvodne publikovaný spoločnosťou JavaWorld.