服务端实现

第一步:查询所有的分区数据

第二步:使用POI将数据写到Excel文件中

第三步:使用输出流进行文件下载

package com.learn.bos.web.action;import java.io.IOException;
import java.util.List;import javax.annotation.Resource;
import javax.servlet.ServletOutputStream;import org.apache.commons.lang3.StringUtils;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.struts2.ServletActionContext;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Restrictions;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;import com.learn.bos.domain.Region;
import com.learn.bos.domain.Subarea;
import com.learn.bos.service.ISubareaService;
import com.learn.bos.utils.FileUtils;
import com.learn.bos.web.action.base.BaseAction;
@Controller
@Scope("prototype")
public class SubareaAction extends BaseAction<Subarea>{@Resourceprivate ISubareaService subareaService;/*** 添加分区*/public String add(){subareaService.save(model);return LIST;}/*** 分区数据导出功能* @throws IOException */public String exportXls() throws IOException{//第一步:查询所有的分区数据List<Subarea> list = subareaService.findAll();//第二步:使用POI将数据写到Excel文件中//在内存中创建一个Excel文件HSSFWorkbook workbook = new HSSFWorkbook();//创建一个标签页HSSFSheet sheet = workbook.createSheet("分区数据");//创建标题行HSSFRow headRow = sheet.createRow(0);headRow.createCell(0).setCellValue("分区编号");headRow.createCell(1).setCellValue("开始编号");headRow.createCell(2).setCellValue("结束编号");headRow.createCell(3).setCellValue("位置信息");headRow.createCell(4).setCellValue("省市区");for (Subarea subarea : list) {HSSFRow dataRow = sheet.createRow(sheet.getLastRowNum() + 1);dataRow.createCell(0).setCellValue(subarea.getId());dataRow.createCell(1).setCellValue(subarea.getStartnum());dataRow.createCell(2).setCellValue(subarea.getEndnum());dataRow.createCell(3).setCellValue(subarea.getPosition());dataRow.createCell(4).setCellValue(subarea.getRegion().getName());}//第三步:使用输出流进行文件下载(一个流、两个头)String filename = "分区数据.xls";String contentType = ServletActionContext.getServletContext().getMimeType(filename);ServletOutputStream out = ServletActionContext.getResponse().getOutputStream();ServletActionContext.getResponse().setContentType(contentType);//获取客户端浏览器类型String agent = ServletActionContext.getRequest().getHeader("User-Agent");filename = FileUtils.encodeDownloadFilename(filename, agent);ServletActionContext.getResponse().setHeader("content-disposition", "attachment;filename="+filename);workbook.write(out);return NONE;}}
package com.learn.bos.utils;import java.io.IOException;
import java.net.URLEncoder;import sun.misc.BASE64Encoder;public class FileUtils {/*** 下载文件时,针对不同浏览器,进行附件名的编码* * @param filename*            下载文件名* @param agent*            客户端浏览器* @return 编码后的下载附件名* @throws IOException*/public static String encodeDownloadFilename(String filename, String agent)throws IOException {if (agent.contains("Firefox")) { // 火狐浏览器filename = "=?UTF-8?B?"+ new BASE64Encoder().encode(filename.getBytes("utf-8"))+ "?=";filename = filename.replaceAll("\r\n", "");} else { // IE及其他浏览器filename = URLEncoder.encode(filename, "utf-8");filename = filename.replace("+"," ");}return filename;}
}

分区数据导出功能(服务端实现)相关推荐

  1. 分区数据导出功能(页面调整)

    分区数据导出功能 页面调整 为页面中导出按钮绑定事件

  2. 微信app支付功能-服务端的实现-python3版

    微信app支付功能-服务端的实现-python3版 一:需求说明 二:微信app支付处理流程 三:所需依赖 3.1 支付配置 四:接口开发 4.1 创建订单接口 4.2 微信异步回调接口 4.3 订单 ...

  3. 支付宝app支付功能-服务端的实现-python3版

    支付宝app支付功能-服务端的实现-python3版 一:需求说明 二:支付宝app支付处理流程 三:所需依赖 3.1 依赖库 3.2 支付配置 3.2.1 沙箱环境配置 3.2.2 正式环境配置 四 ...

  4. 关于Sqlserver中 BCP命令,实现数据导出功能。

    关于Sqlserver中 BCP命令,实现数据导出功能. exec master..xp_cmdshell 'bcp "select 账号 ,姓名, 账号 from datat.dbo.个人 ...

  5. springboot实现SSE服务端主动向客户端推送数据,java服务端向客户端推送数据,kotlin模拟客户端向服务端推送数据

    SSE服务端推送 服务器向浏览器推送信息,除了 WebSocket,还有一种方法:Server-Sent Events(以下简称 SSE).本文介绍它的用法. 在很多业务场景中,会涉及到服务端向客户端 ...

  6. websocket传输canvas图像数据给C++服务端opencv图像实现web在线实时图像处理

    为什么80%的码农都做不了架构师?>>>    前后端的耦合想了很久,上下课都在思考怎么做,然后终于憋出来了.这是之前搞的一个视觉计算的项目,boss叫对接到前端,于是就产生了这样一 ...

  7. Socket通信 客户端加密数据,传递数据密文到服务端,服务端解密密文 输出明文

    server // sdf_cpp_warpper.cpp : 此文件包含 "main" 函数.程序执行将在此处开始并结束. // server端#ifndef UNICODE # ...

  8. 网易云信消息抄送php,消息功能-服务端API文档-IM即时通讯-网易云信开发文档

    消息功能 发送普通消息 请求说明 POST https://api.netease.im/nimserver/msg/sendMsg.action HTTP/1.1 Content-Type:appl ...

  9. python java通过socket交互数据 等到python服务端停止程序才能在java客户端看到数据的问题

    发送的数据如果不以\n   \r\n结尾 客户端就会一直以为数据还在发送,就不打印,  以为是"数据数据数据数据....."的形式 所以必须自己截断自己的数据形式 //我发送的数据 ...

最新文章

  1. Redis Python 客户端
  2. python小乌龟消除_悄悄告诉你,Python 里面有一只小乌龟
  3. poj 2728(最小比率生成树)
  4. Leetcode 347. 前K个高频元素 解题思路及C++实现
  5. JAVA 之反射(基础概念) 几个主要常用的重要的方法
  6. 54万奖金+百度地图海量业务数据集,智能交通CV赛题来了
  7. 数据库树状结构的关系表的删除方案
  8. Python学习中出现的一些问题
  9. 大数据Python学习大纲
  10. 用Feed43为随意站点定制RSS feed教程~
  11. 去掉重复的字符,比如 google,输出:gole(华为笔试题)
  12. 2、金字塔原理:思考的逻辑(6-7)-阅读笔记
  13. 清理windows10系统垃圾文件 bat批处理命令(进阶版)
  14. 2010年中国城市人均GDP排名
  15. SpringBoot -- 抱团学习社区系统项目实战
  16. 云服务器aip,云服务器API接口-云服务器的使用
  17. 剑指offer-面试题23:链表中环的入口节点 快慢指针+双指针
  18. SAP中标准价和移动平均价的学习笔记
  19. Oracle11G数据库重演测试
  20. 智能秤方案设计——蓝牙体脂秤PCBA方案

热门文章

  1. 网络摄像头1 mjpg-streamer使用方法
  2. java类初始化顺序
  3. C4C销售订单中业务伙伴的自动决定功能Partner determination procedure
  4. java B2B2C Springboot电子商城系统 (六) 分布式配置中心(Spring Cloud Config)
  5. Splay(区间翻转) 模板
  6. [PE格式分析] 3.IMAGE_NT_HEADER
  7. 创维37K05HR黑屏有声音故障维修
  8. 苹果开发(二) 申请应用
  9. 通过java.net.URLConnection发送HTTP请求的方法
  10. J-1 Java概述