Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Caricamento dati da Excel

    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;
    	}
    		
    }

    codice:
     
    
    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)
    grazie per un eventuale aiuto!!! ciao

  2. #2
    P.S.

    un'altra classe che mi permetteva di inserire i dati in un file excel mi funziona!

    ciao

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328

    Moderazione

    Se non spieghi anche in che senso "non funziona", nessuno riuscirà mai a dirti niente di più.

    Non viene compilata?
    Lancia qualche eccezione?
    Produce risultati errati?
    Non produce affatto risultati?

    "Non funziona" non vuol dire nulla...


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4
    compila ma quando questa funzione veniva chiamata mi dava quell errore.

    cmq ho capito il perchè, il file da cui tentavo di prelevare i dati non andava bene (non so perchè), compiando il suo contenuto in un nuovo file excel funziona perfettamente!

    ciao grazie lo stesso!

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Originariamente inviato da fcorsa
    compila ma quando questa funzione veniva chiamata mi dava quell errore.

    cmq ho capito il perchè, il file da cui tentavo di prelevare i dati non andava bene (non so perchè), compiando il suo contenuto in un nuovo file excel funziona perfettamente!

    ciao grazie lo stesso!
    Può essere che il file Excel originario fosse salvato in una versione successiva a quella di sviluppo della libreria JXL o in una troppo vecchia...


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  6. #6
    ok grazie! sicuramente è questo il problema. ciao

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.