国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android開發實現的導出數據庫到Excel表格功能【附源碼下載】

2019-10-22 18:14:14
字體:
來源:轉載
供稿:網友

本文實例講述了Android開發實現的導出數據庫Excel表格功能。分享給大家供大家參考,具體如下:

之前一直在電腦上用Excel表格記錄家庭帳單,不久前重裝系統不小心干掉了,傷心了好久,那可是我記了五年的帳單呀!這段時間用的是隨手記,好用但是不太符合我的習慣,所以我自己寫了一個小小的帳單記錄APP,App小到只有一個Activity。當然更多的需求我正在研發中,呵呵!現在已經完成了把每天記錄的數據保存到Sqilte數據庫中,然后可以導出到excel表格。代碼也是借助網上的一些資料寫成的,代碼也比較容易,只需要用到一個jxl.jar包,感謝網友的幫助。

貼上主要代碼,再附上文件包:

MainActivity.java:

package com.ldm.familybill;import java.io.File;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import android.annotation.SuppressLint;import android.app.Activity;import android.content.ContentValues;import android.database.Cursor;import android.os.Bundle;import android.os.Environment;import android.text.TextUtils;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;import com.ldm.db.DBHelper;import com.ldm.excel.ExcelUtils;@SuppressLint("SimpleDateFormat")public class MainActivity extends Activity implements OnClickListener {  private EditText mFoodEdt;  private EditText mArticlesEdt;  private EditText mTrafficEdt;  private EditText mTravelEdt;  private EditText mClothesEdt;  private EditText mDoctorEdt;  private EditText mRenQingEdt;  private EditText mBabyEdt;  private EditText mLiveEdt;  private EditText mOtherEdt;  private EditText mRemarkEdt;  private Button mSaveBtn;  private File file;  private String[]  private String[] saveData;  private DBHelper mDbHelper;  private ArrayList<ArrayList<String>>bill2List;  @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    findViewsById();    mDbHelper = new DBHelper(this);    mDbHelper.open();    bill2List=new ArrayList<ArrayList<String>>();  }  private void findViewsById() {    mFoodEdt = (EditText) findViewById(R.id.family_bill_food_edt);    mArticlesEdt = (EditText) findViewById(R.id.family_bill_articles_edt);    mTrafficEdt = (EditText) findViewById(R.id.family_bill_traffic_edt);    mTravelEdt = (EditText) findViewById(R.id.family_bill_travel_edt);    mClothesEdt = (EditText) findViewById(R.id.family_bill_clothes_edt);    mDoctorEdt = (EditText) findViewById(R.id.family_bill_doctor_edt);    mRenQingEdt = (EditText) findViewById(R.id.family_bill_laiwang_edt);    mBabyEdt = (EditText) findViewById(R.id.family_bill_baby_edt);    mLiveEdt = (EditText) findViewById(R.id.family_bill_live_edt);    mOtherEdt = (EditText) findViewById(R.id.family_bill_other_edt);    mRemarkEdt = (EditText) findViewById(R.id.family_bill_remark_edt);    mSaveBtn = (Button) findViewById(R.id.family_bill_save);    mSaveBtn.setOnClickListener(this);  }  @Override  public void onClick(View v) {    if (v.getId() == R.id.family_bill_save) {      saveData = new String[] { new SimpleDateFormat("yyyy-MM-dd").format(new Date()), mFoodEdt.getText().toString().trim(), mArticlesEdt.getText().toString().trim(), mTrafficEdt.getText().toString().trim(), mTravelEdt.getText().toString().trim(), mClothesEdt.getText().toString().trim(), mDoctorEdt.getText().toString().trim(), mRenQingEdt.getText().toString().trim(), mBabyEdt.getText().toString().trim(), mLiveEdt.getText().toString().trim(), mOtherEdt.getText().toString().trim(), mRemarkEdt.getText().toString().trim() };      if (canSave(saveData)) {        ContentValues values = new ContentValues();        values.put("time", new SimpleDateFormat("yyyy-MM-dd").format(new Date()));        values.put("food", mFoodEdt.getText().toString());        values.put("use", mArticlesEdt.getText().toString());        values.put("traffic", mTrafficEdt.getText().toString());        values.put("travel", mTravelEdt.getText().toString());        values.put("clothes", mClothesEdt.getText().toString());        values.put("doctor", mDoctorEdt.getText().toString());        values.put("laiwang", mRenQingEdt.getText().toString());        values.put("baby", mBabyEdt.getText().toString());        values.put("live", mLiveEdt.getText().toString());        values.put("other", mOtherEdt.getText().toString());        values.put("remark", mRemarkEdt.getText().toString());        long insert = mDbHelper.insert("family_bill", values);        if (insert > 0) {          initData();        }      }      else {        Toast.makeText(this, "請填寫任意一項內容", Toast.LENGTH_SHORT).show();      }    }  }  @SuppressLint("SimpleDateFormat")  public void initData() {    file = new File(getSDPath() + "/Family");    makeDir(file);    ExcelUtils.initExcel(file.toString() + "/bill.xls", title);    ExcelUtils.writeObjListToExcel(getBillData(), getSDPath() + "/Family/bill.xls", this);  }  private ArrayList<ArrayList<String>> getBillData() {    Cursor mCrusor = mDbHelper.exeSql("select * from family_bill");    while (mCrusor.moveToNext()) {      ArrayList<String> beanList=new ArrayList<String>();      beanList.add(mCrusor.getString(1));      beanList.add(mCrusor.getString(2));      beanList.add(mCrusor.getString(3));      beanList.add(mCrusor.getString(4));      beanList.add(mCrusor.getString(5));      beanList.add(mCrusor.getString(6));      beanList.add(mCrusor.getString(7));      beanList.add(mCrusor.getString(8));      beanList.add(mCrusor.getString(9));      beanList.add(mCrusor.getString(10));      beanList.add(mCrusor.getString(11));      beanList.add(mCrusor.getString(12));      bill2List.add(beanList);    }    mCrusor.close();    return bill2List;  }  public static void makeDir(File dir) {    if (!dir.getParentFile().exists()) {      makeDir(dir.getParentFile());    }    dir.mkdir();  }  public String getSDPath() {    File sdDir = null;    boolean sdCardExist = Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);    if (sdCardExist) {      sdDir = Environment.getExternalStorageDirectory();    }    String dir = sdDir.toString();    return dir;  }  private boolean canSave(String[] data) {    boolean isOk = false;    for (int i = 0; i < data.length; i++) {      if (i > 0 && i < data.length) {        if (!TextUtils.isEmpty(data[i])) {          isOk = true;        }      }    }    return isOk;  }}

