30. november 2004 - 22:38
Der er
25 kommentarer og 1 løsning
Læse og skrive værdi til Excel ark med PIO
Er der nogle der kan hjælpe mig med at finde ud at hvordan man henter værdier i et excel ark via PIO - helt fra bunden? Hvis man bruger PIO kan man så forvente at alle version efter 95 er understøttet?
Annonceindlæg tema
30. november 2004 - 22:41
#1
Mener du via POI ?
30. november 2004 - 22:43
#2
Hvis ja så lavede jeg engang dette simple eksempel (som kun har 2 kolonner i brug): 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++; } } }
30. november 2004 - 22:44
#4
30. november 2004 - 22:45
#5
Nu er det jo usupporteret reverse engineering af Microsofts XLS format, så der er næppe garanti for noget som helst. Mit gæt er at 95 XLS læses lige så godt som nyere XLS.
30. november 2004 - 22:46
#6
Okay - jeg har pakket det ud - hvad gør jeg så nu?
30. november 2004 - 22:48
#7
Du putter jar filen i classpath for din IDE og så koder du så gnisterne springer fra tastaturet !
30. november 2004 - 22:51
#8
Jeg får tre .jar-filer, hvilken skal jeg bruge? Hvordan ligger man den classpath i IDE?
30. november 2004 - 22:54
#9
Hvilken IDE bruger du ?
30. november 2004 - 22:55
#10
Jeg kompiler fra kommandopromthen
30. november 2004 - 22:55
#11
Du kan godt ligge dem alle 3 ind, men de to med contrib og scratchpad behøver du formentligt ikke.
30. november 2004 - 22:57
#12
javac -classpath .;forbandetlangtnavn.jar DitProgram.java java -classpath .;forbandetlangtnavn.jar DitProgram
30. november 2004 - 23:03
#13
okay. Jeg har prøver at kompile med -classepath poi-2.5.1-final-20040804, og den kompiler fint, men når jeg kører di program med java opstår der en fejl:
30. november 2004 - 23:03
#14
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/poi/poifs/ filesystem/POIFSFileSystem at ReadPOI.main(ReadPOI.java:8)
30. november 2004 - 23:04
#15
Kører du med -classepath .;poi-2.5.1-final-20040804.jar ?
30. november 2004 - 23:16
#16
c:\>java -classpath .;poi-2.5.1-final-2004 0804 ReadPOI Exception in thread "main" java.lang.NumberFormatException: You cannot get a num eric value from a String based cell at org.apache.poi.hssf.usermodel.HSSFCell.getNumericCellValue(HSSFCell.j ava:712) at ReadPOI.main(ReadPOI.java:16)
30. november 2004 - 23:17
#17
Ja - og det virker også fint ud over disse exception - jeg har prøve at indsætte mange forskellige værdier, men det virker som om den ser dem alle som string-values?
30. november 2004 - 23:18
#18
Mit program forventer første kolonne er integer og anden kolonne er string.
30. november 2004 - 23:19
#19
Det må du jo rette til så det passer med dit regneark. Jeg tror også at du har mulighed for at spørge på feltets type. Der er ret mange klasser og metoder i POI. Læs Java Docs.
30. november 2004 - 23:20
#20
Ahh - det er fordi det er anden linie - og ikke første linie den læse - nu virker det:-) Kan man ikke lave et eller andet smart så et java-program kan startes ved klikke på det istedet for skive java eller starte det fre en IDE?
30. november 2004 - 23:23
#21
Jo Hvis du pakker dine class filer ned i en jar fil med et manifest med et Main-Class direktiv så kan du dobbeltklikke på jar filen i Windows Explorer etc.
30. november 2004 - 23:24
#22
30. november 2004 - 23:28
#23
Okay Hvordan oprettet med POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream("C:\\test.xls")); så der både kan læses og skrives?
30. november 2004 - 23:30
#24
Jeg har et skriv helt ny XLS eksempel: 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(); } } men jeg har ikke prøvet at opdatere et eksisterende ark. Prøv og læs i docs !
30. november 2004 - 23:36
#25
okay - ligger du et svar?
01. december 2004 - 08:06
#26
ok
Kurser inden for grundlæggende programmering