2012-11-30 58 views
1

我在準備一個應用程序。在我的應用程序中包含數據庫(SQlite)。我的數據庫 我的數據庫包含14列表和data.I想要導出數據到xls文件,當點擊一個按鈕。這是可能的。請引導我並提供一些教程。在android中點擊按鈕時數據庫導出爲xls文件?

+0

可以使用opencsv庫來轉換您的SQLite數據庫爲.csv或.xls文件...該庫和一些例子搜索谷歌.. –

+0

感謝ü這麼多我有使用opencsv它工作正常 –

回答

1

可以使用opencsv庫來轉換您的SQLite數據庫爲.csv或.xls文件...該庫和一些例子搜索谷歌..

+0

這應該是評論不是答案哥們.. – MAC

+0

它它可以幫助你,你應該接受他的答案。 – MAC

+0

@MAC請投票我的答案...如果你認爲這是對別人有幫助..謝謝.. –

0

這種方式,你可以在你的XML設置shell明智數據文件..

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

它工作正常。文件打開只在open office中正確。但在微軟excel打開,但在粗略的格式。 –

+0

你必須調整單元的寬度... –

-1

我的解決方案是將SQLite數據庫轉換爲在第一步CSV然後在第二個步驟是CSV文件爲XLS轉換,它爲我工作得很好,你將需要2個庫(opencsv- 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(); 

     } 

    } 


    }