jsp中匯入匯出excel,ssh架構

來源:互聯網
上載者:User

標籤: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!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.