博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
023医疗项目-模块二:药品目录的导入导出-从数据库中查出数据用XSSF导出excel并存放在虚拟目录最后下载(包括调试)...
阅读量:6479 次
发布时间:2019-06-23

本文共 8482 字,大约阅读时间需要 28 分钟。

我们要实现的效果:

 
 
进入到这个页面后,输入要查询的条件,查询出药品表的数据,然后按下导出按钮 ,就会在服务器的一个目录下生成一个药品表的excel表格。
 点击”导出”之后:
点击下载就能下载Excel表格,实现导出功能。
 
 
 
讲解如下:
 
还是分为三层:
1:Dao层
 
 
我们先看sql语句。
在PL/SQL写sql:
select  id, bm, mc, jx, gg, zhxs, scqymc, spmc,jyzt, zbjg, (select info from dictinfo where dictinfo.typecode='003'and dictinfo.dictcode=ypxx.jyzt )jyztmc//药品的使用状态  from ypxx

 

结果:

我们要查的药品的表格里面包含了药品的使用状态(使用,停用),所以不单单是对药品表的查询,也包含了别的表,所以。我们的po类是一个自定义的类:YpxxMaapaerCustom.java:这个类继承于Ypxx.java这个单表的po类。

package yycg.business.pojo.vo;import yycg.business.pojo.po.Ypxx;/** * * @ClassName: YpxxCustom* @Description: 从数据库中查出来的数据放在这里。也就是自定义的pojo类* @author A18ccms a18ccms_gmail_com* @date 2016年11月23日 上午12:00:19* */public class YpxxCustom extends Ypxx{        private String jyztmc;    public String getJyztmc() {        return jyztmc;    }    public void setJyztmc(String jyztmc) {        this.jyztmc = jyztmc;    }    }

 

 

 接下来我们写
 YpxxMapperCustom.xml:
and ypxx.bm = #{ypxxCustom.bm}
and ypxx.mc = #{ypxxCustom.mc}
and ypxx.jx like '%${ypxxCustom.jx}%'
and ypxx.lb = #{ypxxCustom.lb}
and ypxx.jyzt = #{ypxxCustom.jyzt}

接下来写Mapper接口:

package yycg.business.dao.mapper;import java.util.List;import org.apache.ibatis.annotations.Param;import yycg.business.pojo.po.Ypxx;import yycg.business.pojo.po.YpxxExample;import yycg.business.pojo.vo.YpxxCustom;import yycg.business.pojo.vo.YpxxQueryVo;/* * Dao层 */public interface YpxxMapperCustom {
/* * 查找药品的数据 */
public List
findYpxxList(YpxxQueryVo ypxxQueryVo); }

 

接下来写Service层:

我们直接看实现类:

import java.util.List;import org.springframework.beans.factory.annotation.Autowired;import yycg.business.dao.mapper.YpxxMapperCustom;import yycg.business.pojo.vo.YpxxCustom;import yycg.business.pojo.vo.YpxxQueryVo;import yycg.business.service.YpxxService;public class YpxxServiceImpl implements YpxxService {@Autowired    YpxxMapperCustom ypxxMapperCustom;    @Override    public List
findYpxxList(YpxxQueryVo ypxxQueryVo) { return ypxxMapperCustom.findYpxxList(ypxxQueryVo); }}

 

我们看Action层:

