2012-11-30 4 views
1

하나의 응용 프로그램을 준비 중입니다. 응용 프로그램에 데이터베이스 (SQlite)가 있습니다. 내 데이터베이스 내 데이터베이스에는 14 개의 열과 테이블 및 데이터가 포함되어 있습니다. 하나의 버튼을 클릭하면 해당 데이터를 xls 파일로 내보내고 싶습니다. 가능합니다. 안내하고 튜토리얼을 제공하십시오.안드로이드에서 버튼을 클릭하면 데이터베이스가 xls 파일로 내보내시겠습니까?

+0

당신은 .csv로 또는 .xls 파일 ... 해당 라이브러리와 몇 가지 예에 대한 구글 검색이 .. –

+0

는 U를 순전히 감사하기 위해 SQLite 데이터베이스를 변환하는 라이브러리를 opencsv 사용할 수 있습니다 제안을 창피해라. 나는 잘 작동하는 opencsv를 사용한다. –

답변

1

당신은 당신이 당신의 XML에 쉘 현명한 데이터를 설정할 수 있습니다 .. .csv로 또는 .xls 파일 ... 해당 라이브러리와 몇 가지 예에 대한 검색 Google에 SQLite 데이터베이스를 변환

+0

이것은 대답이 아닌 친구 여야한다. – MAC

+0

그것은 도움이된다. 대답을 받아 들여야한다. – MAC

+0

@MAC 내 대답을 투표하십시오 ... 당신이 다른 사람들에게 도움이된다고 생각한다면 .. 고맙습니다. –

0

이런 식으로 라이브러리를 opencsv 사용할 수 있습니다 파일 ..

File dbFile=getDatabasePath("yourdatabase.sqlite"); 
    File exportDir = new File(Environment.getExternalStorageDirectory()+"/XLS", ""); 
    if (!exportDir.exists()) 
       { 
        Log.d("export", ""+exportDir); 

        exportDir.mkdirs(); 

       } 

       File file = new File(exportDir, "Your file.xls"); 
    db=dba.openDataBase(); 
        file.createNewFile(); 
    CSVWriter csvWrite8 = new CSVWriter(new FileWriter(file8)); 
    Cursor curCSV8=db.rawQuery("Select * from tablename",null); 
    if(curCSV.moveToFirst()) 
        { 
         curCSV.moveToFirst(); 

         Log.d("log is","No of Column is ---->>>"+curCSV.getColumnNames().length); 

         do 
         { 
          String arrStr[] ={curCSV.getString(0),curCSV.getString(1),curCSV.getString(2),curCSV.getString(3),curCSV.getString(4),curCSV.getString(5),curCSV.getString(6),curCSV.getString(7),curCSV.getString(8),curCSV.getString(9),curCSV.getString(10),curCSV.getString(11),curCSV.getString(12),curCSV.getString(13),curCSV.getString(14),curCSV.getString(15),curCSV.getString(16),curCSV.getString(17),curCSV.getString(18),curCSV.getString(19),curCSV.getString(20),curCSV.getString(21),curCSV.getString(22),curCSV.getString(23),curCSV.getString(25),curCSV.getString(26),curCSV.getString(27),curCSV.getString(28),curCSV.getString(29)}; 

          csvWrite.writeNext(arrStr); 


         }while(curCSV.moveToNext()); 
        } 
        csvWrite.close(); 
+0

@Chiru이 답변보기 ... 희망이 도움이 되길 바랍니다. –

+0

괜찮습니다. 파일은 오픈 오피스에서만 열립니다. 그러나 마이크로 소프트 엑셀은 열었지만 거친 형식입니다. –

+0

셀 너비를 조정해야합니다 ... –

-1

내 솔루션은 두 번째 단계에서 다음의 첫 번째 단계에서 CSV로 SQLite는 데이터베이스를 변환하는 것은 opencsv- (XLS에 CSV 파일을 변환하는 것입니다 그리고 당신은이 라이브러리가 필요합니다, 나를 위해 잘 작동 1.7.jar, poi-3.8-20120326.jar)

public class ExportDatabaseCSVTask extends AsyncTask<String, Void, Boolean> 

{ 

    private final ProgressDialog dialog = new ProgressDialog(DatabaseExampleActivity.this); 

    @Override 

    protected void onPreExecute() 

    { 

     this.dialog.setMessage("Exporting database..."); 

     this.dialog.show(); 

    } 



    protected Boolean doInBackground(final String... args) 

