Excel文件导入导出实战(3)-xml模板文件的上传下载
2016-08-11 11:01
851 查看
模板文件放在了E:\poi\web_excel_demo\web\template\student.xml;
代码:
我们要做的就是实现解析这个XML文件,并将其作为Excel模板,实现模板的上传下载功能。
我们先从数据导入开始,这个就叫importData-{method},我们完成其struts2.xml的配置:
我这次会非常详细的将过程记录下拉,总结一下。
首先我们从数据库开始,建立相关的表。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/23/92464e80b529be93ceb558418524aa6e)
我们建立两张新表,t_importdata,t_importdatadetail.
在model中建立实体类,属性关联对应表的字段并提供get/set方法:
importdata:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/23/3b73b04363df7c0d717a66acb63f430a)
importdatadetail:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/23/c52eb57c4baf677ba2467a8acd7280d0)
首先我们要实现上传一个模板Excel到数据库之后我们能在主页面看到相关的信息,我们现在表t_importdata里面随便插入一条测试数据。
然后开始写页面的jsp.
html代码:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/23/0234ef052c188bef4ce8557492e225f5)
js代码:
跟前一章节的功能结构相似,不过多说了,不熟悉的可以看看Jquery-easyUI的demo.我就是直接引用,然后改改参数的。
因为url:import-list;
所以我们只需要在importAction中添加一个list方法。为了实现分页,action中同样要声明4个属性并提供get/set方法
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/23/b5e915a76964608b2cc55599cecf290c)
list方法代码:
对应service中的代码:
运行之后看看效果:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/23/ab20b87e3912868cbc4a4842e1d7bce1)
大概就这样了,页面刷新时会显示出我们插入的文件信息以及处理状态 。
相信大家看到了页面左上角的三个按钮,删除我就不说了,接着看看导入模块:
首先增加页面按钮toolbar
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/23/f8c4fae6673ae6fc991c62d888cba3c8)
对应dialog代码:
url:importdata-templates;
所以我们要在action中添加一个方法,叫templas,创建一个model,提供getset方法,包含两个属性templateId,templateName
运行,看看效果:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/23/bae11f2ea4e75529e3c3807526d16a4d)
........
代码:
<?xml version="1.0" encoding="UTF-8"?> <excel id="student" code="student" name="学生信息导入"> <colgroup> <col index="A" width='17em'></col> <col index="B" width='17em'></col> <col index="C" width='17em'></col> <col index="D" width='17em'></col> <col index="E" width='17em'></col> <col index="F" width='17em'></col> </colgroup> <title> <tr height="16px"> <td rowspan="1" colspan="6" value="学生信息导入" /> </tr> </title> <thead> <tr height="16px"> <th value="编号" /> <th value="姓名" /> <th value="年龄" /> <th value="性别" /> <th value="出生日期" /> <th value=" 爱好" /> </tr> </thead> <tbody> <tr height="16px" firstrow="2" firstcol="0" repeat="5"> <td type="string" isnullable="false" maxlength="3" /><!--用户编号 --> <td type="string" isnullable="false" maxlength="50" /><!--姓名 --> <td type="numeric" format="##0" isnullable="false" /><!--年龄 --> <td type="enum" format="男,女" isnullable="true" /><!--性别 --> <td type="date" isnullable="false" maxlength="30" /><!--出生日期 --> <td type="enum" format="足球,篮球,乒乓球" isnullable="true" /><!--爱好 --> </tr> </tbody> </excel>
我们要做的就是实现解析这个XML文件,并将其作为Excel模板,实现模板的上传下载功能。
我们先从数据导入开始,这个就叫importData-{method},我们完成其struts2.xml的配置:
<!--数据导入--> <action name="importdata-*" class="com.huangteng.demo.action.importDataAction" method="{1}"> <result>/jsp/importList.jsp</result> </action>
我这次会非常详细的将过程记录下拉,总结一下。
首先我们从数据库开始,建立相关的表。
我们建立两张新表,t_importdata,t_importdatadetail.
在model中建立实体类,属性关联对应表的字段并提供get/set方法:
importdata:
importdatadetail:
首先我们要实现上传一个模板Excel到数据库之后我们能在主页面看到相关的信息,我们现在表t_importdata里面随便插入一条测试数据。
然后开始写页面的jsp.
html代码:
js代码:
/** * 初始化数据表格 */ $('#t_importdata').datagrid({ idField:'id' , title:'数据列表' , fit:true , height:450 , url:'importdata-list' , fitColumns:true , striped: true , //隔行变色特性 loadMsg: '数据正在加载,请耐心的等待...' , rownumbers:true , frozenColumns:[[ //冻结列特性 ,不要与fitColumns 特性一起使用 { field:'ck' , width:50 , checkbox: true } ]], columns:[[ { field:'importid' , title:'主表id' , width:100 , hidden:true },{ field:'importDataType' , title:'数据类型' , width:100 , sortable : true },{ field:'importDate' , title:'导入时间' , width:100 , sortable : true },{ field:'importStatus' , title:'导入标志' , width:100 , formatter:function(value , record , index){ if(value == 1){ return '导入成功' ; } else if( value == 0){ return '导入失败' ; } } },{ field:'handleDate' , title:'处理时间' , width:100 },{ field:'handleStatus' , title:'处理标志' , width:100 , formatter:function(value , record , index){ if(value == 1){ return '已处理' ; } else if( value == 0){ return '未处理' ; } } } ]] , pagination: true , pageSize: 10 , pageList:[5,10,15,20,50],
跟前一章节的功能结构相似,不过多说了,不熟悉的可以看看Jquery-easyUI的demo.我就是直接引用,然后改改参数的。
因为url:import-list;
所以我们只需要在importAction中添加一个list方法。为了实现分页,action中同样要声明4个属性并提供get/set方法
list方法代码:
//获取数据导入的数据列表 public void list(){ HttpServletResponse response = ServletActionContext.getResponse(); response.setContentType("text/html;charset=utf-8"); importDataList = importDataService.list(page,rows,sort,order); String json="{"+"\"total\":"+importDataList.size()+","+"\"rows\":"+ JSON.toJSONString(importDataList)+"}"; //System.out.println(json); try { response.getWriter().write(json); } catch (IOException e) { e.printStackTrace(); } }
对应service中的代码:
public class ImportDataService { //从数据库查询导入项目信息 public List<ImportData> list(int currentPage, int pageSize,String sort,String order){ Connection conn = DB.creatConn(); String sql = "select * from t_importdata where 1=1"; if(StringUtils.isNotBlank(sort)){ sql+="order by"+sort; } if(StringUtils.isNotBlank(order)){ sql+=" "+order; } sql+=" limit "+(currentPage-1)*pageSize+","+pageSize; //这里的limit前边一定记得加空格哦 PreparedStatement ps = DB.prepare(conn,sql); List<ImportData> importDatas = new ArrayList<ImportData>(); try { ResultSet rs = ps.executeQuery(); ImportData i = null; while(rs.next()){ i = new ImportData(); i.setImportid(rs.getString("importid")); i.setImportDataType(rs.getString("importdatatype")); i.setImportDate(rs.getString("importdate")); i.setImportStatus(rs.getString("importstatus")); i.setHandleDate(rs.getString("handledate")); i.setHandleStatus(rs.getString("handlestatus")); importDatas.add(i); } } catch (SQLException e) { e.printStackTrace(); }finally{ DB.close(conn); DB.close(ps); } return importDatas; }
运行之后看看效果:
大概就这样了,页面刷新时会显示出我们插入的文件信息以及处理状态 。
相信大家看到了页面左上角的三个按钮,删除我就不说了,接着看看导入模块:
首先增加页面按钮toolbar
对应dialog代码:
<div id="templateDialog" title="选择模板" modal=true draggable=false class="easyui-dialog" closed=true style="width: 350px;height:220px"> <form action=""> <table> <tr> <td>选择模板:</td> <td> <input id="templates" name="templates" class="easyui-combobox" panelHeight="auto" url="importdata-templates" valueField="templateId" textField="templateName" value="" /> <a id="okBtn" class="easyui-linkbutton">确定</a> </td> </tr> </table> </form> </div>
url:importdata-templates;
所以我们要在action中添加一个方法,叫templas,创建一个model,提供getset方法,包含两个属性templateId,templateName
//获取导入模板,并打印在导入模板选择的下拉选 public void templates(){ HttpServletResponse response = ServletActionContext.getResponse(); response.setContentType("text/html;charset=utf-8"); List<Template> list = new ArrayList<Template>(); Template t = new Template(); //模板文件在web/template/student.xml t.setTemplateId("student"); t.setTemplateName("student"); list.add(t); try { response.getWriter().write(JSON.toJSONString(list)); } catch (IOException e) { e.printStackTrace(); } }
运行,看看效果:
........
相关文章推荐
- Excel文件导入导出实战(4)--上传下载
- 文件下载、excel导出、导入
- Java web实时进度条整个系统共用(如java上传、下载进度条、导入、导出excel进度条等)
- SpringMVC+POI下载文件模板和导出Excel
- 上传excel文件实现批量导入数据及导出数据为excel文件
- 用NODEJS处理EXCEL文件导入导出,文件上传
- 导出 Excel 模板内部 XML 结构文件(相对标准,存为XML或XLS)
- 下载模板、Excel导入、导出
- C# Excel导入导出数据(二)——客户端上传文件到服务器
- 导出xml,excel文件,导入excel文件
- SpringMVC 实现POI读取Excle文件中数据导入数据库(上传)、导出数据库中数据到Excle文件中(下载)
- Excel文件的导入导出实战(2)--完成学生信息导出为Excel文件模块
- input file 文件上传下载 查询数据库数据并导出Excel
- ASP.NET之Excel下载模板、导入、导出操作
- Excel文件的导入导出实战(1)--基于Struts2的web项目结构搭建
- ASP.NET之Excel下载模板、导入、导出操作
- C# 文件上传下载(Excel导入,多线程下载)功能的实现代码
- SpringMVC 实现POI读取Excle文件中数据导入数据库(上传)、导出数据库中数据到Excle文件中(下载)
- 用NODEJS处理EXCEL文件导入导出,文件上传
- mvc4 强大的导出和不需要上传文件的批量导入EXCEL--SNF快速开发平台3.1