Android将数据库数据导出成excel格式的文本(CSV)
来源:互联网 发布:普吉岛打车软件 编辑:程序博客网 时间:2024/05/22 10:34
在做Android软件的时候往往随着时间的推移数据会越来越多,这个时候想要查看数据的时候到数据库里面去查看的话就会很麻烦,所以有时候需要将数据库里面的数据导出来用office打开看会更加方便。导出excel的使用Apache组织提供的POI来导出.xls格式的文件也是可以,但是也有一种很简单的方式就可以导出使用excel打开。
逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。以逗号的形式将数据保存在.txt的文件下,然后改一下扩展名改成.csv再用excel打开。
利用这个CSV就可以将Android数据库中的数据导出来,用excel打开。下面就以一个例子来应用一下。
一、创建数据库
package com.ruijie.dao;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;public class CreateDatabase extends SQLiteOpenHelper {private static final int DATABASE_VERSION = 1;public CreateDatabase(Context context) {super(context, "userInfo.db", null, DATABASE_VERSION);}@Overridepublic void onCreate(SQLiteDatabase db) {String sql = "create table user_inf(id integer primary key,username varchar(25),password varchar(100),address varchar(255))";db.execSQL(sql);}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {}}二、操作数据库的dao方法
/** * 向数据库中插入数据 * @param user */public void insertUserInfo(User user) {db=helper.getWritableDatabase();String sql = "insert into user_inf values(null,?,?,?)";db.execSQL(sql, new String[]{user.getUsername(),user.getPassword(),user.getAddress()});}/** * 查询数据库中的用户 * @return */public List<User> exportToCSV() {db=helper.getWritableDatabase();String sql = "select * from user_inf ";Cursor cursor = db.rawQuery(sql, null);List<User> list = new ArrayList<User>();while(cursor.moveToNext()){User user = new User();user.setId(cursor.getInt(0));String username = cursor.getString(1);String password = cursor.getString(2);String address = cursor.getString(3);user.setUsername(username);user.setPassword(password);user.setAddress(address);list.add(user);}cursor.close();db.close();return list;}
三、向数据库中插入数据
<span style="white-space:pre"></span>String username = et_username.getText().toString().trim();String password = et_password.getText().toString().trim();String address = et_address.getText().toString().trim();User user = new User();user.setUsername(username);user.setPassword(password);user.setAddress(address);// 2 调用service方法将用户信息插入到数据中dao.insertUserInfo(user);et_username.setText("");et_password.setText("");et_address.setText("");Toast.makeText(getApplicationContext(), "用户信息插入成功!", Toast.LENGTH_SHORT).show();
四、将数据导出到SD卡
List<User> list = dao.exportToCSV();//System.out.println(list);StringBuffer buffer = new StringBuffer();buffer.append("用户id,姓名,密码,住址\r\n");for(User u:list){buffer.append(u.getId()+","+u.getUsername()+","+u.getPassword()+","+u.getAddress()+"\r\n");}try {//String data =new String(buffer.toString().getBytes("utf-8"), "ansi") ;String data = buffer.toString();String filename = "用户名单_"+new Date().toLocaleString()+".csv";String path = Environment.getExternalStorageDirectory()+"/Users";if (!new File(path).exists()) {new File(path).mkdirs();}File file = new File(path, filename); OutputStream out=new FileOutputStream(file); out.write(data.getBytes()); out.close();Toast.makeText(getApplicationContext(), "文件导出成功!请到SD卡中查看", 0).show();} catch (Exception e) {e.printStackTrace();}在这里导出的数据在Users文件夹下面,用excel打开的过程中出现了乱码,不知道为何,但是用notepad++打开数据又是正常的。。。不知道怎么回事。就开始在网上找方案了最终发现了问题:要在头部加BOM签名,因为BOM签名能否让excel认识这个文件时utf-8编码的。
找到问题所在就好吧了,加上:
<span style="white-space:pre"></span>byte b[] = {(byte)0xEF, (byte)0xBB, (byte)0xBF};out.write(b);
问题解决!最后附上源码下载:数据库数据导出excel
1 0
- Android将数据库数据导出成excel格式的文本(CSV)
- Asp.net导出Excel/Csv文本格式数据
- Asp.net导出Excel/Csv文本格式数据
- SQLServer将数据导出成CSV格式
- Flex/Air将DataGrid数据导出为CSV/Excel格式
- android 将SQLite数据库的表格导出为csv格式,并解析csv文件
- asp.net中导出到Excel的方法汇总及导出Excel/Csv格式数据最优方案(C#)
- asp.net中导出到Excel的方法汇总及导出Excel/Csv格式数据最优方案(C#)
- JavaScript将页面表格数据导出为Excel、CSV格式文件(结合JQuery EasyUI的grid )
- asp将数据库的数据转换成excel导出
- DateGridView导出到csv格式的Excel
- php将数据库数据导出成Excel
- .net从将数据库中的数据导出到Excel格式的xml
- 将csv格式数据导入MySql数据库
- 将csv格式数据导入MySql数据库
- c#实现将Excel文件导出为csv和UTF8格式的txt文件
- php 导出成csv或是excel格式的js文件(带序号)
- 将数据导出到excel与日期格式的设置
- 安卓系统权限如何工作
- Android Studio--Plugin is too old...
- C语音 指针
- 微信上如何发送GIF动图
- JMS教程(四)
- Android将数据库数据导出成excel格式的文本(CSV)
- intellij idea Error:java: Compilation failed: internal java compiler error
- MPL,MIL和MCL
- Linux 下安装配置 JDK7
- IOS-0812-图片浏览&Tom 猫(笔记)
- Linux内核工程导论——网络:Filter(LSF、BPF、eBPF)
- C语音 指针 指向一维数组元素
- 使用PIL时遇到的图片质量问题
- SIFT中LoG和DoG比较