4

データベースからデータを返してSDカードにCSVとしてファイルに保存し、ファイルを添付してメールで送信しようとしていますが、これはすべて完璧に機能し、データはExcelで次のようになります。

列A..............列B

123123232........ジョン

964803400........スミス

657484738........マイク

私の問題は、Excelを開くと、データが次のように表示されることです

列A..............列B

123123232…………

964803400........

657484738........

ジョン

スミス

マイク

ここにコードNames.Javaがあります

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

これが私のDBadapterです

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;

}

あなたの助けに感謝します

4

1 に答える 1

3

基本的に 2 つの ArrayLists を作成しています。1 つ目は Cursor からの列 0 のみを含み、2 つ目は列 1 のみを含みます。次に、列 0 のすべての結果の後に "," が続き、その後に列 1 のすべての結果が続きます。

StringBuilder全体でa を試してください。例...

StringBuilder sb = new StringBuilder();
while (mcursor.moveToNext()) {
    sb.append(mcursor.getString(0) + "," + mcursor.getString(1) + "\n");
}
return sb.toString();
于 2013-01-30T17:33:37.177 に答える