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> -->