Salve raga !
ho creato una classe java che mi legge dei dati da un file excel e me li inserisce in un database.
Prima funzionava alla perfezione , l'ho ripresa dopo un pò è non mi funziona più, perche?
vi posto la classe e l'errore:
codice:import java.io.File; import java.io.IOException; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.text.Format; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import javax.swing.JOptionPane; import jxl.Sheet; import jxl.Workbook; import jxl.read.biff.BiffException; //classe utilizzata per il carico delle commesse da un file excel public class ExcelCaricoCommessa { static String stringa1="ok",stringa; ResultSet rs; boolean stop = false; static Workbook workbook; static Sheet sheet; String query; ArrayList lista=null; static String str,str2; //metodo che effettua i controlli sulle specifiche contenute nel file passatogli come parametro public ArrayList ExcelCaricoCommessa() throws SQLException, IOException, BiffException { //crea un arraylista di dati generici lista=new ArrayList(); //connessione al database new MyConnection(); Connection con=MyConnection.getConnection(); Statement st; st = con.createStatement(); // apre il workbook del file passatogli nel costruttore workbook = Workbook.getWorkbook(new File("commesse2.xls")); //copia lo sheet (foglio) sheet = workbook.getSheet(0); //effettua il controllo e stoppa il ciclo quando nel file finiscono i dati // ciò e possibile tramite la flag stop int size =sheet.getRows(); for(int righa=1;righa<size;righa++){ // copia il contenuto della prima e della seconda cella in stringhe stringa=sheet.getCell(1,righa).getContents();//campo specifica str = sheet.getCell(2,righa).getContents();//campo gtec // concatena le stringhe che verranno aggiunte alla tabella della lista di specifiche mancanti str2 = stringa+" GTEC : "+str; // effettua il controllo della presenza della specifica nel database query="select cod_etichetta from specifica where cod_etichetta = '"+stringa+"';"; rs =st.executeQuery(query); // se la specifica manca viene aggiunto all'arreylist while(rs.next()){ stringa1=rs.getString(1); } // questo controllo ci dice che se stringa1 e ok allora la specifica manca nel database // e si può aggiungere all'arraylist // se stringa1 è diverso da ok vuol dire che la specifica è presente nel database perche ci ritorna il valore dalla query if(stringa1=="ok"){ lista.add(str2); } // i conta le specifiche mancanti e stringa 1 si rimposta a ok stringa1="ok"; } //chiude il canale di lettura dal file excel workbook.close(); rs.close(); st.close(); con.close(); //ritorna la lista di specifiche mancanti return lista; } boolean stop2 = false; int x=0,y=0; Commessa com = new Commessa(); InserisciCommessa id = new InserisciCommessa(); Format formatodata= new SimpleDateFormat("dd/MM/yyyy"); //Formato modificabbile Format formatodata1= new SimpleDateFormat("yyyy-MM-dd"); //Formato modificabbile //metodo che carica la commessa da file e la inserisce nel database public void InserisciCommessa2(File file) throws BiffException, IOException, SQLException{ //apertura del file e caricamento dello sheet(FOGLIO) workbook = Workbook.getWorkbook(file); sheet = workbook.getSheet(0); //controllo per la fine dei dati nel file int size = sheet.getRows(); for(int righa=1;righa<size;righa++){ // carica gli altri dati dalle celle nella righa della data String data = sheet.getCell(0,righa).getContents(); Date data1 = ImpostaData(data); com.Data=formatodata.format(data1); com.Cod_Specifica = sheet.getCell(1,righa).getContents(); com.Cod_Cliente = Integer.parseInt(sheet.getCell(3,righa).getContents()); // elimina il separatore delle migliaia della quantità String quantita = sheet.getCell(4,righa).getContents(); String quan =quantita.replace(".",""); com.Quantita= Integer.parseInt(quan); String datacon= sheet.getCell(5,righa).getContents(); Date datacon1 = ImpostaData(datacon); com.Data_Consegna=formatodata.format(datacon1); String datacon2 = formatodata1.format(datacon1); com.Ordine = Integer.parseInt(sheet.getCell(6,righa).getContents()); com.Item= Integer.parseInt(sheet.getCell(7,righa).getContents()); //l'id della commessa viene calcolato perche è incrementale dal metodo CalcolaID com.Cod_Commessa= id.CalcolaId(); //chiama il metodo CompletaCommessa per caricare gli altri parametri che formeranno la commessa inserita this.CompletaCommessa(com); //dati fissi com.Nota1=""; com.Nota2=""; com.Ristampa="NO"; com.Stato=0; com.Nota_Fissa="ECCEDENZA MAX 5%"; //chiama il metodo per l'inserimento della commessa String ris=id.InserisciCommessa(com, datacon2); //controllo di errore inserimento if(ris==null){ JOptionPane.showMessageDialog(null,"Commessa con specifica "+com.Cod_Specifica+" non inserita !","WARNING !!!",0); y++; } //conta numero commesse inserite x++; } //controllo della presenza di dati nel file if(x==0){ JOptionPane.showMessageDialog(null,"Il file "+file.getName()+" e vuoto ! ","WARNING !!!",0); }else{ //controllo sulla fine del caricamento x=x-y; JOptionPane.showMessageDialog(null,"Dal file "+file.getName()+" sono state inserite "+x+" commesse !","Operazione avvenuta con successo!",3); } } //metodo che preleva gli altri dati della commessa da inserire public void CompletaCommessa(Commessa vetcom) throws SQLException{ new MyConnection(); Connection con=MyConnection.getConnection(); Statement st = con.createStatement(); String query2="select descrizione,nome_macchina from specifica where cod_etichetta = '"+vetcom.Cod_Specifica+"';"; rs =st.executeQuery(query2); while(rs.next()){ com.Descr_Specifica=rs.getString(1); com.Nome_Macchina=rs.getString(2); } String query3="select ragione_sociale from cliente where id_cliente = '"+vetcom.Cod_Cliente+"';"; rs =st.executeQuery(query3); while(rs.next()){ com.Rag_Sociale_Cliente=rs.getString(1); } rs.close(); st.close(); con.close(); } public Date ImpostaData(String data){ String[] data2 = null ; if(data.contains("/")){ data2 = data.split("/"); } if(data.contains(".")){ data2 = data.split("."); } if(data.contains(":")){ data2 = data.split(":"); } if(data.contains("-")){ data2 = data.split("-"); } if(data.contains(",")){ data2 = data.split(","); } if(data.contains(";")){ data2 = data.split(";"); } if(data.contains("_")){ data2 = data.split("_"); } if(data.contains("'")){ data2 = data.split("'"); } Date data1= new Date(); data1.setDate(Integer.parseInt(data2[0])); int mese = Integer.parseInt(data2[1]); data1.setMonth(mese-1); String anno = "20"; int anno1; if(data2[2].length()<3){ anno1 = Integer.parseInt(anno.concat(data2[2])); }else{ anno1 = Integer.parseInt(data2[2]); } data1.setYear(anno1-1900); return data1; } }
grazie per un eventuale aiuto!!! ciaocodice:jxl.read.biff.BiffException: Unable to recognize OLE stream at jxl.read.biff.CompoundFile.<init>(CompoundFile.java:116) at jxl.read.biff.File.<init>(File.java:127) at jxl.Workbook.getWorkbook(Workbook.java:221) at jxl.Workbook.getWorkbook(Workbook.java:198) at nuceria.ExcelCaricoCommessa.ExcelCaricoCommessa(ExcelCaricoCommessa.java:42) at nuceria.FrameCaricoCommessa.actionPerformed(FrameCaricoCommessa.java:145) at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.setPressed(Unknown Source) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source)

Rispondi quotando

