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