Programování

Čtení a psaní tabulek aplikace Excel

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:

  1. Nasměrujte svůj prohlížeč na web SourceForge od JExcelAPI.
  2. Klikněte na ikonu jexcelapi odkaz.
  3. Na výsledné stránce klikněte na jeden z odkazů na složku. Například jsem kliknul na 2.6.12 odkaz.
  4. Na výsledné stránce klikněte na název archivu distribuce. Například jsem kliknul na jexcelapi_2_6_12.zip odkaz.
  5. 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šeho CLASSPATH proměnná prostředí.
  • Zahrnout jxl.jar přes javac a Já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íčku
  • jxl.demo: typy pro různá dema
  • jxl.formát: typy související s formátováním
  • jxl.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šittová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 JavaWorld

K 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.

$config[zx-auto] not found$config[zx-overlay] not found