    { 


     File dbFile=getDatabasePath("database_name"); 
     //AABDatabaseManager dbhelper = new AABDatabaseManager(getApplicationContext()); 
     AABDatabaseManager dbhelper = new AABDatabaseManager(DatabaseExampleActivity.this) ; 
     System.out.println(dbFile); // displays the data base path in your logcat 


     File exportDir = new File(Environment.getExternalStorageDirectory(), "");   

     if (!exportDir.exists()) 

     { 
      exportDir.mkdirs(); 
     } 


     File file = new File(exportDir, "excerDB.csv"); 


     try 

     { 

      if (file.createNewFile()){ 
       System.out.println("File is created!"); 
       System.out.println("myfile.csv "+file.getAbsolutePath()); 
       }else{ 
       System.out.println("File already exists."); 
       } 

      CSVWriter csvWrite = new CSVWriter(new FileWriter(file)); 
      //SQLiteDatabase db = dbhelper.getWritableDatabase(); 

      Cursor curCSV=db.getdb().rawQuery("select * from " + db.TABLE_NAME,null); 

      csvWrite.writeNext(curCSV.getColumnNames()); 

      while(curCSV.moveToNext()) 

      { 

       String arrStr[] ={curCSV.getString(0),curCSV.getString(1),curCSV.getString(2)}; 

      /*curCSV.getString(3),curCSV.getString(4)};*/ 

       csvWrite.writeNext(arrStr); 


      } 

      csvWrite.close(); 
      curCSV.close(); 
      /*String data=""; 
      data=readSavedData(); 
      data= data.replace(",", ";"); 
      writeData(data);*/ 

      return true; 

     } 

     catch(SQLException sqlEx) 

     { 

      Log.e("MainActivity", sqlEx.getMessage(), sqlEx); 

      return false; 

     } 

     catch (IOException e) 

     { 

      Log.e("MainActivity", e.getMessage(), e); 

      return false; 

     } 

    } 

    protected void onPostExecute(final Boolean success) 

    { 

     if (this.dialog.isShowing()) 

     { 

      this.dialog.dismiss(); 

     } 

     if (success) 

     { 

      Toast.makeText(DatabaseExampleActivity.this, "Export succeed", Toast.LENGTH_SHORT).show(); 

     } 

     else 

     { 

      Toast.makeText(DatabaseExampleActivity.this, "Export failed", Toast.LENGTH_SHORT).show(); 

     } 
    } 
} 

내보내기 CSV XLS 부분에

public class CSVToExcelConverter extends AsyncTask<String, Void, Boolean> { 


    private final ProgressDialog dialog = new ProgressDialog(DatabaseExampleActivity.this); 

    @Override 
    protected void onPreExecute() 

    { 

     this.dialog.setMessage("Exporting to excel..."); 

     this.dialog.show(); 

    } 

    @Override 
    protected Boolean doInBackground(String... params) { 
     ArrayList arList=null; 
     ArrayList al=null; 

     //File dbFile= new File(getDatabasePath("database_name").toString()); 
     File dbFile=getDatabasePath("database_name"); 
     String yes= dbFile.getAbsolutePath(); 

     String inFilePath = Environment.getExternalStorageDirectory().toString()+"/excerDB.csv"; 
     outFilePath = Environment.getExternalStorageDirectory().toString()+"/test.xls"; 
     String thisLine; 
     int count=0; 

     try { 

     FileInputStream fis = new FileInputStream(inFilePath); 
     DataInputStream myInput = new DataInputStream(fis); 
     int i=0; 
     arList = new ArrayList(); 
     while ((thisLine = myInput.readLine()) != null) 
     { 
     al = new ArrayList(); 
     String strar[] = thisLine.split(","); 
     for(int j=0;j<strar.length;j++) 
     { 
     al.add(strar[j]); 
     } 
     arList.add(al); 
     System.out.println(); 
     i++; 
     }} catch (Exception e) { 
      System.out.println("shit"); 
     } 

     try 
     { 
     HSSFWorkbook hwb = new HSSFWorkbook(); 
     HSSFSheet sheet = hwb.createSheet("new sheet"); 
     for(int k=0;k<arList.size();k++) 
     { 
     ArrayList ardata = (ArrayList)arList.get(k); 
     HSSFRow row = sheet.createRow((short) 0+k); 
     for(int p=0;p<ardata.size();p++) 
     { 
     HSSFCell cell = row.createCell((short) p); 
     String data = ardata.get(p).toString(); 
     if(data.startsWith("=")){ 
     cell.setCellType(Cell.CELL_TYPE_STRING); 
     data=data.replaceAll("\"", ""); 
     data=data.replaceAll("=", ""); 
     cell.setCellValue(data); 
     }else if(data.startsWith("\"")){ 
     data=data.replaceAll("\"", ""); 
     cell.setCellType(Cell.CELL_TYPE_STRING); 
     cell.setCellValue(data); 
     }else{ 
     data=data.replaceAll("\"", ""); 
     cell.setCellType(Cell.CELL_TYPE_NUMERIC); 
     cell.setCellValue(data); 
     } 
     //*/ 
     // cell.setCellValue(ardata.get(p).toString()); 
     } 
     System.out.println(); 
     } 
     FileOutputStream fileOut = new FileOutputStream(outFilePath); 
     hwb.write(fileOut); 
     fileOut.close(); 
     System.out.println("Your excel file has been generated"); 
     } catch (Exception ex) { 
     ex.printStackTrace(); 
     } //main method ends 
     return true; 
    } 

    protected void onPostExecute(final Boolean success) 

    { 

     if (this.dialog.isShowing()) 

     { 

      this.dialog.dismiss(); 

     } 

     if (success) 

     { 

      Toast.makeText(DatabaseExampleActivity.this, "file is built!", Toast.LENGTH_LONG).show(); 

     } 

     else 

     { 

      Toast.makeText(DatabaseExampleActivity.this, "file fail to build", Toast.LENGTH_SHORT).show(); 

     } 

    } 


    } 
관련 문제