package yycg.business.action;import java.util.ArrayList;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;import yycg.base.pojo.po.Dictinfo;import yycg.base.process.context.Config;import yycg.base.process.result.ResultUtil;import yycg.base.process.result.SubmitResultInfo;import yycg.base.service.SystemConfigService;import yycg.business.pojo.vo.YpxxCustom;import yycg.business.pojo.vo.YpxxQueryVo;import yycg.business.service.YpxxService;import yycg.util.ExcelExportSXXSSF;import yycg.util.Ypxx;@Controller@RequestMapping("/ypml")public class YpxxAction {    @Autowired    YpxxService ypxxService;    @Autowired    private SystemConfigService systemConfigService;            //导出页面的展示        @RequestMapping("/exportYpxx")    public String exPortYpxx(Model model) throws Exception    {    /**     * 这些数据查出来后填充到查询页面上。     */        List
yplblist=systemConfigService.findDictinfoByType("001"); model.addAttribute("yplblist", yplblist); List
jyztlist=systemConfigService.findDictinfoByType("003"); model.addAttribute("jyztlist", jyztlist); return "/business/ypml/exportYpxx"; } //导出提交 @RequestMapping("/exportYpxxSubmit") public @ResponseBody SubmitResultInfo exPortYpxxsubmit(YpxxQueryVo ypxxQueryVo)throws Exception { //查询到数据 List
list=ypxxService.findYpxxList(ypxxQueryVo); /** 导出文件存放物理路径 * @param fileWebPath * 导出文件web下载路径 * @param filePrefix * 导出文件名的前缀 * @param flushRows * 存放在内存的数据量 * @param fieldNames * 导出文件列标题 * @param fieldCodes * 导出数据对象的字段名称 * @param flushRows*/ //导出文件存放的路径,并且是虚拟目录指向的路径 String filePath = "d:/upload/linshi/"; //导出文件的前缀 String filePrefix="ypxx"; //-1表示关闭自动刷新,手动控制写磁盘的时机,其它数据表示多少数据在内存保存,超过的则写入磁盘 int flushRows=100; //指导导出数据的title List
fieldNames=new ArrayList
(); fieldNames.add("流水号"); fieldNames.add("通用名"); fieldNames.add("剂型"); fieldNames.add("规格"); fieldNames.add("转换系数 "); fieldNames.add("生产企业"); fieldNames.add("商品名称"); fieldNames.add("中标价"); fieldNames.add("交易状态"); //告诉导出类数据list中对象的属性,让ExcelExportSXXSSF通过反射获取对象的值 List
fieldCodes=new ArrayList
(); fieldCodes.add("bm");//药品流水号 fieldCodes.add("mc");//通用名 fieldCodes.add("jx"); fieldCodes.add("gg"); fieldCodes.add("zhxs"); fieldCodes.add("scqymc"); fieldCodes.add("spmc"); fieldCodes.add("zbjg"); fieldCodes.add("jyztmc"); //注意:fieldCodes和fieldNames个数必须相同且属性和title顺序一一对应,这样title和内容才一一对应 //开始导出,执行一些workbook及sheet等对象的初始创建,以及表格建在哪里 //"/upload/"本来是服务器的磁盘目录,但是我们是一台机器做开发,所以见建立一个虚拟目录。 ExcelExportSXXSSF excelExportSXXSSF = ExcelExportSXXSSF.start(filePath, "/upload/", filePrefix, fieldNames, fieldCodes, flushRows); //准备导出的数据,将数据存入list,且list中对象的字段名称必须是刚才传入ExcelExportSXXSSF的名称 //执行导出,把数据导入到excel表 excelExportSXXSSF.writeDatasByObject(list); /* * new Object[]{list.size(),excelExportSXXSSF.exportFile()}参数:一共导出的数据数量,.exportFile()导出文件。 */ return ResultUtil.createSubmitResult(ResultUtil.createSuccess(Config.MESSAGE, 313, new Object[]{list.size(),excelExportSXXSSF.exportFile()})); } }

 

 

写页面调试:

修改menu.json:

{   "menus" : [{"icon" : "icon-sys","menuid" : "1","menuname" : "系统管理","url" : "","menus" : [                 {"icon" : "icon-log","menuid" : "1_1","menuname" : "用户管理","url" : "/yycgproject/user/queryuser.action"                 }]                },               {"icon" : "icon-sys","menuid" : "1","menuname" : "药品目录 ","url" : "","menus" : [                 {"icon" : "icon-log","menuid" : "1_1","menuname" : "药品目录导出","url" : "/yycgproject/ypml/exportYpxx.action"                 }]                }             ]}

就会出现:

然后点击“药品目录导出”进入到YpxxAction.java中的@RequestMapping("/exportYpxx")public String exPortYpxx(Model model) throws Exception然后

进入到exportYpxx.jsp页面:

 

 

exportYpxx.jsp这个页面:

<%@ page contentType="text/html; charset=UTF-8"%><%@ include file="/WEB-INF/jsp/base/tag.jsp"%> 药品目录导出
<%@ include file="/WEB-INF/jsp/base/common_css.jsp"%><%@ include file="/WEB-INF/jsp/base/common_js.jsp"%>

 

 点击导出进入到YpxxAction.java中的
 @RequestMapping("/exportYpxxSubmit")
    public @ResponseBody SubmitResultInfo exPortYpxxsubmit。
解释一下这个函数中的
//"/upload/"本来是服务器的磁盘目录,但是我们是一台机器做开发,所以见建立一个虚拟目录。 ExcelExportSXXSSF excelExportSXXSSF = ExcelExportSXXSSF.start(filePath, "/upload/", filePrefix, fieldNames, fieldCodes, flushRows);
 
就是说我们用eclipse建立一个虚拟的目录,生成的Excel表格就放在那里,在实现

点击“点击下载”之后,下载excel表格。

 
我们讲一下怎么建立虚拟目录:
双击两次:

进入到:

这样就可以了。

 

 

 

调试:成功。

这样,我们的导出功能就做好了。

 
 

转载地址:http://juwuo.baihongyu.com/

你可能感兴趣的文章
前端js如何生成一个对象,并转化为json字符串
查看>>
安全测试===Mysql 注入技巧学习 MySQL注入技巧(1)
查看>>
当下大部分互联网创业公司为什么都愿意采用增量模型来做开发?
查看>>
如果2个数组重复的值,找出重复的值,在其中一个数组中去除
查看>>
git学习之时光穿梭机
查看>>
set集合
查看>>
SVN服务器的搭建和使用
查看>>
mvc中枚举的使用和绑定枚举值到DropDownListFor
查看>>
多目标跟踪的评价指标
查看>>
python 生成器
查看>>
HTTPS(SSL)详解以及PHP调用方法
查看>>
突发小事件,USB接口问题
查看>>
适合wordpress中文网站的seo优化插件 DX-Seo
查看>>
Nginx负载均衡配置实例详解
查看>>
L1-009. N个数求和
查看>>
实参传递不当导致的运行时错误
查看>>
PHP生成静态html文件 的三种方法
查看>>
sqlserver 批量删除存储过程(转)
查看>>
微信小程序 setData 的坑(转)
查看>>
javascript 阻塞
查看>>