JAVA—咖啡館

          ——歡迎訪問rogerfan的博客,常來《JAVA——咖啡館》坐坐,喝杯濃香的咖啡,彼此探討一下JAVA技術,交流工作經(jīng)驗,分享JAVA帶來的快樂!本網(wǎng)站部分轉載文章,如果有版權問題請與我聯(lián)系。

          BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
            447 Posts :: 145 Stories :: 368 Comments :: 0 Trackbacks
          struts1.x的例子,struts2.x可以參考自己修改

          1.action的寫法

           

          import java.io.*;
          import java.sql.*;
          import java.util.ArrayList;

          import javax.servlet.http.HttpServletRequest;
          import javax.servlet.http.HttpServletResponse;

          import org.apache.poi.hssf.usermodel.*;
          import org.apache.struts.action.*;
          import org.apache.struts.upload.FormFile;
          import org.apache.commons.beanutils.BeanUtils;

          public class Action {
           
          /*
            * 把數(shù)據(jù)庫中的字段導入到Excel ,并生成Excel文檔
            *
          */

           
          public ActionForward getDownload(ActionMapping actionMapping,
             ActionForm actionForm, HttpServletRequest request,
             HttpServletResponse response) 
          throws Exception {
            Form fm 
          = (Form) actionForm;
            
          // Excel 文件存放在服務器的相對路徑下
            String outputFile = request.getRealPath("/tmp/Excel.xls");
            
            
          try {
             
          // 創(chuàng)建新的Excel 工作簿
             HSSFWorkbook workbook = new HSSFWorkbook();
             
          // 在Excel 工作簿中建一工作表
             HSSFSheet sheet = workbook.createSheet("Sheet1");
             
          // 設置單元格格式(文本)
             HSSFCellStyle cellStyle = workbook.createCellStyle();
             cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat(
          "@"));
             
             
          // 在索引0的位置創(chuàng)建行(第一行)
             HSSFRow row = sheet.createRow((short0);
             
             HSSFCell cell1 
          = row.createCell((short0);// 第一列
             HSSFCell cell2 = row.createCell((short1);
             HSSFCell cell3 
          = row.createCell((short2);
             
          // 定義單元格為字符串類型
             cell1.setCellType(HSSFCell.CELL_TYPE_STRING);
             cell2.setCellType(HSSFCell.CELL_TYPE_STRING);
             cell3.setCellType(HSSFCell.CELL_TYPE_STRING);
             
             cell1.setEncoding(HSSFCell.ENCODING_UTF_16);
             cell2.setEncoding(HSSFCell.ENCODING_UTF_16);
             cell3.setEncoding(HSSFCell.ENCODING_UTF_16);
             
          // 在單元格中輸入數(shù)據(jù)
             cell1.setCellValue("姓名");
             cell2.setCellValue(
          "性別");
             cell3.setCellValue(
          "年齡");
             
             Connection connection 
          = session.connection();
             
             String sql 
          = "Select t.name, t.sex, t.age from table t where t.sex = ?";
             
             
          try {
              PreparedStatement ps 
          = connection.prepareStatement(sql);
              ps.setString(
          1, fm.getSex());// 傳入查詢條件
              ResultSet rs = ps.executeQuery();// 查詢結果存入rs
              connection.commit();// 執(zhí)行SQL
              
              
          while (rs.next()) {
              
          //設置j行從第二行開始
               int j = 1;
               row 
          = sheet.createRow((short) j);
               
          //設置i列從第二列開始
               for (int i = 1; i <= 3; i++{
                HSSFCell cell 
          = row.createCell((short) (i-1));
                
          // 設置單元格格式
                cell.setCellStyle(cellStyle);
                cell.setCellType(HSSFCell.CELL_TYPE_STRING);
                cell.setEncoding(HSSFCell.ENCODING_UTF_16);
                cell.setCellValue(rs.getString(i));
               }

               
               j
          ++;
              }

              
              request.setAttribute(
          "message""文件生成成功!");
             }
           catch (SQLException e) {
              request.setAttribute(
          "message""創(chuàng)建文件失敗!");
              e.printStackTrace();
             }

             
          // 刪除路徑下同名的Excel 文件
             File path = new File(outputFile);
             path.delete();
             
             
          // 新建一輸出文件流
             FileOutputStream fOut = new FileOutputStream(outputFile);
             
          // 把相應的Excel 工作簿存盤
             workbook.write(fOut);
             
          // 操作結束,關閉文件
             fOut.flush();
             fOut.close();
              
          //該處如果Excel過大會影響效率,誰有好的想法可以提出來參考(不過從頁面下載完后就會清空)
             request.getSession().setAttribute("Download", outputFile);
             
            }
           catch (Exception ioexception) {
             request.setAttribute(
          "message""創(chuàng)建文件失敗!");
             
          return actionMapping.findForward("outJSP");
            }

            
            
          return actionMapping.findForward("outJSP");
           }

           
           
          /*
            * 從Excel文件中讀取數(shù)據(jù),并導入到數(shù)據(jù)庫中
            *
          */

            
          public ActionForward getUpload(ActionMapping actionMapping,
             ActionForm actionForm, HttpServletRequest request,
             HttpServletResponse response) 
          throws Exception {
            
          // 獲取excel 文件
            Form fm = (Form) actionForm;
            FormFile formfile 
          = fm.getUploadfile();
            InputStream inputstream 
          = formfile.getInputStream();
            fm.clear();
          // 清空
            Session session = HibernateSession.currentSession();
            ArrayList list 
          = new ArrayList();
            
          int input = 0//導入記數(shù)
            String name = null;
            String sex 
          = null;
            String age 
          = null;
            
            
          try {
             
          //通過得到的文件輸入流inputstream創(chuàng)建一個HSSFWordbook對象
                   HSSFWorkbook hssfworkbook = new HSSFWorkbook(inputstream);
                   HSSFSheet hssfsheet 
          = hssfworkbook.getSheetAt(0);//第一個工作表
             HSSFRow hssfrow = hssfsheet.getRow(0);//第一行
             
             
          //遍歷該表格中所有的工作表,i表示工作表的數(shù)量 getNumberOfSheets表示工作表的總數(shù)
                      for (int i = 0; i < hssfworkbook.getNumberOfSheets(); i++{
                       hssfsheet 
          = hssfworkbook.getSheetAt(i);
                       
                       
          //遍歷該行所有的行,j表示行數(shù) getPhysicalNumberOfRows行的總數(shù)
                          for (int j = 1; j < hssfsheet.getPhysicalNumberOfRows(); j++{
                           hssfrow 
          = hssfsheet.getRow(j);
                           
          //判斷是否還存在需要導入的數(shù)據(jù)
                              if (hssfrow == null{
                               System.out.println(
          "這里已沒有數(shù)據(jù),在第"+i+"列,第"+j+"");
                               
          break;
                              }

                              
          /**將EXCEL中的第 j 行,第一列的值插入到實例中*/
                              
          if (hssfrow.getCell((short0== null{
                               name 
          = "";
                              }
           else if (hssfrow.getCell((short0).getCellType() == 0{
                               name 
          = new Double(hssfrow.getCell((short0).getNumericCellValue()).toString();
                              }

                              
          //如果EXCEL表格中的數(shù)據(jù)類型為字符串型
                              else {
                               name 
          = hssfrow.getCell((short0).getStringCellValue().trim();
                              }

                              
          /**將EXCEL中的第 j 行,第二列的值插入到實例中*/
                              
          //姓名
                              if(hssfrow.getCell((short1== null){
                               sex 
          = "";
                              }
           else if(hssfrow.getCell((short1).getCellType() == 0{
                                  sex 
          = new Double(hssfrow.getCell((short1).getNumericCellValue()).toString();
                              }

                              
          //如果EXCEL表格中的數(shù)據(jù)類型為字符串型
                              else {
                                  sex 
          = hssfrow.getCell((short1).getStringCellValue().trim();
                              }

                              
          /**將EXCEL中的第 j 行,第三列的值插入到實例中*/
                              
          //姓名
                              if(hssfrow.getCell((short1== null){
                               age 
          = "";
                              }
           else if(hssfrow.getCell((short1).getCellType() == 0{
                                  age 
          = new Double(hssfrow.getCell((short1).getNumericCellValue()).toString();
                              }

                              
          //如果EXCEL表格中的數(shù)據(jù)類型為字符串型
                              else {
                                  age 
          = hssfrow.getCell((short1).getStringCellValue().trim();
                              }

                              
                              name 
          = name.trim();
                              sex 
          = sex.toUpperCase();
                              
                              
          if (name.equals("")) {
                               error.setName(name);
                               error.setMessage(
          "姓名不能為空");
                               
                               list.add(error);
                               
          continue;
                              }
           else {
                               fm.setName(name);
                               fm.setSex(sex);
                               fm.setAge(age);
                               
                               session.save(fm);
                              }

                              
          //導入成功加1
                              input++;
                          }

                      }

                      
                      session.saveObjs(list.toArray());
                  }
           catch () {
                   
                  }

           }

          }



          2.Form的寫法

          import org.apache.struts.action.ActionForm;
          import org.apache.struts.upload.FormFile;

          public class Form extends ActionForm {
           
          // 上傳的文件
           private FormFile _flddo;
           
           
          public void setUploadfile(FormFile formfile) {
            _flddo 
          = formfile;
           }

           
           
          public FormFile getUploadfile() {
            
          return _flddo;
           }

           
           
          public void clear() {
            _flddo 
          = null;
           }

          }





          3.上傳頁面Upload.jsp



          <%@ page contentType="text/html; charset=GBK" language="java"%>
          <%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%>

          <html>
           
          <html:form action="/Action.do?method=getUpload" method="POST" enctype="multipart/form-data">
            
          <html:file property="uploadfile" size="80%" />
            
          <input type="button" value="導 入" onclick="upload(this.form)" class="buttonGray">
           
          </html:form>
          </html>

          <script language="javascript">
          function upload(obj)
          {
           
          if(confirm("您現(xiàn)在選擇的是XXX,您確定要導入嗎?"))
           
          {
            
          var uploadfile = document.all.uploadfile.value;
            
          if((null == uploadfile) ||"" == uploadfile))
            
          {
             alert(
          "上傳文件沒有指定!");
             
          return false;
            }

               obj.action 
          = '<html:rewrite page="/Action.do?method=getUpload"/>';
               obj.submit();
           }

          }

          </script>


          4.下載頁面Download.jsp



          <%@ page contentType="text/html; charset=GBK"%>
          <%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
          <%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>

          <%
          //獲取下載文件
           
          String download = (String) request.getSession().getAttribute("Download");
          //清空文件
           request.getSession().removeAttribute(
          "Download");
          %>

          <html>
           下傳文件 
          <href="<%=download %>" name="下載">下載</a>
          </html>
          posted on 2008-08-27 13:41 rogerfan 閱讀(13885) 評論(19)  編輯  收藏 所屬分類: 【Java知識】

          Feedback

          # re: web中使用POI導入導出EXCEL文件的例子[未登錄] 2008-12-30 11:01 huahua
          感謝樓主!
          麻煩你把import org.apache.commons.beanutils.BeanUtils;
          import org.apache.poi.hssf.usermodel.*;
          這倆個jar包發(fā)給我好嗎?郵箱luzhihua866@yahoo.com.cn  回復  更多評論
            

          # re: web中使用POI導入導出EXCEL文件的例子[未登錄] 2008-12-30 11:05 huahua
          還有你這個EXCEL文件是什么樣的? 三個字段嗎?  回復  更多評論
            

          # re: web中使用POI導入導出EXCEL文件的例子 2009-03-04 11:19 yueyue
          麻煩樓主把完整的例子給我發(fā)到我的郵箱好嗎?
           yuechengkun@126.com  回復  更多評論
            

          # re: web中使用POI導入導出EXCEL文件的例子[未登錄] 2009-05-18 15:36 飛飛
          您好,麻煩樓主把完整的例子給我發(fā)到我的郵箱好嗎?
          hexinteng@yahoo.cn  回復  更多評論
            

          # re: web中使用POI導入導出EXCEL文件的例子 2010-05-21 19:24 譚李
          大哥、 把完整的例子發(fā)我下 tanlideai@126.com 謝謝了  回復  更多評論
            

          # re: web中使用POI導入導出EXCEL文件的例子 2011-08-02 11:37 cyt
          可以給itcyt123@163.com發(fā)一份例子嗎,謝謝了  回復  更多評論
            

          # re: web中使用POI導入導出EXCEL文件的例子 2011-08-10 17:48 fslong
          fslong0459@126.com 麻煩把完整項目傳一下,非常感謝,這個缺少一些類和配置文件  回復  更多評論
            

          # re: web中使用POI導入導出EXCEL文件的例子 2012-02-05 14:44 胡啟明
          能傳個完整的項目么 121637791@qq.com 非常感謝!  回復  更多評論
            

          # re: web中使用POI導入導出EXCEL文件的例子 2012-02-06 18:15 wd
          麻煩吧例子發(fā)到我的郵箱里!謝謝你了!
          yanshuailong8917@163.com  回復  更多評論
            

          # re: web中使用POI導入導出EXCEL文件的例子 2012-05-30 11:52 admin
          多謝樓主麻煩你把完整的例子發(fā)到957803796@qq.com好嗎?謝謝了!  回復  更多評論
            

          # re: web中使用POI導入導出EXCEL文件的例子 2012-07-03 17:13 huangshuang
          多謝樓主麻煩你把完整的例子發(fā)到273556298@qq.com好嗎?謝謝了  回復  更多評論
            

          # re: web中使用POI導入導出EXCEL文件的例子[未登錄] 2012-07-12 10:38 yang
          煩你把完整的例子發(fā)到752139325@qq.com好嗎?謝謝了  回復  更多評論
            

          # re: web中使用POI導入導出EXCEL文件的例子 2012-07-14 21:56 jsp
          多謝樓主麻煩你把完整的例子發(fā)到1053577162@qq.com好嗎?謝謝了  回復  更多評論
            

          # re: web中使用POI導入導出EXCEL文件的例子[未登錄] 2012-08-13 11:40 小白
          麻煩樓主也發(fā)給我一份完整的代碼470024581@qq.com@jsp
            回復  更多評論
            

          # re: web中使用POI導入導出EXCEL文件的例子[未登錄] 2012-08-13 11:41 小白
          470024581@qq.com就這么多,后面的jsp不是,  回復  更多評論
            

          # re: web中使用POI導入導出EXCEL文件的例子[未登錄] 2012-10-23 14:28 finly
          能夠發(fā)一份完整的項目給我嗎?155363287@qq.com  回復  更多評論
            

          # re: web中使用POI導入導出EXCEL文件的例子 2012-11-02 15:25 依然如此一個人
          272025694@qq.com 可以發(fā)一份完整的項目給我嘛?、謝謝。  回復  更多評論
            

          # re: web中使用POI導入導出EXCEL文件的例子 2012-11-09 09:17 iorn
          iorn2002@163.com 可以發(fā)一份完整的項目嘛?謝謝  回復  更多評論
            

          # re: web中使用POI導入導出EXCEL文件的例子 2013-05-03 16:11 yzw
          313585862@qq.com 麻煩lz給我發(fā)一份吧 真心謝謝了   回復  更多評論
            

          主站蜘蛛池模板: 景德镇市| 华容县| 手游| 林州市| 毕节市| 株洲市| 深水埗区| 沐川县| 广宗县| 平昌县| 保亭| 博爱县| 太白县| 马边| 壶关县| 松溪县| 老河口市| 溆浦县| 勐海县| 炉霍县| 金昌市| 洛隆县| 琼海市| 开平市| 宁化县| 油尖旺区| 海晏县| 旺苍县| 呼和浩特市| 察哈| 青海省| 晋宁县| 额尔古纳市| 阜城县| 潜江市| 容城县| 襄樊市| 红原县| 新营市| 珲春市| 张家界市|