项目使用的是SSI框架,通过struts访问到action

xml文件:

<action name="fabAttributedaochu" class="com.FabAttributeAction" method="daochu" >
<result name="success" type="stream">
<!-- 指定下载文件的文件类型 -->
<param name="contentType">xls</param>
<!-- 指定下载文件的文件位置 -->
<param name="inputName">downExpFile</param>
<!-- 指定下载文件的文件名 -->
<param name="contentDisposition">attachment;filename="${contentDisposition}"</param>
<!-- 指定下载文件的缓冲大小 -->
<param name="bufferSize">4096</param>
</result>
  <result  name="fail">/fabric/freemarker/finance/report/reportOrder.ftl</result>
</action>

action文件:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFDataFormat;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook; private String contentDisposition;//一定要有的属性
public String getContentDisposition() { //get
  return contentDisposition;
}
public void setContentDisposition(String contentDisposition) { //set
  this.contentDisposition = contentDisposition;
} public String daochu() throws Exception{//前台按导出键跳转到这个方法,可以在这里设一些判断条件是否继续
    if(null==biCustomOrderQuantityVo){
            biCustomOrderQuantityVo =new BiCustomOrderQuantityVo();
        }else {
            //Integer total = this.getBuyOrderBo().selectBuyOrderCount(buyOrder);
            Integer total= this.getBiCustomOrderQuantityBo().selectbiCustCount(biCustomOrderQuantityVo);
            System.out.println("total:"+total);
            if(total-0==0){
                this.getRequest().setAttribute("message","数据量为0,请重新选择时间段");
                return "fail";
            }else if(total-65534>=0){
                this.getRequest().setAttribute("message", "数量大于65534,请缩小选择范围");
                return "fail";
            }else{
                return success;
            }
        }
return success;
}
public InputStream getDownExpFile() throws Exception{//根据xml的返回定义了一个get值,进入之个方法,
contentDisposition = java.net.URLEncoder.encode("buyOrder.xls","UTF-8");//指定一个文件的文件名
return fabAttributeBo.daochu();//调用bo层数据返回一个InputStream对象
}

逻辑业务层(bo):

     /**
* 导出
* @throws BOException
* @throws FileNotFoundException
* */
public FileInputStream daochu() throws BOException {
try {
List<FabAttributeVo> list =this.getFabAttributeDao().selectFabAttribute(null).getList();//导出数据的集合--数据
Integer rowNumber =list.size();
//创建新的ExCEL
HSSFWorkbook workbook = new HSSFWorkbook();
//创建工作表名
HSSFSheet sheet = workbook.createSheet("标签1");
//定义行
HSSFRow row =null;
//TITlelist为单元格明
List<String > titleList = this.obtainTitleList();//调用已定义好的列抬头
//用数组定义单元格
HSSFCell [] hssfCells = new HSSFCell[titleList.size()];
//设置单元格格式
HSSFCellStyle cellStyle = workbook.createCellStyle();
HSSFDataFormat format = workbook.createDataFormat();
cellStyle.setDataFormat(format.getFormat("@"));
//下面是创建首行
row =sheet.createRow(0);
for(int j=0;j<titleList.size();j++){
hssfCells[j] = row.createCell(j);
hssfCells[j].setCellStyle(cellStyle);
hssfCells[j].setCellValue(titleList.get(j));
}
//下面是创建数据行
for (int i = 1; rowNumber-i>=0; i++) {
row = sheet.createRow(i);
for (int j = 0; j < titleList.size(); j++) {
hssfCells[j]=row.createCell(j);
hssfCells[j].setCellStyle(cellStyle);
hssfCells[j].setCellType(HSSFCell.CELL_TYPE_STRING);
switch (j) {//每一个行需要插入拿一条
case 0:hssfCells[j].setCellValue(list.get(i-1).getAttr_id());break;
case 1:hssfCells[j].setCellValue(list.get(i-1).getType_name());break;
case 2:hssfCells[j].setCellValue(list.get(i-1).getAttr_name());break;
case 3:hssfCells[j].setCellValue(list.get(i-1).getAttr_input_type());break;
case 4:hssfCells[j].setCellValue(list.get(i-1).getAttr_values());break;
case 5:hssfCells[j].setCellValue(list.get(i-1).getSortOrder());break;
}
}
} File file =new File(this.getClass().getClassLoader().getResource("").getPath() + "fabric/tmp/buyOrder.xls");
if(file.exists())file.delete(); //新建一个输出文件流
FileOutputStream fout = new FileOutputStream(file);
//写相应的Excel工作薄
workbook.write(fout);
FileInputStream in= new FileInputStream(file);
fout.close();
return in;
}catch(Exception e){
e.printStackTrace();
} return null;
}

设定表格的首列行:

/**
* 用于列名的设置
*/
private List<String> obtainTitleList(){//自己定义好,你需要的eml表格中的列
List<String> titleList = new ArrayList<String>();
titleList.add("ID");
titleList.add("商品类型名称");
titleList.add("属性名称");
titleList.add("输入类型");
titleList.add("属性值");
titleList.add("排列次序");
return titleList;
}

这样就ok了!!

