2016-03-23 1 views
1

J'essaie de mettre des données dans un fichier .xls modèle (il peut être xlsx si nécessaire) en utilisant POI apache mais je ne peux pas le comprendre et le le fichier est toujours inchangé. aucune exception n'est lancée dans PrintStackTrace. Pourriez-vous s'il vous plaît me fournir un code de travail? J'ai lu tant de documents alors s'il vous plaît aidez-moi avec le code de travail. grâcecomment écrire des données sur un fichier xls ou xlsx existant en utilisant apache POI dans android

mon code:

final Button but = (Button) findViewById(R.id.bk); 
     but.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 


       try { 

        writeXLSFile(3, 3); 


       } catch (FileNotFoundException e) { 
        e.printStackTrace(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 

      } 

     }); 

public static void writeXLSFile(int row, int col) throws IOException { 
    try { 
     FileInputStream file = new FileInputStream(Environment.getExternalStorageDirectory().toString() +"telegran/"+ "ex.xls"); 

     HSSFWorkbook workbook = new HSSFWorkbook(file); 
     HSSFSheet sheet = workbook.getSheetAt(0); 
     Cell cell = null; 

     //Update the value of cell 

     cell = sheet.getRow(row).getCell(col); 
     cell.setCellValue("changed"); 

     file.close(); 

     FileOutputStream outFile =new FileOutputStream(new File(Environment.getExternalStorageDirectory().toString() +"telegran/"+ "ex.xls")); 
     workbook.write(outFile); 
     outFile.close(); 

    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

}

Répondre

0

essayer de file.close(); après workbook.write (outFile); outFile.close();

+0

toujours pas travail – dudu

0

Je pense que le problème ici est que vous essayez d'obtenir une ligne et une cellule qui n'ont pas été créées en premier lieu.
Vous devez créer un premier avant d'appeler cell = sheet.getRow(row); comme

XSSFRow row = sheet.createRow(rowIndex);

Et créer un Cell ainsi que

Cell cell = row.createCell(cellIndex); 

voir ce full example pour plus de détails

+0

cellule 3,3 est déjà créé et h comme une valeur. merci quand même mais n'avez pas d'autre idée? – dudu

+0

Avez-vous essayé XSSF à la place? J'ai utilisé Apache Poi seulement une fois et l'exemple que j'ai donné le lien fonctionne très bien. –

+0

oui je l'ai fait et tout de même :( il y avait un pache apache édité sur github optimisé pour android mais il était bien pire, avez-vous déjà entendu une application apache poi utilisé pour éditer un fichier Excel existant? – dudu