01. marts 2005 - 11:43
Der er
21 kommentarer og 1 løsning
Java og Excel
Hej jeg kunne godt tænke mig at vide, at hvis jeg skal kunne trække info fra en Excel ark, hvilke klasser kan jeg så bruge fra Java.
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
01. marts 2005 - 11:50
#1
Jeg kender ihvertfald 2 muligheder: JDBC ODBC Apache POI
01. marts 2005 - 11:51
#2
Eksempler: 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(); } } og: 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++; } } }
01. marts 2005 - 12:17
#3
dvs at fremgangsmåden med at hente eller indsætte data i excel er på samme måde som med db... ok... takker arne
01. marts 2005 - 12:25
#4
Ligger du et svar arne....
01. marts 2005 - 12:35
#5
Næsten den samme ! Og svar.
01. marts 2005 - 12:38
#6
Hov ikk så hurtig arne...normalt sir man jo "create table" - for at kunne indsætte noget i db. men hvad gør jeg for at indsætte noget i excel, og for den sags skyld også kunne trække noget ......
01. marts 2005 - 12:41
#7
Udtræk er vist ovenfor. Eksempler på indsæt: import java.sql.*; public class WriteXLS { 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)};READONLY=FALSE;Dbq=C:\\test.xls;"); Statement stmt = con.createStatement(); stmt.executeUpdate("CREATE TABLE t (f1 INTEGER, f2 VARCHAR(50), f3 VARCHAR(50), f4 VARCHAR(50))"); stmt.executeUpdate("INSERT INTO t VALUES(3,'hest','ko','hund')"); stmt.executeUpdate("INSERT INTO t VALUES(4,'hest2','ko2','hund2')"); stmt.close(); con.close(); } } og: import java.io.*; import org.apache.poi.hssf.usermodel.*; public class WritePOI { public static void main(String[] args) throws Exception { HSSFWorkbook book = new HSSFWorkbook(); HSSFSheet sheet = book.createSheet("Test Sheet"); sheet.setSelected(true); HSSFRow hdrrow = sheet.createRow((short)0); HSSFCell hdrrowcola = hdrrow.createCell((short)0); hdrrowcola.setCellValue("F1"); HSSFCell hdrrowcolb = hdrrow.createCell((short)1); hdrrowcolb.setCellValue("F2"); for(int i = 0; i < 10; i++) { HSSFRow datarow = sheet.createRow((short)(i+1)); HSSFCell datacola = datarow.createCell((short)0); datacola.setCellValue(i+1); HSSFCell datacolb = datarow.createCell((short)1); datacolb.setCellValue("Dette er en test"); } sheet.setColumnWidth((short)1, (short)(50*256)); FileOutputStream f = new FileOutputStream("C:\\jjtest.xls"); book.write(f); f.close(); } }
01. marts 2005 - 12:54
#8
hmm bruger man også JDBC ODBC,Apache POI hvis man skal have i word? fx indsætte text i word fra java? (sorry for spam)
01. marts 2005 - 12:59
#9
Jeg mener ikke at der findes en ODBC driver til Word, så JDBC ODBC kan man ikke bruge. POI har også et modul til Word, men det er vistnok ikke nær så færdigt som det til Excel. Java er ikke det optimale til at snakke med Microsofts kontor programmer med.
01. marts 2005 - 13:11
#10
arne jeg får følgende fejl... jeg har oprettet et jtest.xls fil på C: drevet... Men den klager over den linie hvor man opretter forbindelse til Excel.... java.sql.SQLException: [Microsoft][ODBC Excel Driver] External table is not in the expected format. at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source) at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source) at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(Unknown Source) at sun.jdbc.odbc.JdbcOdbcConnection.initialize(Unknown Source) at sun.jdbc.odbc.JdbcOdbcDriver.connect(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at db.main(db.java:9) Exception in thread "main"
01. marts 2005 - 13:33
#11
Det er denne linie den klager over : Connection con = DriverManager.getConnection("jdbc:odbc:;Driver={Microsoft Excel Driver (*.xls)};Dbq=C:/jtest.xls;");
01. marts 2005 - 13:40
#12
Er det en valid Excel fil ?
01. marts 2005 - 13:43
#13
ikke forstået... jeg gik ind på C: drevet, højreklikkede, valgte en genvejs fil, og omdøbte den til jtest.xls fil....
01. marts 2005 - 14:44
#14
I den første eks., skriver du ved ResultSet [Sheet1$]... skal jeg skrive det samme, eller skal jeg skrive et andet navn her ???
01. marts 2005 - 14:52
#15
Jeg mener at det er default i engelsk Excel. Det hedder sikkert Ark1$ eller sådan noget i dansk Excel.
01. marts 2005 - 15:02
#16
Og filen skal være selve regnearket
01. marts 2005 - 15:44
#17
suk.. det er det også... jeg har også prøvet forskellige tutorials fra nettet for at få det op at stå... jeg arbejder i Eclipse, mon ikk jeg skal have importeret det som en JAR fil, før programmet vil acceptere det og køre videre ???
01. marts 2005 - 22:13
#18
Du behøver ikke nogen jar fil for at bruge JDBC ODBC bridgen. Hvilken fejl får du nu ?
01. marts 2005 - 23:08
#19
den klager stadig over Connection con - sætningen... den kan ikke læse jtest.xls filen...
01. marts 2005 - 23:10
#20
Kan vi få den præcise fejl ?
02. marts 2005 - 10:25
#21
jeg har droppet at oprette forbindelse til Excel. jeg vil i stedet lave den om til en csv.fil, og læse ind vha vector.
02. marts 2005 - 15:30
#22
En funktion som kan lave alle excel filer om til csv filer....
Kurser inden for grundlæggende programmering