Excel文件导入导出实战(3)-xml模板文件的上传下载
来源:互联网 发布:怎么加csv文件到java中 编辑:程序博客网 时间:2024/06/08 15:23
模板文件放在了E:\poi\web_excel_demo\web\template\student.xml;
代码:
<?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=falseclass="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(); } }
运行,看看效果:
........
0 0
- Excel文件导入导出实战(3)-xml模板文件的上传下载
- Excel文件导入导出实战(4)--上传下载
- 导出xml,excel文件,导入excel文件
- Excel文件的导入导出实战(2)--完成学生信息导出为Excel文件模块
- excel文件的导入导出
- 导入导出Excel文件
- 导入导出Excel文件
- 导入导出excel文件
- 导入导出Excel文件
- excel文件 模板导出
- 导入导出xml文件
- SpringMVC文件的上传下载及数据库EXCEL导出
- Excel文件的导出与导入
- EXCEL文件的导入与导出
- WPF对Excel文件的导入导出
- Poi对Excel文件的导入导出
- C#导入导出EXCEL文件的类
- java实现Excel文件的导入导出
- 1908: 小火山的围棋梦想(dfs)
- Java程序模拟QQ空间登录 - 并模拟刷说说的赞(图文) 注意:腾讯修改了加密算法,已失效(2015-01-31)
- Fibonacci
- k-means k均值聚类 及二分k均值聚类
- 利用script标签的src属性来实现跨域请求(JSONP协议)
- Excel文件导入导出实战(3)-xml模板文件的上传下载
- SSH
- mysql 树形查询
- 算法竞赛入门经典--古老的密码
- mac上远程连接windows
- nested exception is java.lang.IllegalArgumentException
- 十二个开源UML工具
- HELLO WORLD---IoT
- UVA156 Ananagrams