Ohjelmointi

Excel-laskentataulukoiden lukeminen ja kirjoittaminen

Avoimen lähdekoodin yhteisö on luonut monia avoimen lähdekoodin Java-projekteja, jotka vaihtelevat kartoitusohjelmistoista pelikehyksiin tekstinkäsittelyohjelmiin. Tässä viestissä esitän avoimen lähdekoodin kirjastoprojektin Microsoft Excel -taulukoiden lukemista ja kirjoittamista varten.

Laskentataulukon kirjaston suositteleminen

K: Minua on pyydetty laajentamaan yritykseni Java-pohjaista taulukkolaskentaohjelmaa Excel-laskentataulukoiden lukemiseen ja kirjoittamiseen. Voitteko suositella avoimen lähdekoodin Java-kirjastoa, joka auttaa minua tässä tehtävässä?

A: Haluat ehkä tarkistaa JExcelAPI: n, joka on kypsä Java-pohjainen avoimen lähdekoodin kirjasto, jonka avulla voit lukea, kirjoittaa ja muokata Excel-laskentataulukoita. Tässä on muutamia sen monista ominaisuuksista:

  • Lukee tietoja Excel 95-, 97-, 2000-, XP- ja 2003-työkirjoista
  • Lukee ja kirjoittaa kaavoja (vain Excel 97 ja uudemmat)
  • Luo laskentataulukot Excel 2000 -muodossa
  • Tukee fontin, numeron ja päivämäärän muotoilua
  • Tukee solujen varjostusta, solujen reunustamista ja solujen värjäystä
  • Muokkaa olemassa olevia laskentataulukoita
  • Tukee kaavion kopiointia
  • Tukee kuvien lisäämistä ja kopiointia laskentataulukoihin

JExcelAPI: n on kehittänyt Andrew Kahn, ja se julkaistiin GNU Lesser General Public License -lisenssillä.

JExcelAPI-kirjaston lataaminen

K: Kuinka voin ladata JExcelAPI: n?

A: Lataa JExcelAPI suorittamalla seuraavat vaiheet:

  1. Osoita selaimesi JExcelAPI: n SourceForge-sivustolle.
  2. Klikkaa jexcelapi linkki.
  3. Napsauta avautuvalla sivulla yhtä kansiolinkistä. Napsautin esimerkiksi 2.6.12 linkki.
  4. Napsauta tuloksena olevalla sivulla jakeluaineiston arkiston tiedostonimeä. Napsautin esimerkiksi jexcelapi_2_6_12.zip linkki.
  5. Lyhyen viiveen jälkeen selaimesi kehottaa sinua tallentamaan tämän tiedoston. Mene eteenpäin ja tallenna tiedosto.

Poista tämän tiedoston arkistointi latauksen jälkeen. Ota huomioon a jexcelapi kotihakemisto a: n sisällä jexcelapi_2_6_12 hakemistoon.

JExcelAPI-kirjaston esittely

K: Sisältääkö JExcelAPI-kirjasto esittelyjä?

A: JExcelAPI: t jexcelapi kotihakemisto sisältää a jxl.jar tiedosto, joka sisältää demoja laskentataulukoiden lukemista, kirjoittamista ja kopiointia varten.

Luettu demo lukee olemassa olevan laskentataulukon muuntamalla se pilkulla erotetuksi arvoksi (CSV) tai XML-muotoon -csv tai -xml komentorivivaihtoehto. Harkitse seuraavia esimerkkejä:

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

Nämä esimerkit luetaan budget.xls ja tulostaa sen sisällön CSV- ja XML-muodossa vakiolähtöön. Kun kumpikaan -csv ei myöskään -xml on määritelty, -csv on oletettu.

Kirjoitusdemo luo laskentataulukon, joka sisältää kaavoja, reunuksia, kuvia ja muuta. Tämä laskentataulukko luodaan määrittämällä -kirjoittaa komentorivivaihtoehto, kuten alla on esitetty:

java -jar jxl.jar-kirjoita näyte.xls

Kuva 1 esittää osan tuloksesta näyte.xls laskentataulukko.

Kuva 1. Käytin LibreOffice Calc -sovellusta päästäksesi näyte.xls-laskentataulukkoon

Kopio demo kopioi mallilaskentataulukon jxlrwtest.xls, joka on tallennettu samaan hakemistoon kuin jxl.jar, uuteen laskentataulukkoon. Tuloksena olevassa laskentataulukossa ensimmäinen taulukko (alkuperäinen) on muuttumaton, kun taas toinen taulukko (muokattu) sisältää muokattuja arvoja.

Tämä esittely luodaan määrittämällä -rw komentorivivalinta, jota seuraa jxlrwtest.xls ja lähtötaulukon nimi. Harkitse seuraavaa komentoriviä:

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

Tämä komentorivi kopioi jxlrwtest.xls että copy.xls. Kuvassa 2 on toinen (muokattu) taulukko LibreOffice Calc.

Kuva 2. Napsauta alkuperäisiä ja muokattuja välilehtiä nähdäksesi alkuperäiset ja muokatut taulukot

Sisältää JExcelAPI: n kääntämistä ja suorittamista varten

K: Kuinka sisällytän JExcelAPI: n lähdekoodia käännettäessä ja sovellusta suoritettaessa?

