2016-03-23 17 views
1

私はapache POIを使用してテンプレートの.xlsファイルにデータを入れようとしていますが、ファイルは変わりません。 PrintStackTraceでスローされた例外はありません。あなたは働くコードを私に提供してもらえますか?私は非常に多くの文書を読んでいますので、作業コードで私を助けてください。おかげapache POIを使って既存のxlsやxlsxファイルにデータを書き込む方法android

私のコード:

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(); 
    } 
} 

}

答えて

0

は(file.closeしてみてください)。後にworkbook.write(outFile); outFile.close();

+0

ありません – dudu

0

ここで問題と思われるのは、最初に作成されなかった行とセルを取得しようとしていることです。
あなたはcell = sheet.getRow(row);
よう

XSSFRow row = sheet.createRow(rowIndex);

を呼び出す前に、最初のを作成し、同様に

Cell cell = row.createCell(cellIndex); 

ようCellを作成する詳細については、このfull exampleを参照してくださいする必要があり

まだ
+0

セル3,3がすでに作成されていて、h値として。とにかくありがとう、他のアイデアはありませんか? – dudu

+0

代わりにXSSFを試しましたか?私はapache poiを一度しか使用しておらず、リンクを与えた例はうまくいきます。 –

+0

はい、私はすべて同じ:( アンドロイドに最適化されたgithub上で編集されたapache poiがありましたが、それはずっと悪かったです 既存のExcelファイルを編集するためにapache poiを使用したアプリケーションは聞いたことがありますか? – dudu

関連する問題