导出数据到EXL表格中的更多相关文章

  1. Java操作Jxl实现导出数据生成Excel表格数据文件

    实现:前台用的框架是Easyui+Bootstrap结合使用,需要引入相应的Js.Css文件.页面:Jsp.拦截请求:Servlet.逻辑处理:ClassBean.数据库:SQLserver. 注意: ...

  2. Python导出数据到Excel表格-NotImplementedError: formatting_info=True not yet implemented

    在使用Python写入数据到Excel表格中时出现报错信息记录:“NotImplementedError: formatting_info=True not yet implemented” 报错分析 ...

  3. 导出数据到Excel表格

    开发工具与关键技术:Visual Studio 和 ASP.NET.MVC,作者:陈鸿鹏撰写时间:2019年5月25日123下面是我们来学习的导出数据到Excel表格的总结首先在视图层写导出数据的点击 ...

  4. 在java中实现数据导入excel表格中

    1.首先前端代码如下: 一个导出按钮:<input id="export" class="btn btn-primary" type="butt ...

  5. jQuery Ajax遍历表格,填充数据,将表格中的数据一条一条拼成Jason数组

    $.ajax({ url: baseURL + "InvoiceSale/OnQuotaInvoiceSale", //点击核销单号时,点击核销时,交互的页面           ...

  6. Scrapy基础(十一)————导出数据到json文件中

    之前介绍过将数据写入mysql数据库中,但是对于那些没有数据库的,可以通过写入json文件中或者是写入到csv或者xls:这里只介绍写入json文件中,也为再练习一下自定义的pipeline 思路: ...

  7. jstl-将List中的数据展示到表格中

    功能: 使用jstl将List中的数据动态展示到Jsp表格中,并实现隔行换色功能. 效果图: Jsp代码: <%@ page import="java.util.ArrayList&q ...

  8. php动态导出数据成Excel表格

    一.封装 Excel 导出类 include/components/ExecExcel.php <?php /*** * @Excel 导入导出类. */ class ExecExcel { / ...

  9. spring boot 使用POI导出数据到Excel表格

    在spring boot 的项目经常碰到将数据导出到Excel表格的需求,而POI技术则对于java操作Excel表格提供了API,POI中对于多种类型的文档都提供了操作的接口,但是其对于Excel表 ...

随机推荐

  1. Memcache分布式锁 转发 https://www.cnblogs.com/li150dan/p/9529090.html

    在分布式缓存的应用中,会遇到多个客户端同时争用的问题.这个时候,需要用到分布式锁,得到锁的客户端才有操作权限 下面通过一个简单例子介绍: 这里引用的是Memcached.ClientLibrary.d ...

  2. ASCII,unicode, utf8 ,big5 ,gb2312,gbk,gb18030等几种常用编码区别(转载)

    原文出处:http://www.blogjava.net/xcp/archive/2009/10/29/coding2.html 最近老为编码问题而烦燥,下定决心一定要将其弄明白!本文主要总结网上一些 ...

  3. 在DreamView中支持一辆新车

    Support a new Vehicle in DreamView In order to support a new vehicle in DreamView, please follow the ...

  4. GFF高仿QQ客户端及服务器

    一.GFF简介 GFF是仿QQ界面,通信基于SAEA.MessageSocket.SAEA.Http.SAEA.MVC实现包含客户端和服务器的程序,源码完全公开,项目源码地址:https://gith ...

  5. 十二省联考 - JLOI2019 游记

    十二省联考 - JLOI 2019 游记 想了想,还是起一个副标题吧 一场失败的胜利 Day -inf 想了想,还是从头开始说吧. 其实考完NOIP之后,大概估算一下,吉林省队的数量还算是比较乐观的, ...

  6. TMS-规划图

    规划图 规划图 规划图 规划图 规划图 规划图 规划图 规划图 规划图 规划图 规划图 规划图 规划图 规划图 规划图 规划图 规划图 规划图 规划图 规划图 规划图 规划图 规划图 规划图 规划图 ...

  7. 百度智能手环方案开源(含源码,原理图,APP,通信协议等)

    分享一个百度智能手环开源项目的设计方案资料. 项目简介 百度云智能手环的开源方案是基于Apache2.0开源协议,开源内容包括硬件设计文档,原理图.ROM.通讯协议在内的全套方案,同时开放APP和云服 ...

  8. mybatis 代码生成器(IDEA, Maven)及配置详解(部分配置你应该不知道)

    目录 1 创建代码生成器 1.1 创建Maven项目 1.2 配置 generator.xml 1.3 配置 pom.xml 1.4 使用及测试 2 XML 配置详解 2.1 优先 2.2 官网没有的 ...

  9. Windows Community Toolkit 4.0 - DataGrid - Part01

    概述 在上面一篇 Windows Community Toolkit 4.0 - DataGrid - Overview 中,我们对 DataGrid 控件做了一个概览的介绍,今天开始我们会做进一步的 ...

  10. outlook署名最后一行没换行

    Outlook のプレーン テキスト形式での投稿で改行が削除されます 1.通过更改outlook默认设置可以解决 https://support.microsoft.com/ja-jp/help/28 ...