我试图从数据库中返回数据,并将其保存在sdcard中的csv文件中,然后附加该文件并通过电子邮件发送给它,所有这些工作都很完美,数据应该像在excel中一样。
例子
A列……….B列
123123232……….约翰
964803400……….史密斯
657484738……….迈克
我的问题是当我打开excel时,数据显示如下
A列……….B列
123123232……….
964803400……….
657484738……….
约翰
史密斯
迈克
这里是代码名称。

dbUser.open();

                File root=null;
             try {
                    // check for SDcard
                    root = Environment.getExternalStorageDirectory();
                    Log.i(TAG,"path.." +root.getAbsolutePath());

                    //check sdcard permission
                    if (root.canWrite()){
                        File fileDir = new File(root.getAbsolutePath()+"/fun/");
                        fileDir.mkdirs();

                        Log.d("PATH",fileDir.toString());

                        File file= new File(fileDir, "itisfun.csv");
                        FileWriter filewriter = new FileWriter(file);
                        BufferedWriter out = new BufferedWriter(filewriter);
                        String[] div = dbUser.getVname_Mnumber(sharedUsername1,product).toString().split(",");

                        Log.d(sharedUsername1, product);

                        Log.d("VVVVVVVVVV", dbUser.getVname_Mnumber(sharedUsername1,product).toString());

                        for (int i =0; i<div.length;i++)
                        out.write( div[i] +"\n" );

                        out.close();
                    }
                } catch (IOException e) {
                    Log.e("ERROR:---", "Could not write file to SDCard" + e.getMessage());
                }

这是我的电脑适配器
public String getVname_Mnumber(String date , String Vname) throws SQLException {

    String[] whereArgs = new String[]{date,Vname};

    Cursor mcursor = db.rawQuery("SELECT MeterNumber,VendorName FROM " + SCAN_TABLE + " WHERE  Date = ? AND VendorName = ? ",whereArgs);

    ArrayList<String> results = new ArrayList<String>();
    ArrayList<String> results1 = new ArrayList<String>();
    while (mcursor.moveToNext()) {
        results.add(mcursor.getString(0));
        results1.add(mcursor.getString(1));
    }

    return results + ","+ results1;

}

谢谢你的帮助

最佳答案

您基本上创建了两个arraylist—第一个只包含游标中的列0,第二个只包含列1。然后返回第0列的所有结果,后跟“,”和第1列的所有结果。
试着用一个StringBuilder来完成整个过程。例子。。。

StringBuilder sb = new StringBuilder();
while (mcursor.moveToNext()) {
    sb.append(mcursor.getString(0) + "," + mcursor.getString(1) + "\n");
}
return sb.toString();

09-03 22:50
查看更多