【问题标题】:how to store data from sqlite to google excel sheet如何将数据从sqlite存储到google excel表
【发布时间】:2015-10-02 16:09:31
【问题描述】:

我是安卓新手。我在 sqlite 中创建了 3 列,并将用户输入存储在 sqlite

我希望当设备获得 Wifi(互联网)时,它会将所有数据相应地上传到 google excel 工作表,并在特定用户帐户上列出。

【问题讨论】:

    标签: android sqlite


    【解决方案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();
    
        }
    
    }
    
    
    }
    

    【讨论】:

    • 我想直接从应用上传到谷歌的excel表格可以吗
    • @Asmi 这个答案没有提供关于谷歌电子表格的任何信息。
    • 是的,这个答案没有提供任何信息,任何机构有任何其他解决方案请建议。
    【解决方案2】:

    我建议你学习google spreadsheets APIs

    【讨论】:

    • 这对我没有帮助你能有其他建议吗
    • 您将不得不学习 google 电子表格 API 及其 android 集成。首先参考thisthis 问题。
    • 我学习了,但直到现在我还没有得到任何解决方案。
    猜你喜欢
    • 2012-07-17
    • 1970-01-01
    • 2014-04-07
    • 1970-01-01
    • 2017-03-20
    • 1970-01-01
    • 2010-12-15
    • 2015-05-23
    • 1970-01-01
    相关资源
    最近更新 更多