1.导入

前端js和跳转页面

 <t:dgToolBar title="导入单一模板" icon="icon-put"    funname="Importonlyone"></t:dgToolBar>
function Importonlyone(title,url,gname) {
gridname=gname;
var ids = [];
var rows = $("#"+gname).datagrid('getSelections');
 if(rows.length==1){
openuploadwin('Excel导入', 'decMainController.do?upload&num=1&ids='+rows[0].id, "decMainList");
} }
<t:formvalid formid="formobj" layout="div" dialog="true" beforeSubmit="upload">
<fieldset class="step">
<div class="form"><t:upload name="fiels" buttonText="选择要导入的文件" uploader="${controller_name}.do?${empty method_name?'importExcel':method_name }" extend="*.xls;*.xlsx" id="file_upload" formData="documentTitle"></t:upload></div>
<div class="form" id="filediv" style="height: 50px"></div>
</fieldset>
</t:formvalid>

后台跳转方法及导入解析

     @RequestMapping(params = "upload")
public ModelAndView upload(HttpServletRequest req) {
  req.setAttribute("controller_name","decMainController");
req.setAttribute("method_name","importonlyone");
req.setAttribute("ids", req.getParameter("ids"));        return new ModelAndView("com/jeecg/decmain/pub_excel_upload");
}
           @SuppressWarnings("unchecked")
@RequestMapping(params = "importonlyone", method = RequestMethod.POST)
@ResponseBody
public AjaxJson importonlyone(HttpServletRequest request, HttpServletResponse response) throws Exception {
AjaxJson j = new AjaxJson();
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
List<MultipartFile> contactFile= new ArrayList<MultipartFile>();
Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
MultipartFile file = entity.getValue();// 获取上传文件对象
   contactFile.add(file);
  }
XSSFWorkbook wb;//2007以前的是HSSFWorkbook
// 页
XSSFSheet sheet;//成品表
// 行
XSSFRow row;//成品表行
// 打开文件
try {
wb = new XSSFWorkbook(contactFile.get(0).getInputStream());
} catch (IOException e) {
e.printStackTrace();
wb = new XSSFWorkbook();
}
sheet = wb.getSheetAt(0);
int rowNum = sheet.getLastRowNum();
DecMainPage decMainPage=new DecMainPage();
row=sheet.getRow(1);
String ieflag=getCellFormatValue(row.getCell(1));//进出口标识
          }

2.导出

前台js:

  <t:dgToolBar title="导出" icon="icon-putout"    funname="newbaoguan"></t:dgToolBar>
           function newbaoguan(title,url, id,width,height,isRestful) {
gridname=id;
var rowsData = $('#'+id).datagrid('getSelections');
if (!rowsData || rowsData.length==0) {
tip('请选择导出项目');
return;
}
if (rowsData.length>1) {
tip('请选择一条记录再导出');
return;
}
if (rowsData.length==1) {
JeecgExcelExport("decMainController.do?newbaoguan&ids="+rowsData[0].id,"decMainList");
} }

后台java代码

  @RequestMapping(params = "newbaoguan")
public void newbaoguan(HttpServletRequest request,HttpServletResponse response,ModelMap modelMap,OutputStream output) throws IOException {
          Workbook tempWorkBook = null;
String lujing=request.getSession().getServletContext().getRealPath("/");
String lujing1=lujing+"export\\template\\newbaoguancus20180918.xls";
  InputStream in = new FileInputStream(new File(lujing1));
   HSSFWorkbook work = new HSSFWorkbook(in);
   HSSFSheet sheetModel =work.getSheetAt(0);
   HSSFSheet newSheet = work.createSheet("Sheet"+(i+2));
copySheet(work, sheetModel, newSheet, sheetModel.getFirstRowNum(), sheetModel.getLastRowNum());
HSSFCellStyle setBorder = (HSSFCellStyle)work.createCellStyle();
setBorder.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框
setBorder.setBorderBottom(HSSFCellStyle.BORDER_THIN); //下边框
HSSFCellStyle setBorder1 = (HSSFCellStyle)work.createCellStyle();
setBorder1.setBorderBottom(HSSFCellStyle.BORDER_THIN); //下边框
HSSFCellStyle setBorder2 = (HSSFCellStyle)work.createCellStyle();
setBorder2.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框
HSSFRow row = newSheet.getRow(1);
HSSFCell cell = row.getCell(1);
cell.setCellValue(""); response.reset();
response.setCharacterEncoding("UTF-8");
response.setContentType("application/vnd.ms-excel"); //保证不乱码
try
{
Date date=new Date();
SimpleDateFormat format=new SimpleDateFormat("MMddHHmmss");
String time="im"+format.format(date)+".xls";
response.setHeader("Content-Disposition","attachment;" + " filename=" + new String(time.getBytes("utf-8"), "ISO-8859-1")); }
catch (UnsupportedEncodingException e1)
{
// TODO Auto-generated catch block
e1.printStackTrace();
}
try
{
ByteArrayOutputStream oss =new ByteArrayOutputStream();
OutputStream os = response.getOutputStream();
work.write(oss); byte temp[] = oss.toByteArray();
ByteArrayInputStream in1 = new ByteArrayInputStream(temp);
int n = 0;
while ((n = in1.read(temp)) >0) {
os.write(temp, 0, n);
}
os.flush();
os.close();
} catch(Exception e)
{
e.printStackTrace();
}
}