CreateExcel.java:

package com.ldm.excel;import java.io.File;import jxl.Workbook;import jxl.write.Label;import jxl.write.WritableSheet;import jxl.write.WritableWorkbook;import android.os.Environment;public class CreateExcel {  // 準備設置excel工作表的標題  private WritableSheet sheet;  /**創建Excel工作薄*/  private WritableWorkbook wwb;  private String[]  public CreateExcel() {    excelCreate();  }  public void excelCreate() {    try {      /**輸出的excel文件的路徑*/      String filePath = Environment.getExternalStorageDirectory() + "/family_bill";      File file = new File(filePath, "bill.xls");      if (!file.exists()) {        file.createNewFile();      }      wwb = Workbook.createWorkbook(file);      /**添加第一個工作表并設置第一個Sheet的名字*/      sheet = wwb.createSheet("家庭帳務表", 0);    }    catch (Exception e) {      e.printStackTrace();    }  }  public void saveDataToExcel(int index, String[] content) throws Exception {    Label label;    for (int i = 0; i < title.length; i++) {      /**Label(x,y,z)其中x代表單元格的第x+1列,第y+1行, 單元格的內容是y       * 在Label對象的子對象中指明單元格的位置和內容       * */      label = new Label(i, 0, title[i]);      /**將定義好的單元格添加到工作表中*/      sheet.addCell(label);    }    /*     * 把數據填充到單元格中     * 需要使用jxl.write.Number     * 路徑必須使用其完整路徑,否則會出現錯誤     */    for (int i = 0; i < title.length; i++) {      Label labeli = new Label(i, index, content[i]);      sheet.addCell(labeli);    }    // 寫入數據    wwb.write();    // 關閉文件    wwb.close();  }}

DBHelper.java:

package com.ldm.db;import android.content.ContentValues;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteDatabase.CursorFactory;import android.database.sqlite.SQLiteOpenHelper;public class DBHelper extends SQLiteOpenHelper {  public static final String DB_NAME = "ldm_family"; // DB name  private Context mcontext;  private DBHelper mDbHelper;  private SQLiteDatabase db;  public DBHelper(Context context) {    super(context, DB_NAME, null, 11);    this.mcontext = context;  }  public DBHelper(Context context, String name, CursorFactory factory, int version) {    super(context, name, factory, version);  }  /**   * 用戶第一次使用軟件時調用的操作,用于獲取數據庫創建語句(SW),然后創建數據庫   */  @Override  public void onCreate(SQLiteDatabase db) {    String sql = "create table if not exists family_bill(id integer primary key,time text,food text,use text,traffic text,travel text,clothes text,doctor text,laiwang text,baby text,live text,other text,remark text)";    db.execSQL(sql);  }  @Override  public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {  }  /* 打開數據庫,如果已經打開就使用,否則創建 */  public DBHelper open() {    if (null == mDbHelper) {      mDbHelper = new DBHelper(mcontext);    }    db = mDbHelper.getWritableDatabase();    return this;  }  /* 關閉數據庫 */  public void close() {    db.close();    mDbHelper.close();  }  /**添加數據 */  public long insert(String tableName, ContentValues values) {    return db.insert(tableName, null, values);  }  /**查詢數據*/  public Cursor findList(String tableName, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit) {    return db.query(tableName, columns, selection, selectionArgs, groupBy, having, orderBy, limit);  }  public Cursor exeSql(String sql) {    return db.rawQuery(sql, null);  }}

ExcelUtils.java:

package com.ldm.excel;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.lang.reflect.Method;import java.util.ArrayList;import java.util.List;import jxl.Workbook;import jxl.WorkbookSettings;import jxl.write.Label;import jxl.write.WritableCell;import jxl.write.WritableCellFormat;import jxl.write.WritableFont;import jxl.write.WritableSheet;import jxl.write.WritableWorkbook;import jxl.write.WriteException;import android.content.Context;import android.widget.Toast;public class ExcelUtils {  public static WritableFont arial14font = null;  public static WritableCellFormat arial14format = null;  public static WritableFont arial10font = null;  public static WritableCellFormat arial10format = null;  public static WritableFont arial12font = null;  public static WritableCellFormat arial12format = null;  public final static String UTF8_ENCODING = "UTF-8";  public final static String GBK_ENCODING = "GBK";  public static void format() {    try {      arial14font = new WritableFont(WritableFont.ARIAL, 14, WritableFont.BOLD);      arial14font.setColour(jxl.format.Colour.LIGHT_BLUE);      arial14format = new WritableCellFormat(arial14font);      arial14format.setAlignment(jxl.format.Alignment.CENTRE);      arial14format.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THIN);      arial14format.setBackground(jxl.format.Colour.VERY_LIGHT_YELLOW);      arial10font = new WritableFont(WritableFont.ARIAL, 10, WritableFont.BOLD);      arial10format = new WritableCellFormat(arial10font);      arial10format.setAlignment(jxl.format.Alignment.CENTRE);      arial10format.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THIN);      arial10format.setBackground(jxl.format.Colour.LIGHT_BLUE);      arial12font = new WritableFont(WritableFont.ARIAL, 12);      arial12format = new WritableCellFormat(arial12font);      arial12format.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THIN);    }    catch (WriteException e) {      e.printStackTrace();    }  }  public static void initExcel(String fileName, String[] colName) {    format();    WritableWorkbook workbook = null;    try {      File file = new File(fileName);      if (!file.exists()) {        file.createNewFile();      }      workbook = Workbook.createWorkbook(file);      WritableSheet sheet = workbook.createSheet("家庭帳務表", 0);      sheet.addCell((WritableCell) new Label(0, 0, fileName, arial14format));      for (int col = 0; col < colName.length; col++) {        sheet.addCell(new Label(col, 0, colName[col], arial10format));      }      workbook.write();    }    catch (Exception e) {      e.printStackTrace();    }    finally {      if (workbook != null) {        try {          workbook.close();        }        catch (Exception e) {          // TODO Auto-generated catch block          e.printStackTrace();        }      }    }  }  @SuppressWarnings("unchecked")  public static <T> void writeObjListToExcel(List<T> objList, String fileName, Context c) {    if (objList != null && objList.size() > 0) {      WritableWorkbook writebook = null;      InputStream in = null;      try {        WorkbookSettings setEncode = new WorkbookSettings();        setEncode.setEncoding(UTF8_ENCODING);        in = new FileInputStream(new File(fileName));        Workbook workbook = Workbook.getWorkbook(in);        writebook = Workbook.createWorkbook(new File(fileName), workbook);        WritableSheet sheet = writebook.getSheet(0);        for (int j = 0; j < objList.size(); j++) {          ArrayList<String> list=(ArrayList<String>) objList.get(j);          for (int i = 0; i < list.size(); i++) {            sheet.addCell(new Label(i, j+1, list.get(i), arial12format));          }        }        writebook.write();        Toast.makeText(c, "保存成功", Toast.LENGTH_SHORT).show();      }      catch (Exception e) {        e.printStackTrace();      }      finally {        if (writebook != null) {          try {            writebook.close();          }          catch (Exception e) {            e.printStackTrace();          }        }        if (in != null) {          try {            in.close();          }          catch (IOException e) {            e.printStackTrace();          }        }      }    }  }  public static Object getValueByRef(Class cls, String fieldName) {    Object value = null;    fieldName = fieldName.replaceFirst(fieldName.substring(0, 1), fieldName.substring(0, 1).toUpperCase());    String getMethodName = "get" + fieldName;    try {      Method method = cls.getMethod(getMethodName);      value = method.invoke(cls);    }    catch (Exception e) {      e.printStackTrace();    }    return value;  }}

附:完整源碼點擊此處本站下載

希望本文所述對大家Android程序設計有所幫助。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 香河县| 鹤庆县| 东安县| 微博| 汝城县| 丹阳市| 蓝田县| 临高县| 临潭县| 涪陵区| 故城县| 天峻县| 福建省| 泾源县| 隆安县| 津市市| 炉霍县| 吉安市| 广德县| 临颍县| 浮山县| 浦北县| 巴青县| 浦江县| 平利县| 怀来县| 台东县| 宿州市| 微山县| 白玉县| 衡山县| 临邑县| 浏阳市| 宜章县| 淮阳县| 香格里拉县| 株洲县| 兴山县| 甘德县| 日喀则市| 偏关县|