You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@poi.apache.org by mouss4rs <ou...@gmail.com> on 2012/03/07 12:24:03 UTC

Is-it a bug ?: Unexpected missing row when some rows already present

Hi,

I would like to know if they is a solution for this error.
Exception in thread "main" java.lang.RuntimeException: Unexpected missing
row when some rows already present
	at
org.apache.poi.hssf.usermodel.HSSFSheet.setPropertiesFromSheet(HSSFSheet.java:168)
	at org.apache.poi.hssf.usermodel.HSSFSheet.<init>(HSSFSheet.java:115)
	at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:299)
	at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:250)
	at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:194)
	at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:329)
	at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:310)
	at TrouveeDateDsFichier.main(TrouveeDateDsFichier.java:39)

my little program (line impacted in bold):
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Iterator;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;


public class TrouveeDateDsFichier {

	
	public static void main(String[] args) {
		
		try {
		String date_extract="25/01/2012";
		DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
		java.util.Date datextract;
		Calendar calendar = Calendar.getInstance();
		int semaine = 0;
		
		//faire une vérification pour savoir:
		//si la date du fichier n'est pas trouvée sur
		InputStream istr = new
FileInputStream("C:/Donnees/Aide_Manager/date_extract1.xls");
		//ce fichier permettra de récupérer les dates pour savoir si un extract à
déjà été utilisé.
		*HSSFWorkbook wbd = new HSSFWorkbook(istr);*		HSSFSheet sheetd =
wbd.getSheetAt(0);
		HSSFRow rowd = null;
		HSSFCell celld = null;
		boolean date_stockee_trouvee = false;
		int dernLigneTrouvee = 0;
		for (Iterator r = sheetd.rowIterator(); r.hasNext();){
			rowd = (HSSFRow) r.next();
			celld = rowd.getCell(0);
			//System.out.println("lalalalalala");
			if(celld != null ){
				if(celld.getCellType()==0){
				System.out.println("c'est un nombre: "+celld.getNumericCellValue());
				}else{
					System.out.println("c'est une chaine: "+celld.getStringCellValue());
					if(celld.getStringCellValue().equals(date_extract)){// si on trouve que
la date_extract est = à la date trouvée dans le fichier
						System.out.println("DATE TROUVEE Ds le fichier !");
						System.out.println("CETTE EXTRACT A DEJA ETE UTILISEE !!");
						System.out.println("MERCI D'UTILISER UN AUTRE EXTRACT CONCERNANT UNE
AUTRE DATE !");
						date_stockee_trouvee=true;
					}
				}
				dernLigneTrouvee = rowd.getCell(0).getRowIndex();
			}
		}
		dernLigneTrouvee++;
		System.out.println("dernLigneTrouvee: "+dernLigneTrouvee);
		//si la date n'est pas trouvée dans le fichier
		System.out.println("date_stockee_trouvee: "+date_stockee_trouvee);
		if(date_stockee_trouvee==false){
			//retrouver la dernière ligne du fichier pour y ecrire la date
				System.out.println("retrouver la dernière ligne du fichier:
"+dernLigneTrouvee);
				//pour crée la date ds le fichier 
				//et pour la retrouver et eviter de rajouter la validation d'un extract
comportant la même date
				rowd.setRowNum(dernLigneTrouvee);
				sheetd.createRow(0);
				celld = rowd.createCell(0);
			    celld.setCellValue(date_extract);
			    System.out.println("La nouvelle date_extract '"+date_extract+"' a été
stocké dans le fichier.");
			    //pour ecrire dans le même fichier
				FileOutputStream fileOutd = new
FileOutputStream("C:/Donnees/Aide_Manager/date_extract1.xls");
				wbd.write(fileOutd);
			    fileOutd.close();
			
		// Date actuelle
		datextract = formatter.parse(date_extract);
		calendar.setTime(datextract);
		semaine = calendar.get(Calendar.WEEK_OF_YEAR);//récupérer la semaine dans
l'année pour faire la comparaison avec les onglet du fichier de destination
		//System.out.println(calendar.get(Calendar.WEEK_OF_YEAR));
		}

	
	} catch (FileNotFoundException e){
		e.printStackTrace();
	} catch (IOException e) {
		e.printStackTrace();
	} catch (ParseException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	}
}

Thanks

--
View this message in context: http://apache-poi.1045710.n5.nabble.com/Is-it-a-bug-Unexpected-missing-row-when-some-rows-already-present-tp5543857p5543857.html
Sent from the POI - User mailing list archive at Nabble.com.

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@poi.apache.org
For additional commands, e-mail: user-help@poi.apache.org