日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android将数据库数据导出成excel格式的文本(CSV)

發布時間:2024/10/8 Android 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android将数据库数据导出成excel格式的文本(CSV) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在做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


總結

以上是生活随笔為你收集整理的Android将数据库数据导出成excel格式的文本(CSV)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。