用jeecg做个项目第三讲(自定义导入导出)的更多相关文章

  1. winform做的excel与数据库的导入导出

    闲来无事,就来做一个常用的demo,也方便以后查阅 先看效果图 中间遇到的主要问题是获取当前连接下的所有的数据库以及数据库下所有的表 在网上查了查,找到如下的方法 首先是要先建立一个连接 _connM ...

  2. 用jeecg做个项目第二讲(Datagrid数据列表效果详解)

    1.列表界面 2.流程状态的效果 <t:dgCol title="流程状态" field="bpmStatus" queryMode="sing ...

  3. 团队项目利用Msbuild自定义Task实现增量发布

    最近一直在做自动部署工具,主要利用到了Msbuild的自定义Task,通过Task我们可以自定义编译.部署过程减少人工直接干预.Msbuild的详细用法,可以去园子里搜一下,有很多的基础教程,这里就不 ...

  4. VS Code项目中共享自定义的代码片段方案

    VS Code项目中共享自定义的代码片段方案 一.问题背景 项目中注释风格不统一,如何统一注释风格 一些第三方组件库名称太长,每次使用都需要找文档,然后复制粘贴 部分组件库有自己的Snippets插件 ...

  5. php大力力 [029节] 做PHP项目如何下载js文件:使用腾讯浏览器把网上案例页面存储到本地

    php大力力 [029节] 做PHP项目如何下载js文件:使用腾讯浏览器把网上案例页面存储到本地 yeah,搞定啦 php大力力 [029节] 做PHP项目如何下载js文件:使用腾讯浏览器把网上案例页 ...

  6. 迅雷创始人程浩:创业公司5招做好内部创新(组建小型敢死队:一共3个人,一个产品经理,两个研发;腾讯做不做这个项目是一个伪命题;让用户来验证,而不是相反 good)

    欢迎关注“创事记”的微信订阅号:sinachuangshiji 文/程浩 编者按:本文首发于微信公众号“浩哥说”(ID:haogetalks),作者程浩,迅雷创始人.内容为作者在混沌AI成长营上的演讲 ...

  7. oracle11g+ef+vs2013做的项目在部署的时候碰到的问题

    最近公司做一个项目,用到了ef和oracle11g,开发工具用的是vs2013,开发完成后,在本机上完美运行,但是,当到了要到服务器上部署的时候,就出了问题,服务器环境是server08R2,开发环境 ...

  8. 做web项目时对代码改动后浏览器端不生效的应对方法(持续更新)

    做web项目时,常常会遇到改动了代码,但浏览器端没有生效,原因是多种多样的,我会依据我遇到的情况逐步更新解决的方法 1.执行的时候採用debug模式,普通情况下使用项目部署button右边那个butt ...

  9. 做web项目时对代码修改后浏览器端不生效的应对方法(持续更新)

    做web项目时,经常会遇到修改了代码,但浏览器端没有生效,原因是多种多样的,我会根据我遇到的情况逐步更新解决办法 1.运行的时候采用debug模式,一般情况下使用项目部署按钮右边那个按钮下的tomca ...

随机推荐

  1. <转载>c++中new一个二维数组

    原文连接 在c++中定义一个二维数组时有多种方式,下面是几种定义方式的说明:其中dataType 表示数据类型,如int  byte  long... 1.dataType (*num)[n] = n ...

  2. linux配置全局环境变量-jdk

    1.vi /etc/profile 2.输入大写G,定位内容末尾. 3.在末尾输入 export JAVA_HOME=/home/order/soft/jdk PATH=$PATH:$HOME/.lo ...

  3. TCP IP协议和网络安全

    传输层的两个协议:     可靠传输 TCP 分段传输 建立对话(消耗系统资源) 丢失重传netstat -n     不可靠传输 UDP 一个数据包就能表达完整的意思或屏幕广播   应用层协议(默认 ...

  4. 图片转换成十六进制TXT文件

    最近学习了图片的转换,就学习了一下图片从二进制转换成十六进制,十六进制TXT文件转换成图片形式. using System; using System.Collections.Generic; usi ...

  5. 谷歌浏览器(Google Chrome)开发调试详细介绍

    很多Web前台开发者都喜欢这种浏览器自带的开发者工具,这对前台设计.代码调试很大帮助的. Chrome浏览器得益于其优秀的V8解释器,javascript执行速度和内存占有率表现非常优秀.对于html ...

  6. 编译安装PTLib和H.323 Plus Core

    下载PTLib和H.323 Plus Core,官方网站很容易下载:http://www.h323plus.org/source/. 我下载这两个库后存放到目录/home/ynq/h323plus下, ...

  7. 25、自动装配-@Profile根据环境注册bean

    25.自动装配-@Profile根据环境注册bean 指定组件在哪个环境的情况下才能被注册到容器中 加了环境标识的,只有这个环境被激活才能注册到组件中 默认是default环境 写在类上,整个配置类的 ...

  8. SIGAI机器学习第八集 数据降维1

    讲授数据降维原理,PCA的核心思想,计算投影矩阵,投影算法的完整流程,非线性降维技术,流行学习的概念,局部线性嵌入,拉普拉斯特征映射,局部保持投影,等距映射,实际应用 大纲: 数据降维问题PCA的思想 ...

  9. P4475 巧克力王国 k-d tree

    思路:\(k-d\ tree\) 提交:2次 错因:\(query\)时有一个\(mx\)误写成\(mn\)窝太菜了. 题解: 先把\(k-d\ tree\)建出来,然后查询时判一下整个矩形是否整体\ ...

  10. resize([[data],fn]) 当调整浏览器窗口的大小时,发生 resize 事件。

    resize([[data],fn]) 概述 当调整浏览器窗口的大小时,发生 resize 事件.   参数 fnFunctionV1.0 在每一个匹配元素的resize事件中绑定的处理函数.直线电机 ...