1. // js 触发导出 excel 方法 导出当前页的数据 含有条件查询的结果
  2. // js 框架使用的 是 easyui
  3. function doExport(){
  4.  
  5. var optins = $("#grid").datagrid("getPager").data("pagination").options;
  6. var page = optins.pageNumber;
  7. var rows = optins.pageSize;
  8. var cpname=$("#cpname_id").val();
  9. var adname=$("#adname_id").val();
  10. var start = $("#start_id").val();
  11. var end = $("#end_id").val();
  12. $("<form>").attr({
  13. "action":"${ctx}/rest/trafficbill/doexporttrafficaccount",
  14. "method":"POST"
  15. }).append("<input type='text' name='page' value='"+page+"'/>")
  16. .append("<input type='text' name='cpname' value='"+cpname+"'/>")
  17. .append("<input type='text' name='adname' value='"+adname+"'/>")
  18. .append("<input type='text' name='startTime' value='"+start+"'/>")
  19. .append("<input type='text' name='endTime' value='"+end+"'/>")
  20. .append("<input type='text' name='rows' value='"+rows+"'/>").submit();
  21. }
  22.  
  23. // poi 操作 excel 的 工具类
  24.  
  25. package com.manage.util;
  26.  
  27. import java.util.Date;
  28. import java.util.List;
  29. import java.util.Map;
  30.  
  31. import javax.servlet.http.HttpServletRequest;
  32. import javax.servlet.http.HttpServletResponse;
  33.  
  34. import org.apache.poi.hssf.usermodel.HSSFCell;
  35. import org.apache.poi.hssf.usermodel.HSSFCellStyle;
  36. import org.apache.poi.hssf.usermodel.HSSFFont;
  37. import org.apache.poi.hssf.usermodel.HSSFSheet;
  38. import org.apache.poi.hssf.usermodel.HSSFWorkbook;
  39. import org.springframework.web.servlet.view.document.AbstractExcelView;
  40.  
  41. import com.pojo.subaccount.PageData;
  42.  
  43. /**
  44. *
  45. * @author jemond
  46. *
  47. * 2015年6月26日上午9:42:48
  48. */
  49. public class ObjectExcelView extends AbstractExcelView{
  50.  
  51. @SuppressWarnings("deprecation")
  52. @Override
  53. protected void buildExcelDocument(Map<String, Object> model,
  54. HSSFWorkbook workbook, HttpServletRequest request,
  55. HttpServletResponse response) throws Exception {
  56.  
  57. Date date = new Date();
  58. String filename = Tools.date2Str(date, "yyyyMMddHHmmss");
  59. HSSFSheet sheet;
  60. HSSFCell cell;
  61. response.setContentType("application/octet-stream");
  62. response.setHeader("Content-Disposition", "attachment;filename="+filename+".xls");
  63. sheet = workbook.createSheet("sheet1");
  64.  
  65. @SuppressWarnings("unchecked")
  66. List<String> titles = (List<String>) model.get("titles");
  67. int len = titles.size();
  68. HSSFCellStyle headerStyle = workbook.createCellStyle(); //标题样式
  69. headerStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
  70. headerStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
  71. HSSFFont headerFont = workbook.createFont(); //标题字体
  72. headerFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
  73. headerFont.setFontHeightInPoints((short)11);
  74. headerStyle.setFont(headerFont);
  75. short width = 20,height=25*20;
  76. sheet.setDefaultColumnWidth(width);
  77. for(int i=0; i<len; i++){ //设置标题
  78. String title = titles.get(i);
  79. cell = getCell(sheet, 0, i);
  80. cell.setCellStyle(headerStyle);
  81. setText(cell,title);
  82. }
  83. sheet.getRow(0).setHeight(height);
  84.  
  85. HSSFCellStyle contentStyle = workbook.createCellStyle(); //内容样式
  86. contentStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
  87. @SuppressWarnings("unchecked")
  88. List<PageData> varList = (List<PageData>) model.get("varList");
  89. int varCount = varList.size();
  90. for(int i=0; i<varCount; i++){
  91. PageData vpd = varList.get(i);
  92. for(int j=0;j<len;j++){
  93. String varstr = vpd.getString("var"+(j+1)) != null ? vpd.getString("var"+(j+1)) : "";
  94. cell = getCell(sheet, i+1, j);
  95. cell.setCellStyle(contentStyle);
  96. setText(cell,varstr);
  97. }
  98.  
  99. }
  100.  
  101. }
  102.  
  103. }
  104.  
  105. // controller 导出excel
  106.  
  107. @RequestMapping("/doexporttrafficaccount")
  108. public ModelAndView doExportTrafficAccount(@RequestParam(value = "page", defaultValue = "1") Integer page,
  109. @RequestParam(value = "rows", defaultValue = "30") Integer rows,String cpname,String adname,String startTime,String endTime) throws Exception {
  110.  
  111. // 构造一个查询条件
  112. TvgameBillingTraffic tbt = new TvgameBillingTraffic();
  113.  
  114. if(StringUtils.isNotBlank(cpname)){
  115. tbt.setCpname(cpname);
  116. }
  117. if(StringUtils.isNotBlank(adname)){
  118. tbt.setAdname(adname);
  119. }
  120. if(StringUtils.isNotBlank(startTime)){
  121. tbt.setStartTime(DateFormatUtil.dateToStartTime(startTime));
  122. }
  123. if(StringUtils.isNotBlank(endTime)){
  124. tbt.setEndTime(DateFormatUtil.dateToEndTime(endTime));
  125.  
  126. }
  127. // 得到 当前页的所有数据
  128. EasyUIResult account = this.trafficAccountService.queryTrafficAccount(page, rows, tbt);
  129.  
  130. @SuppressWarnings({"unchecked"})
  131. List<TvgameBillingTraffic> userList = (List<TvgameBillingTraffic>)account.getRows();
  132.  
  133. // 封装 excel 参数
  134. try {
  135.  
  136. // 参数 MAP
  137. Map<String, Object> dataMap = new HashMap<String, Object>();
  138.  
  139. // 设置标题
  140. List<String> titles = new ArrayList<String>();
  141. titles.add("账务编号"); //
  142. titles.add("CP名称"); //
  143. titles.add("计费策略"); //
  144. titles.add("流量名称"); //
  145. titles.add("计价金额"); //
  146. titles.add("流量流水"); //
  147. titles.add("创建时间"); //
  148. titles.add("结算状态"); //
  149. dataMap.put("titles", titles);
  150.  
  151. // 存放内容的集合
  152. List<PageData> varList = new ArrayList<PageData>();
  153.  
  154. for (TvgameBillingTraffic p : userList) {
  155. PageData vpd = new PageData();
  156. vpd.put("var1", String.valueOf(p.getId())); //
  157. vpd.put("var2", p.getCpname()); //
  158. vpd.put("var3", p.getChargingname()); //
  159. vpd.put("var4", p.getAdname()); //
  160. vpd.put("var5", String.valueOf(p.getPrice())); //
  161. vpd.put("var6", p.getTraffic()); // 6
  162.  
  163. // 格式化时间 存在数据库是 毫秒 值
  164. long createTime = p.getCreateTime();
  165. String data = DateFormatUtils.getData(createTime);
  166. vpd.put("var7", data); // 7
  167.  
  168. // 格式化结算状态 存在数据 是 0 或1
  169. String settString = "" ;
  170. byte settlement = p.getSettlement();
  171. if(settlement == 0){
  172. settString = "未结算";
  173. }else if (settlement == 1) {
  174.  
  175. settString = "已经结算";
  176. }else{
  177. settString = "未知状态";
  178. }
  179. vpd.put("var8", settString); //
  180. varList.add(vpd);
  181. }
  182.  
  183. dataMap.put("varList", varList);
  184.  
  185. // 执行excel操作 是一个视图
  186. ObjectExcelView erv = new ObjectExcelView();
  187. ModelAndView mv = new ModelAndView(erv, dataMap);
  188. return mv;
  189. } catch (Exception e) {
  190. LOGGER.error("错误");
  191. return null;
  192. }
  193.  
  194. }
  195.  
  196. // 操作时间的 工具类
  197.  
  198. /**
  199. *
  200. * @author jemond
  201. *
  202. * 2015年6月20日上午9:42:48
  203. */
  204. package com.common.util;
  205.  
  206. import java.text.ParseException;
  207. import java.text.SimpleDateFormat;
  208. import java.util.Calendar;
  209. import java.util.Date;
  210.  
  211. public class DateFormatUtils {
  212.  
  213. public static int getSecond(){
  214. String secondStr = String.valueOf(System.currentTimeMillis());
  215. String second = secondStr.substring(0,secondStr.length()-3);
  216. return Integer.valueOf(second);
  217. }
  218.  
  219. public static String getData(long time){
  220. time = time * 1000 ;
  221. SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  222. String format = sdf.format(new Date(time));
  223. return format;
  224. }
  225.  
  226. public static String getDateShout(long time){
  227. time = time * 1000 ;
  228. SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");
  229. String format = sdf.format(new Date(time));
  230. return format;
  231. }
  232.  
  233. public static long getDateByLong(){
  234.  
  235. SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");
  236. long time=0;
  237. try {
  238.  
  239. Calendar c = Calendar.getInstance();
  240. c.add(Calendar.DATE, - 7);
  241. Date monday = c.getTime();
  242. String preMonday = sdf.format(monday);
  243.  
  244. time=sdf.parse(preMonday).getTime()/1000;
  245.  
  246. } catch (ParseException e) {
  247.  
  248. e.printStackTrace();
  249. }
  250. return time;
  251.  
  252. }
  253.  
  254. /*public static void main(String[] args) {
  255. Float p = 565654656565656645645645454564.2265665656f;
  256. System.out.println(getData(1435547609)+"=="+p);
  257.  
  258. }*/
  259. }
  260.  
  261. // spring mvc 的 部分 配置
  262. <!-- 配置视图解析器 -->
  263. <bean
  264. class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  265. <!-- 前缀 -->
  266. <property name="prefix" value="/WEB-INF/views/" />
  267. <!-- 后缀 -->
  268. <property name="suffix" value=".jsp" />
  269. <!-- 查找顺序 -->
  270. <!-- <property name="order" value="2"/> -->
  271. </bean>
  272.  
  273. <!-- 定义Excel视图对象 -->
  274. <!-- <bean name="utilView" class="com.manage.util.ObjectExcelView "/>
  275.  
  276. 定义,根据bean的名称查找视图
  277. <bean class="org.springframework.web.servlet.view.BeanNameViewResolver">
  278. 查找顺序
  279. <property name="order" value="1"/>
  280. </bean> -->

