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