spring mvc 导出 excel

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