1

jExcel poiを使用して、EclipseでExcelファイルを作成しようとしています。すべて問題なく、エラーもなく、ファイルも作成されますが、サイズが 0b で開くことができません。タブレットからコードを実行する USB にファイルを取得することができました。PC でファイルを開くと、「開こうとしているファイルは、ファイル拡張子で指定された形式とは異なります」と表示されます。 .ファイルを開く前に、ファイルが破損しておらず、信頼できるソースからのものであることを確認してください。」次に、開くかどうか尋ねられます。「はい」と言うと、新しい空の Excel ファイルが開きます。Javaで作成したファイルではありません。ここに私のコードがあります:

public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Random generator = new Random();
    int n = 10000;
    n = generator.nextInt(n);
    try {
        WritableWorkbook wb = createWorkbook("Busotina "+n+".xls");
            WritableSheet sheet = createSheet(wb, "Prvi",0);
                    writeCell(0, 0, "poz", true, sheet);
        writeCell(2, 0, "poz", true, sheet);
        writeCell(1, 1, "poz", true, sheet);
        writeCell(2, 3, "poz", true, sheet);

    } catch (Exception e) {
        e.printStackTrace();
    }
          }

public WritableWorkbook createWorkbook(String fileName) throws WriteException{
    WorkbookSettings wbSettings = new WorkbookSettings();
    wbSettings.setUseTemporaryFileDuringWrite(true);
    File sd = Environment.getExternalStorageDirectory();
    File dir = new File(sd.getAbsolutePath() + "/JExcelTest");
    dir.mkdirs();
    File wbfile = new File (dir, fileName);
    WritableWorkbook wb = null;
      try {
        wb=Workbook.createWorkbook(wbfile, wbSettings);
        wb.write();
        wb.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
            return wb;
}
public WritableSheet createSheet(WritableWorkbook wb, String sheetName, int sheetIndex){
    return wb.createSheet(sheetName,sheetIndex);
}
    public void writeCell(int columnPosition, int rowPosition,String contents, boolean 
                           headerCell, WritableSheet sheet) throws WriteException{
            Label newCell = new Label (columnPosition,rowPosition,contents);
            if(headerCell){
        WritableFont headerFont = new WritableFont(WritableFont.ARIAL,10,WritableFont.BOLD);
        WritableCellFormat headerFormat = new WritableCellFormat(headerFont);
        headerFormat.setAlignment(Alignment.CENTRE);
        newCell.setCellFormat(headerFormat);
            }
    sheet.addCell(newCell);
}

}

それで、ディレクトリを作成し、ファイルを必要とする理由を知っている人はいますか?ファイルは0.00Bの大きさで、開いたり、電子メールなどの添付ファイルに入れたりできません。

前もって感謝します !

4

1 に答える 1

1

ファイルの出力ストリームが適切に閉じられていないようです (そのため、ファイルは 0 バイトのように見え、他のプログラムからアクセスできません。

もう 1 つの奇妙な点は、変更を加える前にワークブックを閉じることです。コンテンツを挿入した後にのみ行う必要があります。

createWorkbookメソッドを次のようにコーディングする必要があります。

public WritableWorkbook createWorkbook(String fileName) throws WriteException{
    WorkbookSettings wbSettings = new WorkbookSettings();
    wbSettings.setUseTemporaryFileDuringWrite(true);
    File sd = Environment.getExternalStorageDirectory();
    File dir = new File(sd.getAbsolutePath() + "/JExcelTest");
    dir.mkdirs();
    File wbfile = new File (dir, fileName);
    WritableWorkbook wb = null;
      try {
        wb=Workbook.createWorkbook(wbfile, wbSettings);
        wb.write();
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        if(wb != null) wb.close();
    }         
    return wb;
}
于 2012-12-02T18:51:27.943 に答える