spring mvc 导出 excel的更多相关文章

  1. mvc导出excel 之 新

    前段时间做的mvc导出excel 老大说要进行优化,我原来导出是用npoi插件进行导出,格式是将数据放入到datatable中,然后进行导出. 说要优化的时候就想着将datatable数据导出格式改为 ...

  2. ASP.NET MVC导出excel

    ASP.NET MVC导出excel 要在ASP.NET MVC站点上做excel导出功能,但是要导出的excel文件比较大,有几十M,所以导出比较费时,为了不影响对界面的其它操作,我就采用异步的方式 ...

  3. Mvc 导出 Excel

    Mvc 导出 Excel 之前接触过Webform,winfrom 的导出Excel方法 ,优点:省事.缺点:服务器必须安装Office 这几天做项目 和 大牛学习了一下 新的方法,自己加以总结.希望 ...

  4. Spring Boot 导出Excel表格

    Spring Boot 导出Excel表格 添加支持 <!--添加导入/出表格依赖--> <dependency> <groupId>org.apache.poi& ...

  5. Spring MVC 实现Excel的导入导出功能(1:Excel的导入)

    简介 这篇文章主要记录自己学习上传和导出Excel时的一些心得,企业办公系统的开发中,经常会收到这样的需求:批量录入数据.数据报表使用 Excel 打开,或者职能部门同事要打印 Excel 文件,而他 ...

  6. spring mvc的excel报表文件下载时流的冲突解决

    在jsp或者在servlet中有时要用到 response.getOutputStream(),但是此时会在后台报这个错误java.lang.IllegalStateException: getOut ...

  7. MVC 导出Excel 的其中一方法(View导出excel)

    场景:mvc下导出excel 思路:使用View导出excel 步骤: 1.导出标签添加事件 $("#export_A").click(function(){ //省略代码.... ...

  8. ASP.NET MVC导出excel(数据量大,非常耗时的,异步导出)

    要在ASP.NET MVC站点上做excel导出功能,但是要导出的excel文件比较大,有几十M,所以导出比较费时,为了不影响对界面的其它操作,我就采用异步的方式,后台开辟一个线程将excel导出到指 ...

  9. MVC导出Excel,提供下载Excel

    类1: using System.Collections.Generic;using System.Data;using System.Web.Mvc;using System.IO;using Sy ...

随机推荐

  1. 【CentOS】安装jdk

    问题描述:       jdk安装与配置   (1)查看是否安装jdk --CentOS默认自带openjdk         先查看 rpm -qa | grep java         显示如下 ...

  2. 用npm安装express后express命令找不到

    Windows 平台加了 npm install -g express 也不行AppData\Roaming\npm 下面没有 express.bat 解决办法: sudo npm install - ...

  3. javascript版Ajax请求

    什么是Ajax请求,Ajax也就是“Asynchronous JavaScript and XML”(异步JavaScript和XML),无刷新数据读取.能减少流量的消耗,也提高了浏览的流畅性,给用户 ...

  4. hadoop开发环境-----eclipse

    1.eclipse下载 http://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/lunasr1 2.hadoo ...

  5. hadoop命令行命令

    1. bin/hadoop fs -ls / 查看hdfs根目录下的文件 2. bin/hadoop fs -ls /user 查看user下文件 /就是根目录的意思.

  6. APM 终端用户体验监控分析(上)

    一.前言 理解用户体验是从终端用户角度了解应用交付质量的关键,这是考量业务健康运转的潜在因素.捕获此类数据的方法各种各样,具体的实现途径由应用.基础设施架构以及管理者和管理过程决定. 二.终端用户监控 ...

  7. NODEjs常见错误检查

    一.没有添加对uncaughtException异常的捕捉处理,最起码也要在其中写个日志记录错误,然后可以调用 process.exit(1); 退出进程. 二.处理函数的回调函数检查,经常忘记在回调 ...

  8. ZOJ3762 The Bonus Salary!(最小费用最大流)

    题意:给你N个的任务一定要在每天的[Li,Ri]时段完成,然后你只有K天的时间,每个任务有个val,然后求K天里能够获得的最大bonus. 思路:拿到手第一直觉是最小费用最大流,然后不会建图,就跑去想 ...

  9. POJ 3320

    Jessica's Reading Problem Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6496   Accept ...

  10. 替代jquery

    如果不需要过多操作,不引用jquery 1.document.ready :$(function(){}) http://www.cnblogs.com/a546558309/p/3478344.ht ...