Android OpenCSV
OpenCSV
https://sourceforge.net/projects/opencsv/
使用参考
http://stackoverflow.com/questions/16672074/import-csv-file-to-sqlite-in-android
导出
public class ExportDatabaseToCSV extends AsyncTask<Void, Boolean, Boolean> {
Context context;
ProgressDialog dialog;
public ExportDatabaseToCSV(Context context) {
this.context = context;
}
@Override
protected void onPreExecute() {
dialog = new ProgressDialog(context);
dialog.setTitle("导出CSV文件");
dialog.setMessage("请稍后...");
dialog.setCancelable(false);
dialog.setIcon(android.R.drawable.ic_dialog_info);
dialog.show();
}
@Override
protected Boolean doInBackground(Void... params) {
File exportDir = new File(Environment.getExternalStorageDirectory(), "");
if (!exportDir.exists()) {
exportDir.mkdirs();
}
Date date = new Date(System.currentTimeMillis());
String filename = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(date);
File file = new File(exportDir, filename + ".csv");
try {
file.createNewFile();
CSVWriter csvWrite = new CSVWriter(new FileWriter(file));
StringBuffer check = new StringBuffer();
check.append("SELECT * FROM NOTE");
DataBaseHelper db = DataBaseHelper.getInstance(GlobalField.getApplicationContext());
db.openDataBase();
Cursor curCSV = db.queryData(check.toString());
//key -> get the cursor and then using opencsv
csvWrite.writeNext(curCSV.getColumnNames());
while (curCSV.moveToNext()) {
//Which column you want to export you can add over here...
List<String> list = new ArrayList<>();
for (int i = 0, length = curCSV.getColumnCount(); i < length; i++) {
list.add(curCSV.getString(i));
}
String[] arrStr = list.toArray(new String[list.size()]);
csvWrite.writeNext(arrStr);
}
csvWrite.close();
curCSV.close();
return true;
} catch (Exception sqlEx) {
System.err.println(sqlEx.getMessage());
}
return false;
}
@Override
protected void onPostExecute(Boolean result) {
if (dialog.isShowing()) {
dialog.dismiss();
}
if (result) {
Toast.makeText(context, "SqLite Data has been Exported!", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(context, "SqLite Data has not Exported", Toast.LENGTH_LONG).show();
}
}
}
导入
public class ImportCVSToSQLiteDataBase extends AsyncTask<String, String, String> {
Activity activity;
Context context;
File file=null;
private ProgressDialog dialog;
public ImportCVSToSQLiteDataBase(Context context, Activity activity,File file) {
this.context=context;
this.activity=activity;
this.file=file;
}
@Override
protected void onPreExecute()
{
dialog=new ProgressDialog(context);
dialog.setTitle("Importing Data into SecureIt DataBase");
dialog.setMessage("Please wait...");
dialog.setCancelable(false);
dialog.setIcon(android.R.drawable.ic_dialog_info);
dialog.show();
}
@Override
protected String doInBackground(String... params) {
String data="";
Log.d(getClass().getName(), file.toString());
try{
CSVReader reader = new CSVReader(new FileReader(file));
String [] nextLine;
//here I am just displaying the CSV file contents, and you can store your file content into db from while loop...
while ((nextLine = reader.readNext()) != null) {
// nextLine[] is an array of values from the line
String accId=nextLine[0];
String acc_name=nextLine[1];
data=data+"AccId:"+accId +" Account_name:"+acc_name+"\n";//change to save to datebase instead of showing
}
return data;
} catch (Exception e) {
Log.e("Error", "Error for importing file");
}
return data="";
}
protected void onPostExecute(String data)
{
if (dialog.isShowing())
{
dialog.dismiss();
}
if (data.length()!=0)
{
Toast.makeText(context, "File is built Successfully!"+"\n"+data, Toast.LENGTH_LONG).show();
}else{
Toast.makeText(context, "File fail to build", Toast.LENGTH_SHORT).show();
}
}
}
问题
导出的CSV文件如果使用Excel直接打开,可能出现中文乱码
解决办法:
使用记事本打开CSV文件,“文件”->“另存为”,编码方式选择ANSI,保存完毕后,用EXCEL打开这个文件就不会出现乱码的情况。
Android OpenCSV的更多相关文章
- 【英文版本】Android开源项目分类汇总
Action Bars ActionBarSherlock Extended ActionBar FadingActionBar GlassActionBar v7 appcompat library ...
- android github
Action Bars ActionBarSherlock Extended ActionBar FadingActionBar GlassActionBar v7 appcompat library ...
- Android开发免费类库和工具集合
用于Android开发的免费类库和工具集合,按目录分类. Action Bars ActionBarSherlock Extended ActionBar FadingActionBar GlassA ...
- 【原】Android热更新开源项目Tinker源码解析系列之三:so热更新
本系列将从以下三个方面对Tinker进行源码解析: Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Android热更新开源项目Tinker源码解析系列之二:资源文件热更新 A ...
- 配置android sdk 环境
1:下载adnroid sdk安装包 官方下载地址无法打开,没有vpn,使用下面这个地址下载,地址:http://www.android-studio.org/
- Android SwipeRefreshLayout 下拉刷新——Hi_博客 Android App 开发笔记
以前写下拉刷新 感觉好费劲,要判断ListView是否滚到顶部,还要加载头布局,还要控制 头布局的状态,等等一大堆.感觉麻烦死了.今天学习了SwipeRefreshLayout 的用法,来分享一下,有 ...
- Android Studio配置 AndroidAnnotations——Hi_博客 Android App 开发笔记
以前用Eclicps 用习惯了现在 想学学 用Android Studio 两天的钻研终于 在我电脑上装了一个Android Studio 并完成了AndroidAnnotations 的配置. An ...
- Android请求网络共通类——Hi_博客 Android App 开发笔记
今天 ,来分享一下 ,一个博客App的开发过程,以前也没开发过这种类型App 的经验,求大神们轻点喷. 首先我们要创建一个Andriod 项目 因为要从网络请求数据所以我们先来一个请求网络的共通类. ...
- 【原】Android热更新开源项目Tinker源码解析系列之一:Dex热更新
[原]Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Tinker是微信的第一个开源项目,主要用于安卓应用bug的热修复和功能的迭代. Tinker github地址:http ...
随机推荐
- java二叉排序树
二叉排序树又称二叉查找树.它或者是一颗空树,或者是具有如下性质的二叉树: 1.如果左子树不空,那么左子树上的所有节点均小于它的根节点的值: 2.如果右子树不空,那么右子树上的所有节点均大于它的根节点的 ...
- python网络编程——网络IO模型
1 网络IO模型介绍 服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种: (1)同步阻塞IO(Blocking IO):即传统的IO模型. (2)同步非阻塞IO(Non-bl ...
- redis 笔记03 RDB 持久化、AOF持久化、事件、客户端
RDB 持久化 1. RDB文件用于保存和还原Redis服务器所有数据库中的所有键值对数据. 2. SAVE命令由服务器进程直接执行保存操作,所以该命令会阻塞服务器. 3. BGSAVE由子进程执行保 ...
- iOS应用内付费(IAP)开发步骤
1.苹果iTunes Connect内购产品信息录入. 1)创建app内购买项目(Create New),选择类型: 1.消耗型项目 对于消耗型 App 内购买项目,用户每次下载时都必须进行购买.一次 ...
- 【Python】常用内建模块(卒)
内容来自廖雪峰的官方网站 笔记性质 1.datetime 2.collections 3.base64 4.struct 5.hashlib 6.itertools 7.contextlib 8.XM ...
- CSS3鼠标悬停边框线条动画按钮
在线演示 本地下载
- C++中int转为char 以及int 转为string和string 转int和字符串的split
1.对于int 转为char 直接上代码: 正确做法: void toChar(int b) { char u; ]; _itoa( b, buffer, ); //正确解法一 u = buffer[ ...
- MYSQL提权的各种姿势
一.利用mof提权 前段时间Kingcope大牛发布了mysql远程提权0day,剑心牛对MOF利用进行了分析,如下: Windows 管理规范 (WMI) 提供了以下三种方法编译到 WMI 存储库的 ...
- 深入理解JVM 垃圾收集器(上)
HotSpot虚拟机中的垃圾收集器 GC评价标准 GC调优 响应时间 吞吐量 1.新生代收集器 Serial收集器 ParNew收集器 Parallel Scavenge收集器 2.老年代收集器 Se ...
- js 前台ajax验证马克一下
function check_form(){ var email=$("#email").val(); var code=$("#code").val(); v ...