Komunita open source vytvořila mnoho open source projektů Java, které sahají od grafického softwaru přes herní rámce až po textové procesory. V tomto příspěvku představuji projekt knihovny open source pro čtení a psaní tabulek Microsoft Excel.
Doporučujeme tabulkovou knihovnu
Otázka: Byl jsem požádán o rozšíření tabulkového softwaru založeného na prostředí Java mé společnosti pro čtení a zápis tabulek aplikace Excel. Můžete mi doporučit open source knihovnu Java, která mi s tímto úkolem pomůže?
A: Možná budete chtít vyzkoušet JExcelAPI, což je vyspělá otevřená knihovna založená na Javě, která vám umožňuje číst, psát a upravovat tabulky aplikace Excel. Zde je několik jeho mnoha funkcí:
- Čte data ze sešitů Excel 95, 97, 2000, XP a 2003
- Čte a zapisuje vzorce (pouze Excel 97 a novější)
- Generuje tabulky ve formátu Excel 2000
- Podporuje formátování písma, čísla a data
- Podporuje stínování buněk, ohraničování buněk a barvení buněk
- Upravuje existující listy
- Podporuje kopírování grafů
- Podporuje vkládání a kopírování obrázků do tabulek
JExcelAPI vyvinul Andrew Kahn a byl vydán pod GNU Lesser General Public License.
Stahování knihovny JExcelAPI
Otázka: Jak stáhnu JExcelAPI?
A: Chcete-li stáhnout JExcelAPI, postupujte takto:
- Nasměrujte svůj prohlížeč na web SourceForge od JExcelAPI.
- Klikněte na ikonu
jexcelapi
odkaz. - Na výsledné stránce klikněte na jeden z odkazů na složku. Například jsem kliknul na
2.6.12
odkaz. - Na výsledné stránce klikněte na název archivu distribuce. Například jsem kliknul na
jexcelapi_2_6_12.zip
odkaz. - Po krátké prodlevě by vás prohlížeč měl vyzvat k uložení tohoto souboru. Pokračujte a uložte soubor.
Po stažení zrušte archivaci tohoto souboru. Měli byste dodržovat a jexcelapi
domovský adresář v rámci jexcelapi_2_6_12
adresář.
Demonstrace knihovny JExcelAPI
Otázka: Obsahuje knihovna JExcelAPI nějaké ukázky?
A: JExcelAPI jexcelapi
domovský adresář obsahuje a jxl.jar
soubor, který obsahuje ukázky pro čtení, zápis a kopírování tabulek.
Přečtená ukázka čte existující tabulku a převádí ji na hodnoty oddělené čárkami (CSV) nebo XML pomocí -csv
nebo -xml
možnost příkazového řádku. Zvažte následující příklady:
java -jar jxl.jar -csv budget.xls java -jar jxl.jar -xml budget.xls
Tyto příklady číst budget.xls
a výstup jeho obsahu ve formátu CSV a XML na standardní výstup. Když ani jeden -csv
ani -xml
je specifikováno, -csv
předpokládá se.
Ukázka pro zápis vytvoří ukázkovou tabulku, která obsahuje vzorce, ohraničení, obrázky a další. Tato tabulka je generována zadáním -napsat
možnost příkazového řádku, jak je ukázáno níže:
java -jar jxl.jar -write sample.xls
Obrázek 1 ukazuje část výsledného sample.xls
tabulkový kalkulátor.
Obrázek 1. Pro přístup k tabulce sample.xls jsem použil LibreOffice Calc
Ukázka kopírování zkopíruje ukázkovou tabulku jxlrwtest.xls
, který je uložen ve stejném adresáři jako jxl.jar
, do nové tabulky. Ve výsledné tabulce je první list (originál) beze změny, zatímco druhý list (upravený) obsahuje upravené hodnoty.
Tato ukázka je generována zadáním -rw
možnost příkazového řádku následovaná jxlrwtest.xls
a název výstupní tabulky. Zvažte následující příkazový řádek:
java -jar jxl.jar -rw jxlrwtest.xls copy.xls
Tento příkazový řádek kopíruje jxlrwtest.xls
na copy.xls
. Obrázek 2 ukazuje druhý (upravený) list v LibreOffice Calc.
Obrázek 2. Kliknutím na původní a upravené karty zobrazíte původní a upravené listy
Včetně JExcelAPI pro kompilaci a provedení
Otázka: Jak zahrnu JExcelAPI při kompilaci zdrojového kódu a spuštění aplikace?
A: Chcete-li zahrnout JExcelAPI při kompilaci zdrojového kódu a spuštění aplikace, proveďte jednu z následujících akcí:
- Přidat
jexcelapi
domovský adresářjxl.jar
soubor do vašehoCLASSPATH
proměnná prostředí. - Zahrnout
jxl.jar
přesjavac
aJáva
programu-cp
možnost příkazového řádku.
Programování pomocí JExcelAPI
Otázka: Jak mohu vytvořit programy Java, které využívají JExcelAPI?
A: The jexcelapi
domovský adresář obsahuje a tutorial.html
soubor, který představuje základní návod k programování pomocí JExcelAPI. V tomto výukovém programu se dozvíte, jak číst, psát a kopírovat tabulky. Tutoriál také pojednává o formátování.
jexcelapi
zahrnuje také a dokumenty
podadresář, který poskytuje přístup k rozsáhlé dokumentaci API. Nasměrujte svůj webový prohlížeč na tento adresář index.html
soubor a můžete prozkoumat typy ve čtyřech dokumentovaných balíčcích této knihovny:
jxl
: typy hlavního balíčkujxl.demo
: typy pro různá demajxl.formát
: typy související s formátovánímjxl.write
: typy pro zápis do tabulky
Tento seznam není vyčerpávající. Další balíčky jako např jxl.read
jsou přítomny, ale nejsou dokumentovány. Chcete-li se dozvědět další balíčky, proveďte jar tvf jxl.jar
a prozkoumejte informace o balíčku ve výsledném seznamu JAR.
Abych vám pomohl začít s JExcelAPI, vytvořil jsem jednoduchý JExcelAPIDemo
aplikace, která předvádí vytvoření nové tabulky, která je uložena v výstup.xls
a poté číst a vydávat obsah této tabulky. Podívejte se na výpis 1.
Výpis 1. Psaní a čtení jednoduché tabulky
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; public class JExcelAPIDemo {public static void main (String [] args) hodí BiffException, IOException, WriteException {WritableWorkbook wworkbook; wworkbook = Workbook.createWorkbook (nový soubor ("output.xls")); WritableSheet wsheet = wworkbook.createSheet ("První list", 0); Štítek štítek = nový štítek (0, 2, "záznam štítku"); wsheet.addCell (štítek); Number number = new Number (3, 4, 3.1459); wsheet.addCell (číslo); wworkbook.write (); wworkbook.close (); Workbook workbook = Workbook.getWorkbook (new File ("output.xls")); List list = workbook.getSheet (0); Buňka buňka1 = sheet.getCell (0, 2); System.out.println (cell1.getContents ()); Buňka buňka2 = sheet.getCell (3, 4); System.out.println (cell2.getContents ()); workbook.close (); }}
Výpis 1 nejprve vytvoří zapisovatelný sešit vyvoláním jednoho z pracovní sešit
tovární metody. Potom se pro tento sešit vytvoří zapisovatelný list a poté se jako dvě hodnoty buňky listu přidá štítek a číslo. Sešit je poté napsán a uzavřen.
Výpis 1 pokračuje získáním sešitu přidruženého k výstup.xls
a čtení jeho obsahu. The getSheet ()
metoda poskytuje přístup k prvnímu listu v tomto sešitu. Své getCell ()
metoda je volána pro přístup ke dvěma buňkám, jejichž obsah je poté odeslán.
Za předpokladu, že jxl.jar
je umístěn v aktuálním adresáři, proveďte následující příkaz k sestavení výpisu 1:
javac -cp jxl.jar JExcelAPIDemo.java
Za předpokladu úspěchu spusťte následující příkaz JExcelAPIDemo
:
java -cp jxl.jar ;. JExcelAPIDemo
Měli byste dodržovat následující výstup:
Záznam etikety 3.146
Obrázek 3 vás ukazuje výstup.xls
v kontextu LibreOffice.
Obrázek 3. Osamělý list zobrazuje dvě hodnoty buněk
Co bude dál?
Příště představím řadu hlavolamů, které se zabývají vývojem knihoven Java. Tyto hlavolamy se zaměřují na kompatibilitu zdrojového a binárního kódu mezi klientskými programy a knihovnami, které tyto programy používají.
stáhnout Stáhněte si zdroj Získejte zdrojový kód pro aplikace tohoto příspěvku. Vytvořil Jeff Friesen pro JavaWorldK vývoji poštovního kódu byl použit následující software:
- 64bitová JDK 7u6
- JExcelAPI 2.6.12
Kód příspěvku byl testován na následujících platformách:
- JVM v 64bitovém systému Windows 7 SP1
Tento příběh „Čtení a psaní tabulek aplikace Excel“ původně publikoval JavaWorld.