I have two programs (not made by me), one which gives text files as output and 
one that takes excel files as input. Using POI I take the data I want from the 
text files and put it in excel files. When I open the excel file in Excel 2007 
everything looks ok. However I get an error message when trying to import the 
made excel file through the other program. It's not an error in the program, 
manually made files  works fine. (The error message says "Import fail: No data 
in file." But this text is probably just poorly made exception handling.)

Also if I open the excel file made with POI, write something random in a random 
cell, save the file, and then delete the content of that cell and save it 
again, the program imports the file without problems. 

I also noticed that although none of the cells are changed at all the file size 
increases by 57% when I edit and save it like mentioned above. Since I can open 
the file in excel I'm guessing there is no bugs in my code? But if no bugs I 
don't understand what the problem is. Is there another way to make the file or 
save the data in it which fixes this problem? Below is one of the methods that 
makes an excel file:
 
 
 
 private void makeFile(Persons persons) {
  int maxTests = HelperClass.maxTests(persons,testName);
  Workbook wb = new XSSFWorkbook();
  CreationHelper createHelper = wb.getCreationHelper();
  Sheet sheet = wb.createSheet();
  Row row = sheet.createRow(0);
  //Make the headers     
  sheet.setColumnWidth(0, 6000);
  row.createCell(0).setCellValue(
       createHelper.createRichTextString("Resultat Treisman Formes"));
  sheet.setColumnWidth(1, 4000);
  row.createCell(1).setCellValue(
       createHelper.createRichTextString("Kodenummer"));
  sheet.setColumnWidth(2, 4000);
  row.createCell(2).setCellValue(
       createHelper.createRichTextString("Vakter"));
  for(int i=0;i<maxTests;i++){
       sheet.setColumnWidth(3+i*numInfo, 3000);
   row.createCell(3+numInfo*i).setCellValue(
        createHelper.createRichTextString("Dato"));
   sheet.setColumnWidth(4+i*numInfo, 3000);
   row.createCell(4+numInfo*i).setCellValue(
        createHelper.createRichTextString("Ant riktig"));
       sheet.setColumnWidth(5+i*numInfo, 3000);
   row.createCell(5+numInfo*i).setCellValue(
        createHelper.createRichTextString("Ant feil"));
      }

  Person[] personArray = persons.getPersons();
  //add tests from all persons     
  for(int indPerson=0;indPerson<personArray.length;indPerson++){
   Row tempRow = sheet.createRow(indPerson+1);
      
   //first and third column empty
      
       //add name
   tempRow.createCell(1).setCellValue(
        createHelper.createRichTextString(
        personArray[indPerson].getName()));
   Test[] sortedTests = personArray[indPerson].getTests(testName); 
   //for each test 
   if(sortedTests!=null) {
    for(int indTest=0;indTest<sortedTests.length;indTest++){
  
         //add date
         Cell cell = tempRow.createCell(3+numInfo*indTest);
          
         cell.setCellValue(
          createHelper.createRichTextString(
      sortedTests[indTest].getDate()));
         
         //add all values in a test
         Hashtable<String,String[]> info = sortedTests[indTest].getInfo();
         String[] values = info.get(HelperClass.resTreismanF);
  
      if(values!=null) {
           for(int i=0;i<values.length;i++){
            tempRow.createCell(4+numInfo*indTest+i).setCellValue( 
            Double.parseDouble(values[i]));
            }
         }
    }
   }
  }    
  //Write the output to a file and close the connection.
  FileOutputStream fileOut = null;
  try {
   fileOut = new FileOutputStream(outputName);
   wb.write(fileOut);
   fileOut.close();
  } catch (FileNotFoundException fnfe) {
   //...deleted
  }
  } catch (IOException iie) {
   //...deleted
  }
 }                                        

Reply via email to