开发者社区> 问答> 正文

Android如何将SQLite数据库中的数据导出为csv格式的文件

搜到了下边这个方法,但是我没实现功能,请各位指教。最好能有代码
public void ExportToCSV(Cursor c, String fileName) {

int rowCount = 0;
int colCount = 0;
FileWriter fw;
BufferedWriter bfw;
File sdCardDir = Environment.getExternalStorageDirectory();
File saveFile = new File(sdCardDir, fileName);

try {

    rowCount = c.getCount();
    colCount = c.getColumnCount();
    fw = new FileWriter(saveFile);
    bfw = new BufferedWriter(fw);
    if (rowCount > 0) {
        c.moveToFirst();
        // 写入表头
        for (int i = 0; i < colCount; i++) {
            if (i != colCount - 1)
               bfw.write(c.getColumnName(i) + ',');
            else
               bfw.write(c.getColumnName(i));
        }
        // 写好表头后换行
        bfw.newLine();
        // 写入数据
        for (int i = 0; i < rowCount; i++) {
            c.moveToPosition(i);
            // Toast.makeText(mContext, "正在导出第"+(i+1)+"条",
            // Toast.LENGTH_SHORT).show();
            Log.v("导出数据", "正在导出第" + (i + 1) + "条");
            for (int j = 0; j < colCount; j++) {
                if (j != colCount - 1)
                    bfw.write(c.getString(j) + ',');
                else
                   bfw.write(c.getString(j));
            }
            // 写好每条记录后换行
            bfw.newLine();
        }
    }
    // 将缓存数据写入文件
    bfw.flush();
    // 释放缓存
    bfw.close();
    // Toast.makeText(mContext, "导出完毕!", Toast.LENGTH_SHORT).show();
    Log.d("导出数据", "导出完毕!");
    Toast.makeText(SecondActivity.this, "默认Toast样式",
             Toast.LENGTH_SHORT).show();
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} finally {
    c.close();
}

}

展开
收起
a123456678 2016-07-19 10:41:02 4255 0
1 条回答
写回答
取消 提交回答
  • csv格式就是回车分割记录行,逗号分隔字段,如果数据有逗号,需要加上引号。
    你说的这代码什么问题?基本思路差不多,你自己对照完善下。

    2019-07-17 19:58:18
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Android热修复技术原理详解与升级探索 立即下载
Android内存泄漏自动化链路分析组件Probe 立即下载
微信SQLite数据库损坏恢复实践 立即下载