A: Jos haluat sisällyttää JExcelAPI: n lähdekoodia käännettäessä ja sovellusta suoritettaessa, tee jokin seuraavista:

  • Lisää jexcelapi kotihakemistot jxl.jar tiedosto sinun CLASSPATH ympäristömuuttuja.
  • Sisältää jxl.jar kautta javac ja java ohjelman -cp komentorivivaihtoehto.

Ohjelmointi JExcelAPI: n avulla

K: Kuinka luon Java-ohjelmia, jotka hyödyntävät JExcelAPI: tä?

A: jexcelapi kotihakemisto sisältää a tutorial.html tiedosto, joka sisältää JExcelAPI-ohjelmoinnin perusopetuksen. Opetusohjelma näyttää, miten voit laskea, kirjoittaa ja kopioida laskentataulukoita. Opetusohjelmassa käsitellään myös muotoilua.

jexcelapi sisältää myös a asiakirjat alihakemisto, joka tarjoaa pääsyn laajaan API-dokumentaatioon. Osoita verkkoselaimesi tähän hakemistoon index.html tiedosto ja voit tutkia tämän kirjaston neljän dokumentoidun paketin tyyppejä:

  • jxl: pääpaketin tyypit
  • jxl.demo: tyypit eri demoille
  • jxl.formaatti: muotoiluun liittyvät tyypit
  • jxl.write: tyypit laskentataulukkoon kirjoittamista varten

Huomaa, että tämä luettelo ei ole tyhjentävä. Lisäpaketit, kuten jxl.lue ovat läsnä, mutta niitä ei ole dokumentoitu. Jos haluat oppia lisää paketeista, suorita jar tvf jxl.jar ja tutkia saadun JAR-listan pakettitiedot.

JExcelAPI: n käytön aloittamiseksi olen luonut yksinkertaisen JExcelAPIDemo sovellus, joka osoittaa uuden laskentataulukon luomisen output.xls ja sitten lukea ja tulostaa tämän laskentataulukon sisältö. Tutustu luetteloon 1.

Luettelointi 1. Yksinkertaisen laskentataulukon kirjoittaminen ja lukeminen

tuo java.io.File; tuo java.io.IOException; tuoda jxl.Cell; tuo jxl.Sheet; tuoda jxl.Työkirja; tuoda jxl.read.biff.BiffException; tuo jxl.write.Label; tuo jxl.write.Number; tuo jxl.write.WritableSheet; tuo jxl.write.WritableWorkbook; tuo jxl.write.WriteException; public class JExcelAPIDemo {public static void main (String [] args) heittää BiffException, IOException, WriteException {WritableWorkbook wworkbook; wworkbook = Workbook.createWorkbook (uusi tiedosto ("output.xls")); WritableSheet wsheet = wworkbook.createSheet ("Ensimmäinen arkki", 0); Label label = uusi Label (0, 2, "A label record"); wsheet.addCell (tarra); Numeron numero = uusi luku (3, 4, 3.1459); wsheet.addCell (numero); wbookbook.write (); wbookbook.close (); Työkirjan työkirja = Workbook.getWorkbook (uusi tiedosto ("output.xls")); Arkkiarkki = työkirja.getSheet (0); Solusolu1 = sheet.getCell (0, 2); System.out.println (cell1.getContents ()); Solusolu2 = sheet.getCell (3, 4); System.out.println (cell2.getContents ()); työkirja.sulje (); }}

Listaus 1 luo ensin kirjoitettavan työkirjan kutsumalla yhden Työkirjatehtaan menetelmiä. Tälle työkirjalle luodaan sitten kirjoitettava taulukko ja lisätään sitten tarra ja numero taulukon kahtena soluarvona. Työkirja sitten kirjoitetaan ja suljetaan.

Listaus 1 jatkuu hankkimalla siihen työkirja output.xls ja lukea sen sisältöä. getSheet () menetelmä tarjoaa pääsyn tämän työkirjan ensimmäiseen taulukkoon. Sen getCell () menetelmä kutsutaan pääsemään kahteen soluun, joiden sisältö sitten tuotetaan.

Olettaen että jxl.jar sijaitsee nykyisessä hakemistossa, suorita seuraava komento kääntääksesi Listaus 1:

javac -cp jxl.jar JExcelAPIDemo.java

Jos oletetaan onnistuneen, suorita seuraava komento JExcelAPIDemo:

java -cp jxl.jar ;. JExcelAPIDemo

Ota huomioon seuraava tulos:

Tarralevy 3.146

Kuva 3 näyttää sinut output.xls LibreOffice-kontekstissa.

Kuva 3. Yksinäinen arkki näyttää kaksi soluarvoa

Mitä seuraavaksi?

Seuraavan kerran esitän joukon pulmia, jotka käsittelevät Java-kirjastojen kehitystä. Nämä pulmapelit keskittyvät lähde- ja binaarikoodien yhteensopivuuteen asiakasohjelmien ja näiden ohjelmien käyttämien kirjastojen välillä.

lataa lähde Lataa lähde Hanki tämän viestin sovellusten lähdekoodi. Luonut Jeff Friesen JavaWorldille

Seuraavaa ohjelmistoa käytettiin postin koodin kehittämiseen:

  • 64-bittinen JDK 7u6
  • JExcelAPI 2.6.12

Postin koodi testattiin seuraavilla alustoilla:

  • JVM 64-bittisessä Windows 7 SP1: ssä

Tämän tarinan "Excel-laskentataulukoiden lukeminen ja kirjoittaminen" julkaisi alun perin JavaWorld.