1

我正在准备一个应用程序。在我的应用程序中包含 database(SQlite) 。我的数据库 我的数据库包含 14 列表和数据。我想在单击一个按钮时将该数据导出到 xls 文件中。是否可能。请指导我并提供一些教程。

4

3 回答 3

1

您可以使用 opencsv 库将您的 sqlite 数据库转换为 .csv 或 .xls 文件...在 google 上搜索该库和一些示例...

于 2012-11-30T06:05:52.407 回答
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();
于 2012-11-30T12:43:57.097 回答
-1

我的解决方案是在第一步将 sqlite 数据库转换为 csv,然后在第二步将 csv 文件转换为 xls,它对我来说很好,你需要 2 个库(opencsv-1.7.jar; poi-3.8-20120326.罐)

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

        }

    }


    }
于 2013-09-21T22:28:19.577 回答