07. december 2010 - 14:03
Der er
10 kommentarer
Importere tal fra excel til Java
Kære eksperter, Jeg ønsker at importere tal fra excel og ind i et java program. Tallene, ca. 2000, er i cellerne A1 til A2000. Tallet i celle A1, skal ind i variablen Butene1, tallet i celle A2 skal i variablen Butene2 osv. Butene1 skal bruges videre i nogle beregninger - og det skal Butene2 osv. også - så det er noget med et array eller lignende, hvor tallene først skal lægges ind og som man derefter kan tilgå. VH. nanders
Annonceindlæg fra Novataris
07. december 2010 - 14:21
#1
Der er to muligheder for at tilgaa Excel fra Java: * JDBC-ODBC bridge og ODBC driver for Excel * Apache POI
07. december 2010 - 14:38
#2
Jeg vil anbefale at bruge POI hvis det er andet end simpel udtrækning af et par enkelte felter.
07. december 2010 - 15:08
#3
Hej Arne oa. Jeg arbejder i BlueJ, og er ikke ekspert, så det skal være det mest simple. Har du et kodeeksempel liggende? vh. nanders
07. december 2010 - 15:12
#4
Gamle eksempler fra 2004: import java.sql.*; public class ReadXLS { public static void main(String[] args) throws Exception { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection con = DriverManager.getConnection("jdbc:odbc:;Driver={Microsoft Excel Driver (*.xls)};Dbq=C:\\jtest.xls;"); Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM [Sheet1$]"); while (rs.next()) { int iv = rs.getInt(1); String sv = rs.getString(2); System.out.println(iv + " " + sv); } stmt.close(); con.close(); } } import java.io.*; import org.apache.poi.hssf.usermodel.*; import org.apache.poi.poifs.filesystem.*; public class ReadPOI { public static void main(String[] args) throws Exception { POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream("C:\\jtest.xls")); HSSFWorkbook wb = new HSSFWorkbook(fs); HSSFSheet sheet = wb.getSheetAt(0); int rownum = 1; for (;;) { HSSFRow row = sheet.getRow(rownum); if(row==null) break; HSSFCell ivcell = row.getCell((short)0); int iv = (int)ivcell.getNumericCellValue(); HSSFCell svcell = row.getCell((short)1); String sv = svcell.getStringCellValue(); System.out.println(iv + " " + sv); rownum++; } } }
07. december 2010 - 15:49
#5
Det øverste program ovenfor compiler dog, det nederste gør ikke. Hvis der i excelarket (jtest.xls) er 3 værdier i cellerne A1, A2 og A3, hvordan får jeg så adgang til disse værdier inde i java? Og kan jeg bare indsætte nedenstående, fra Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); i mit eksisterende java program - og hvor kommer værdierne fra celle A1, A2 og A3 så til at ligge? Værdierne i A1, A2 og A3 er af typen double og ikke af typen string - kan det lade sig gøre? import java.sql.*; public class ReadXLS { public static void main(String[] args) throws Exception { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection con = DriverManager.getConnection("jdbc:odbc:;Driver={Microsoft Excel Driver (*.xls)};Dbq=C:\\jtest.xls;"); Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM [Sheet1$]"); while (rs.next()) { int iv = rs.getInt(1); String sv = rs.getString(2); System.out.println(iv + " " + sv); } stmt.close(); con.close(); } }
07. december 2010 - 15:51
#6
Det nederste program kraever POI.
07. december 2010 - 15:52
#7
eksmeplet laese kolonne A og B (alle raekker) - du skal tilrette til dit behov
07. december 2010 - 16:00
#8
Har du mulighed for at forklare hvor man: a) definerer at den kun skal hente kolonne A i excel arket? b) definerer hvad der sker med indholdet i celle A1, A2 og A3? c) Om man behøver det med 'String sv' og 'int iv' d) Og om det er rigtigt forstået at man fylder et array op med tal fra regnearket og dette array hedder rs? Vh nanders
07. december 2010 - 17:22
#9
re a) Proev med: SELECT a FROM ... re b) Det koder du selv. re c) Du henter det med rs.getXxx(kolonnenummer) og kan goere hvad di vil med data. re c) rs er et ResultSet ikke et array.
26. december 2010 - 23:40
#10
Tid at få afsluttet her?
Kurser inden for grundlæggende programmering