使用jxl.jar进行Excel操作将实例属性存入表中
发布日期:2022-02-26 00:17:49
浏览次数:7
分类:技术文章
本文共 3436 字,大约阅读时间需要 11 分钟。
功能:需要将一个实例存入一个指定的Excel表中。
要求:只需要调用一个方法,传入一个实例就可实现。
思路:存入要使用异步操作,要自定义一个Task,重写对应实体的构造方法,在doInBackground中将实例的各个属性值存入对应的Excel表中。
实现步骤:
1.准备好实体,写好实体的构造函数及get/set方法;
2.定义一个Task继承AsyncTask;
2.1定义一个内部类,用于接收实例的属性及在Excel表中的行列值;
2.2重写对应实例的构造函数;
2.3定义将实例属性与对应行列值生成ArrayList<CurCell>的方法;
2.4在doInBackground中执行方法将实例的各个属性值存入对应的Excel表中。
重点:存入对应的Excel表中的方法
1.判断指定路径文件是否存在,如果不存在则新建。
File file = new File("/mnt/sdcard/"+sheetName+".xls");if (!file.exists()) {// EXL文件不存在,新建 file.createNewFile();}
2.获取Workbook,创建sheet,sheetName为表头,0为表的位置。
WritableWorkbook mWorkbook = Workbook.createWorkbook(file); WritableSheet mSheet = mWorkbook.createSheet(sheetName, 0);
3.遍历生成的ArrayList<CurCell> 赋值给Label,Label指表格中的单元格。
for(CurCell mCurCell : mArrayList){ Label mLabel = new Label(mCurCell.col, mCurCell.row, mCurCell.content); mSheet.addCell(mLabel); }
4.Sheet获取完Label之后调用Workbook的方法写入表中。
mWorkbook.write();5.结束,释放资源。
mWorkbook.close();完整代码:
public class ExcelWriteTask extends AsyncTask其他:{ private Context mContext; private List list; private ArrayList mArrayList = new ArrayList (); private ProgressDialog pdialog; public ExcelWriteTask(Context mContext, List list) { super(); this.mContext = mContext; this.list = list; mArrayList = new ArrayList (); for (int i = 0; i < list.size(); i++) { Community community = list.get(i); for (int j = 0; j < 3; j++) { CurCell cell = new CurCell(); cell.row = i; cell.col = j; cell.content = community.getProperty(j); mArrayList.add(cell); } } } @Override protected void onPreExecute() { // TODO Auto-generated method stub super.onPreExecute(); pdialog = ProgressDialog.show(mContext, "正在写入Excel...", "正在请求...."); } @Override protected String doInBackground(String... params) { // TODO Auto-generated method stub WriteExcel(params[0]); return null; } @Override protected void onProgressUpdate(String... values) { // TODO Auto-generated method stub super.onProgressUpdate(values); pdialog.setMessage(values[0]); } @Override protected void onPostExecute(String result) { // TODO Auto-generated method stub super.onPostExecute(result); Toast.makeText(mContext, "写入Excel数据完成!请到SD卡根目录下查看", Toast.LENGTH_LONG).show(); pdialog.dismiss(); } private void WriteExcel(String sheetName){ try { File file = new File("/mnt/sdcard/" + sheetName + ".xls"); if (!file.exists()) { file.createNewFile(); } WritableWorkbook mWorkbook = Workbook.createWorkbook(file); WritableSheet mSheet = mWorkbook.createSheet(sheetName, 0); for(CurCell mCurCell : mArrayList){ Label mLabel = new Label(mCurCell.col, mCurCell.row, mCurCell.content); mSheet.addCell(mLabel); } mWorkbook.write(); mWorkbook.close(); } catch (RowsExceededException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (WriteException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } private class CurCell{ int row; int col; String content; } }
创建表格有时会有命名要求,要求加入日期(XXXXX2016年1月1日.exl),一天一张表格,便于查找及保存,可以考虑SimpleDateFormat。
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日"); Date now = new Date(); String d = dateFormat.format(now);获取系统日期后添加到表格名称XXXXX后面即可;
File file = new File("/mnt/sdcard/" + sheetName + d + ".xls");
如果需要将实例的属性名添加在表中第一行,要在创建Workbook时将sheet创建好再将属性名添加到第一行,添加属性值的时候从第二行开始添加。 效果图:
转载地址:https://blog.csdn.net/TnTlittlefish/article/details/52171705 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2024年04月16日 02时50分54秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Varnish purges 缓存清除
2019-04-27
Linux下redis安装部署
2019-04-27
水平切分与垂直切分
2019-04-27
MySQL引擎
2019-04-27
MySQL下的NoSQL解决方案HandlerSocket
2019-04-27
Apache服务器下使用 ab 命令进行压力测试
2019-04-27
查看Firefox中的缓存
2019-04-27
http header头设置反向代理不缓存
2019-04-27
配置MySQL主从复制
2019-04-27
CI框架如何删除地址栏的 index.php
2019-04-27
expires与etag控制页面缓存的优先级
2019-04-27
取消掉Transfer-Encoding:chunked
2019-04-27
HTTP协议中的Tranfer-Encoding:chunked编码解析
2019-04-27
JavaScript面向对象编程
2019-04-27
在Javascript中使用面向对象的编程
2019-04-27
PHP Webservice的发布与调用
2019-04-27
php反射类 ReflectionClass
2019-04-27
为 PHP 应用提速、提速、再提速
2019-04-27
Linux下gedit显示行号
2019-04-27
《Advanced PHP Programming》读书笔记
2019-04-27