2016-07-08 10 views
1

私のデータベースのための私の目的は、Apacheのpoiを使用してバックアップを生成するための私のコードですが、私は実行時にいくつかのエラーを表示します。アンドロイドのApacheのpoiのエラー

私はHSSFワークシートで始まり、シートを作成し、データベースから詳細を追加して、そのファイルをsdカードの特定のloactionに保存します。

HSSFWorkbook backup=new HSSFWorkbook(); 
    HSSFSheet sheet=backup.createSheet("Contact_Backup"); 
Map<String, Object[]> data = new HashMap<String, Object[]>(); 
      sq = md.getReadableDatabase(); 

      Cursor mCursor = sq.rawQuery("SELECT * FROM " 
        + MyDatabase.TABLE_NAME, null); 

      if (mCursor.moveToFirst()) { 
       do { 
        idbackup.add(mCursor.getString(mCursor.getColumnIndex(MyDatabase.KEY_ID))); 
        namebackup.add(mCursor.getString(mCursor.getColumnIndex(MyDatabase.KEY_NAME))); 
        numberbackup.add(mCursor.getString(mCursor.getColumnIndex(MyDatabase.KEY_NUM))); 
        addressbackup.add(mCursor.getString(mCursor.getColumnIndex(MyDatabase.KEY_ADDR))); 
        mailbackup.add(mCursor.getString(mCursor.getColumnIndex(MyDatabase.KEY_MAIL))); 
       } while (mCursor.moveToNext()); 
      } 
      if (idbackup.size() != 0) { 
       int j = 2; 
       for (int i = 0; i < idbackup.size(); i++) { 
        data.put(String.valueOf(j), new Object[]{idbackup.get(i), namebackup.get(i), numberbackup.get(i), addressbackup.get(i), mailbackup.get(i)}); 
        j++; 

       } 
      } 


      Set<String> keyset = data.keySet(); 
      int rownum = 0; 
      for (String key : keyset) { 
       Row row = sheet.createRow(rownum++); 
       Object[] objArr = data.get(key); 
       int cellnum = 0; 
       for (Object obj : objArr) { 
        Cell cell = row.createCell(cellnum++); 
        if (obj instanceof Date) 
         cell.setCellValue((Date) obj); 
        else if (obj instanceof Boolean) 
         cell.setCellValue((Boolean) obj); 
        else if (obj instanceof String) 
         cell.setCellValue((String) obj); 
        else if (obj instanceof Double) 
         cell.setCellValue((Double) obj); 
       } 
      } 
    try { 
      File directory = new File("/sdcard/BulkMessenger/backups"); /*creating the file directory 
      directory.mkdir(); 
      long date = System.currentTimeMillis(); 

      SimpleDateFormat sdf = new SimpleDateFormat("MMM MM dd, yyyy h:mm a"); 
      String dateString = sdf.format(date); 
      File file = new File(directory, dateString+"backupcontact.xls"); 
      FileOutputStream out = new FileOutputStream(file); 
      backup.write(out); 
      out.close(); 
      Toast.makeText(getApplicationContext(),"Successfully backup generated in backup",Toast.LENGTH_LONG).show(); 


     } catch (FileNotFoundException e) { 


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

      e.printStackTrace(); 
     } 
    } 

私のエラーログは、私が得たものという例外をFILENOTFOUNDことで以下に示します。

07-08 09:52:38.250 15615-15615/com.example.web03.bulkmessenger E/dalvikvm: Could not find class 'java.awt.font.FontRenderContext', referenced from method org.apache.poi.hssf.usermodel.HSSFSheet.autoSizeColumn 

事前にお礼を申し上げます。

+0

あなたはProGuardの –

+0

@MaheshwarLigade buildTypesを有効にしていません{ リリース{ minifyEnabled } 偽 proguardFiles getDefaultProguardFile( 'ProGuardの-android.txt')、 'proguard-rules.pro'}あなたがヒットしている – Shellz

+0

Apache POIがFont-sizeを計算するためにjava.awtからのクラスを使用する問題ですが、これらのクラスはAndroidでは使用できません。完全なスタックトレースを投稿できるので、この呼び出しがどこで行われたかを確認できますか? – centic

答えて

0

そのファイルのディレクトリに関連するthats例外が発生しました!アドバイスのみんなに感謝は