標籤:style blog class code java ext
匯入Excel:jsp中
1 <form action="user_importTradingMoney" enctype="multipart/form-data" method="post">2 <label>匯入資料3 <input type="file" name="tradingMoneyFile" value="選擇檔案">4 <input type="submit" value="提交資料">5 </label>6 </form>
action中:
action最前面肯定要有下面這幾句,而且要有其對應的set、get方法
?
| 1 2 3 |
private File tradingMoneyFile;// 實際上傳檔案 private String tradingMoneyFileContentType; // 檔案的內容類型 private String tradingMoneyFileFileName; // 上傳檔案名稱 |
這是為了通過struts2自動獲得上傳的檔案,當然struts.xml中肯定要有這幾句:
1 <constant name="struts.i18n.reload" value="true" />2 <constant name="struts.configuration.xml.reload" value="true" />3 <constant name="struts.devMode" value="true" />4 <constant name=" struts.action.extension" value="action,," />5 <constant name="struts.multipart.maxSize" value="102400000000000" />
檔案大小什麼的設定自己看著辦。。。。
然後action中的importTradingMoney方法如下:
1 //匯入交易金額的Excel表 2 public String importTradingMoney(){ 3 HttpServletRequest request = ServletActionContext.getRequest(); 4 Calendar cal = Calendar.getInstance(); 5 int month = cal.get(Calendar.MONTH); 6 int year = cal.get(Calendar.YEAR); 7 jxl.Workbook wb=null; 8 try { 9 //InputStream is=new FileInputStream(tradingMoneyFile);//讀取存放資料的excel表格在電腦中的路徑10 InputStream is=new FileInputStream(tradingMoneyFile);11 wb =Workbook.getWorkbook(is);//建立workbook對象,我的理解就是這個整個的excel12 Sheet s=wb.getSheet(0);//建立sheet,其實就是excel中的每一頁,其中的每一張表,他的下標是從0開始的//這裡也就是取得第一張表13 int rsRows=s.getRows();//得到所有的行14 int rsColumns=s.getColumns();//得到所有的列15 for(int i=1;i<rsRows;i++){16 String userName=s.getCell(0, i).getContents();//(列,行)17 int tradingMoney=Integer.parseInt(s.getCell(1, i).getContents().toString());18 TradingMoney tradingMoneyClass=new TradingMoney();19 tradingMoneyClass.setUserName(userName);20 tradingMoneyClass.setTradingMoney(tradingMoney);21 tradingMoneyClass.setYear(year);22 tradingMoneyClass.setMonth(month);23 userService.addTradingMoney(tradingMoneyClass);24 }25 } catch (FileNotFoundException e) {26 // TODO Auto-generated catch block27 e.printStackTrace();28 } catch (BiffException e) {29 // TODO Auto-generated catch block30 e.printStackTrace();31 } catch (IndexOutOfBoundsException e) {32 // TODO Auto-generated catch block33 e.printStackTrace();34 } catch (IOException e) {35 // TODO Auto-generated catch block36 e.printStackTrace();37 } catch (Exception e) {38 // TODO Auto-generated catch block39 e.printStackTrace();40 }41 List<User> userList = null;42 try {43 userList = userService.selectUser(null, null);44 } catch (Exception e) {45 // TODO Auto-generated catch block46 e.printStackTrace();47 }48 request.setAttribute("userList", userList);49 return "selectUser";50 }
至於excel的匯出,我只是簡單地把當前頁面複製到了excel中:
1 <%@page import="java.text.SimpleDateFormat"%> 2 <%3 SimpleDateFormat sf = new SimpleDateFormat("yyyyMMdd");4 String filename = new String(("傭金明細-"+sf.format(new Date())).getBytes("utf8"),"ISO-8859-1"); 5 response.setHeader("Content-disposition","attachment; filename="+filename+".xls"); 6 %>
因為我要複製a.jsp頁面的內容到excel中,而a.jsp中的內容又是便利list而出來,如果直接把上面這段代碼加入到a.jsp中,那麼a.jsp中的內容你就會看不到,這個頁面一開啟就會讓你下載,所以就沒有那種先預覽再下載的效果了。。。。所以就在a.jsp中加了一個按鈕
1 <input type="button" value="結果匯出為Excel" style="width:120px" class="button-action" onclick="toExcel(<s:property value=‘#request.owerUser.id‘ />,‘${request.owerUser.userAccount }‘)"/>
1 var userIdvar,userAccountvar;2 function toExcel(userIdvar,userAccountvar){3 //指令碼運行後,將在新表單newwindow中開啟,寬為100,高為400,距屏頂0象素,屏左0象素,無工具條,無菜單條,無捲軸,不可調整大小,無地址欄,無狀態欄。4 window.open(‘reportUser_selectDetailReportUser?notice=1&userId=‘+userIdvar+‘&userAccount=‘+userAccountvar,‘newwindow‘,‘height=600,width=1200,top=80,left=80,toolbar=no,menubar=no,scrollbars=yes, resizable=yes,location=no, status=no‘);5 };
就是重新發一遍請求到b.jsp中,其內容與a.jsp相同,所以這個b.jsp就不需要開啟了。。。一切ok!