导出数据到EXL表格中
项目使用的是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表格中的更多相关文章
- Java操作Jxl实现导出数据生成Excel表格数据文件
实现:前台用的框架是Easyui+Bootstrap结合使用,需要引入相应的Js.Css文件.页面:Jsp.拦截请求:Servlet.逻辑处理:ClassBean.数据库:SQLserver. 注意: ...
- Python导出数据到Excel表格-NotImplementedError: formatting_info=True not yet implemented
在使用Python写入数据到Excel表格中时出现报错信息记录:“NotImplementedError: formatting_info=True not yet implemented” 报错分析 ...
- 导出数据到Excel表格
开发工具与关键技术:Visual Studio 和 ASP.NET.MVC,作者:陈鸿鹏撰写时间:2019年5月25日123下面是我们来学习的导出数据到Excel表格的总结首先在视图层写导出数据的点击 ...
- 在java中实现数据导入excel表格中
1.首先前端代码如下: 一个导出按钮:<input id="export" class="btn btn-primary" type="butt ...
- jQuery Ajax遍历表格,填充数据,将表格中的数据一条一条拼成Jason数组
$.ajax({ url: baseURL + "InvoiceSale/OnQuotaInvoiceSale", //点击核销单号时,点击核销时,交互的页面 ...
- Scrapy基础(十一)————导出数据到json文件中
之前介绍过将数据写入mysql数据库中,但是对于那些没有数据库的,可以通过写入json文件中或者是写入到csv或者xls:这里只介绍写入json文件中,也为再练习一下自定义的pipeline 思路: ...
- jstl-将List中的数据展示到表格中
功能: 使用jstl将List中的数据动态展示到Jsp表格中,并实现隔行换色功能. 效果图: Jsp代码: <%@ page import="java.util.ArrayList&q ...
- php动态导出数据成Excel表格
一.封装 Excel 导出类 include/components/ExecExcel.php <?php /*** * @Excel 导入导出类. */ class ExecExcel { / ...
- spring boot 使用POI导出数据到Excel表格
在spring boot 的项目经常碰到将数据导出到Excel表格的需求,而POI技术则对于java操作Excel表格提供了API,POI中对于多种类型的文档都提供了操作的接口,但是其对于Excel表 ...
随机推荐
- node.js之Cookie
最近还是用node.js比较多,今天正好遇见一个问题,还是关于Cookie. node.js中如何实现cookie(以express框架为例): "use strict"; var ...
- Debian 8.9 搭建wordpress个人博客
想自己搭个博客玩玩,就搭建了此博客,过程可谓艰辛啊! 先在阿里云买了个 轻量应用服务器 1个月10块钱,好贵.... 用 windows sever 下载不了phpstudy,也不知道怎么回事... ...
- 如何备份和恢复你的TFS服务器(一)
备份和恢复一个TFS(Team Foundation Server)服务器常常令人心生畏惧.因为这会涉及到很多服务和步骤.TFS(Team Foundation Server)2010一发布,我就知道 ...
- LeetCode 961. N-Repeated Element in Size 2N Array
In a array A of size 2N, there are N+1 unique elements, and exactly one of these elements is repeate ...
- Python-正则表达式总结版
前言: 总是写不好正则表达式,时间长不用就有些忘记了,故此在总结一篇文章以便日后查阅. 一.常用的匹配规则总结表 模式 描述 \w 匹配字母数字及下划线 \W 匹配非字母数字及下划线 \s 匹配任意空 ...
- 1171: lfx捧杯稳啦!
escription Lfx在复习离散的时候突然想到了一个算法题,毕竟是lfx, 算法题如下: 他想知道这样的问题,先定义1~n中即是3的倍数,又是11的倍数的那些数的和sum, 他想知道sum有多少 ...
- 论学习IT的基本学习方法
学习还是要通过实践总结这种方式去不断进步,当然这个思想对于生活中的任何事都是相通的,就像我现在做的就是总结一下自己的学习方法,更多的是针对于IT代码这块知识的总结. 我想通过这种博客总结的方式来不断总 ...
- ElasticSearch Nosql
把 ElasticSearch 当成是 NoSQL 数据库 Elasticsearch 可以被当成一个 "NoSQL"-数据库来使用么? NoSQL 意味着在不同的环境下存在不同的 ...
- (Git 学习)Git SSH Key 创建步骤
首先感谢segmentfalut上的朋友对我帮助. 首先:查看你是否有../ssh 这个文件:怎么查看:找到你的git安装目录,在安装目录下查看是否./ssh,以我的为例: 在C盘/Users/11/ ...
- Golang中进行reslice时的注意事项
先看下面代码: package main import "fmt" func main() { slice := []int{0, 1, 2, 3, 4, 5, 6, 7, 8} ...