导出数据到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表 ...
随机推荐
- JSON.stringify()和JSON.parse()的作用
(1)JSON.stringify() 从一个对象中解析出字符串 JSON.stringify({“a”:”1”,”b”:”2”}) 结果是:”{“a”:”1”,”b”:”2”}” (2)JSON.p ...
- 支持“xxxContext”上下文的模型已在数据库创建后发生更改。请考虑使用 Code First 迁移更新数据库
将项目的数据库连接用户及密码修改后(切换用户,用户名与原来不一样,用户下对象结构一致),报以下错误: 支持“XXXDBContext”上下文的模型已在数据库创建后发生更改.请考虑使用 Code Fir ...
- 1、FreeRTOS移植
1.FreeRTOS目录结构 FreeRTOS FreeRTOS简略目录如下: ├─FreeRTOS │ ├─Demo // 各种开发工具的完整Demo,开发者可以方便的以此搭建出自己的项目,甚至直接 ...
- IntelliJ IDEA 高效率配置
之前学习和开发的时候一直用Eclipse,现在转战IDEA,记录一下IDEA的个性化设置,有助于提高效率.(参考:http://www.cnblogs.com/huaxingtianxia/p/586 ...
- WebApi测试工具:SAEA.RESTED
写好一个Api接口不知道怎么测试?试试SAEA.RESTED吧——无需任何代码.不污染主项目.快速上手.不依赖IIS,可供多人共享使用!下面就跟着本文查看如何使用吧:1.下载安装:https://gi ...
- linux进程控制开发实例
fork.c #include <sys/types.h> #include <unistd.h> #include <stdio.h> #include < ...
- HTTP协议详细分析
1.HTTP概述 1.1.什么是HTTP? 它是Hyper Text Transfer Protocol的缩写.超文本传输协议. 它是客户浏览器和web服务器之间的一种一问一答的规则.问答机制/握手机 ...
- UITableView的编辑操作
继续上篇UITableView和UITableViewController, 打开BNRItemsViewController.m,在类扩展中添加如下属性: @property (nonatomic, ...
- 搭建SpringBoot+dubbo+zookeeper+maven框架(四)
今天我们完成框架的thymeleaf模板显示页面功能,页面的用户登陆,密码的AES加密解密,输错3次进行验证码验证功能,东西可能比较多,这个是我这两天在网上结合各种资源整合出来的,基本功能都已经实现, ...
- Java 小记 - 时间的处理与探究
前言 时间的处理与日期的格式转换几乎是所有应用的基础职能之一,几乎所有的语言都会为其提供基础类库.作为曾经 .NET 的重度使用者,赖其优雅的语法,特别是可扩展方法这个神级特性的存在,我几乎没有特意关 ...