zoukankan      html  css  js  c++  java
  • Tomcat Excel中的数据导出到页面中显示

    效果:为了实现,在页面上点击excel导入按钮,选择excel文件后,把文件显示到页面上

    1、实体类

    1.1  分摊实体的数据信息

    package com.whir.muju;
    
    public class Fentan {
        private String xh;
        private String ftcbzx;
        private String gzno;
        private String xshtno;
        private String mjno;
        private String xmno;
        private String ftje;
        private String bz;
        public String getXh() {
            return xh;
        }
        public void setXh(String xh) {
            this.xh = xh;
        }
        public String getFtcbzx() {
            return ftcbzx;
        }
        public void setFtcbzx(String ftcbzx) {
            this.ftcbzx = ftcbzx;
        }
        public String getGzno() {
            return gzno;
        }
        public void setGzno(String gzno) {
            this.gzno = gzno;
        }
        public String getXshtno() {
            return xshtno;
        }
        public void setXshtno(String xshtno) {
            this.xshtno = xshtno;
        }
        
        public String getMjno() {
            return mjno;
        }
        public void setMjno(String mjno) {
            this.mjno = mjno;
        }
        public String getXmno() {
            return xmno;
        }
        public void setXmno(String xmno) {
            this.xmno = xmno;
        }
        public String getFtje() {
            return ftje;
        }
        public void setFtje(String ftje) {
            this.ftje = ftje;
        }
        public String getBz() {
            return bz;
        }
        public void setBz(String bz) {
            this.bz = bz;
        }
        @Override
        public String toString() {
            return "Fentan [xh=" + xh + ", ftcbzx=" + ftcbzx + ", gzno=" + gzno
                    + ", xshtno=" + xshtno + ", mjno=" + mjno + ", xmno=" + xmno
                    + ", ftje=" + ftje + ", bz=" + bz + "]";
        }
        
        
        
    
    }

    1.2 分摊的集合信息

    package com.whir.muju;
    
    import java.util.List;
    
    public class PageFentan {
    
    
        private int datanum;//总的数据条数
        
        private List<Fentan> data;
    
        public List<Fentan> getData() {
            return data;
        }
    
        public void setData(List<Fentan> data) {
            this.data = data;
        }
    
    
    
        public int getDatanum() {
            return datanum;
        }
    
        public void setDatanum(int datanum) {
            this.datanum = datanum;
        }
    
    }

    2.工具类

    package com.whir.muju;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.PrintWriter;
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.List;
    
    import javax.servlet.http.HttpServletResponse;
    
    import net.sf.json.JSONObject;
    
    import org.apache.commons.io.FileUtils;
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    import org.apache.poi.ss.usermodel.Cell;
    import org.apache.poi.ss.usermodel.Row;
    import org.apache.poi.ss.usermodel.Sheet;
    import org.apache.poi.ss.usermodel.Workbook;
    import org.apache.poi.xssf.usermodel.XSSFWorkbook;
    import org.apache.struts2.ServletActionContext;
    
    
    
    public class ExeclShow {
        private InputStream inputStream;
        //封装上传文件属性
        private File attachments;
        
        //封装上传文件的类型
        private String attachmentsContentType;
        
        //封装上传文件名称
        private String attachmentsFileName;
        
        
        //得到上传的路径
        public String getUploadPath(){
            StringBuffer resultJson= new StringBuffer("");
            String resultData="";
            ////在实际开发中,需要判断一下是否上传了文件,即upload是否为空,不为空,才进行上传的操作。
            if(attachments!=null){            
                    
                //1.输出上传的类型
                System.out.println("上传文件的名称用File取得:"+this.getAttachments().getName());
                System.out.println("直接用属性取得名称:"+this.getAttachmentsFileName());
                System.out.println("文件上传的类型:"+this.getAttachmentsContentType());
                //2.设置上传文件的放置位置,通常放在服务器下面的upload文件夹下.
                String path="D:/jboss/jboss-as/server/langchao/deploy/defaultroot.war/WEB-INF/mjfiles";
                //3.这是一个目录,如果这个目录不存在,需要创建这个目录(包括其父目录)
                File srcFile=new File(path);
                if(!srcFile.exists()){
                    srcFile.mkdirs();
                }
                //4.通常还需要对上传的文件名进行UUID的操作,使文件名不能重复。文件的返回路径是fileName.
                String fileName=getAnglePath(this.getAttachmentsFileName());
                System.out.println("fileName:"+fileName);
                
                //5.调用FileUtils类执行上传的操作.
                try {
                    //写复制方法
                    FileUtils.copyFile(attachments,new File(srcFile,fileName));
                    //将fileName进行相应的处理,去掉前面的一些无用的东西。 得到项目名
                    //String context=ServletActionContext.getRequest().getContextPath().substring(1);
                    resultJson.append(fileName.substring(1)).append("|");
                    fileName=path+fileName;
                    System.out.println("文件上传成功,fileName路径:"+fileName);
                    
                    System.out.println("======excelshow start======");
                    resultData=getDataFromExcel3(fileName);
                    System.out.println(resultData.toString());
                    System.out.println("======excelshow end======");
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            HttpServletResponse response=ServletActionContext.getResponse(); 
            response.setContentType("text/html;charset=utf-8");
            
            
            try {
                PrintWriter out= response.getWriter();
                out.println(resultData);
                out.flush();
                out.close();
            } catch (IOException e) {
                e.printStackTrace();
            }    
            
            return null;
    
        }
    /** * 将一个文件名设置成唯一的文件名 * @param fileName 普通的文件名 * @return 返回一个唯一的文件名 */ public String getAnglePath(String fileName) { //不采用UUID的形式,可以自定义当前的时间字符串来处理. SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMddHHmmss"); String angle=sdf.format(new java.util.Date()); return File.separator+angle+"_"+fileName; } /** * 读取出filePath中的所有数据信息 * @param filePath excel文件的绝对路径 * */ public static String getDataFromExcel3(String filePath) { List<Fentan> list = new ArrayList<Fentan>(); //判断是否为excel类型文件 if(!filePath.endsWith(".xls")&&!filePath.endsWith(".xlsx")) { System.out.println("文件不是excel类型"); } FileInputStream fis =null; Workbook wookbook = null; int flag = 0; try { //获取一个绝对地址的流 fis = new FileInputStream(filePath); } catch(Exception e) { e.printStackTrace(); } try { //2007版本的excel,用.xlsx结尾 wookbook = new XSSFWorkbook(fis);//得到工作簿 } catch (Exception ex) { //ex.printStackTrace(); try { fis = new FileInputStream(filePath); //2003版本的excel,用.xls结尾 wookbook = (Workbook) new HSSFWorkbook(fis);//得到工作簿 } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } //得到一个工作表 Sheet sheet = wookbook.getSheetAt(0); //获取sheet中第一行行号 int firstRowNum = sheet.getFirstRowNum(); //获取sheet中最后一行行号 int lastRowNum = sheet.getLastRowNum(); String str=""; try { //循环插入数据 for(int i = firstRowNum+2 ; i <= lastRowNum ; i++) { //获得第i行对象 Row row = sheet.getRow(i); Fentan ft=new Fentan(); Cell cell1=row.getCell(0); //序号 if(cell1!=null){ cell1.setCellType(Cell.CELL_TYPE_STRING); ft.setXh(cell1.getStringCellValue()); } Cell cell2=row.getCell(1); if(cell2!=null){ cell2.setCellType(Cell.CELL_TYPE_STRING); ft.setFtcbzx(cell2.getStringCellValue()); } Cell cell3=row.getCell(2); if(cell3!=null){ cell3.setCellType(Cell.CELL_TYPE_STRING); ft.setGzno(cell3.getStringCellValue()); } Cell cell4=row.getCell(3); if(cell4!=null){ cell4.setCellType(Cell.CELL_TYPE_STRING); ft.setXshtno(cell4.getStringCellValue()); } Cell cell5=row.getCell(4); if(cell5!=null){ cell5.setCellType(Cell.CELL_TYPE_STRING); ft.setMjno(cell5.getStringCellValue()); } Cell cell6=row.getCell(5); if(cell6!=null){ cell6.setCellType(Cell.CELL_TYPE_STRING); ft.setXmno(cell6.getStringCellValue()); } Cell cell7=row.getCell(6); if(cell7!=null){ cell7.setCellType(Cell.CELL_TYPE_STRING); ft.setFtje(cell7.getStringCellValue()); } Cell cell8=row.getCell(7); if(cell8!=null){ cell8.setCellType(Cell.CELL_TYPE_STRING); ft.setBz(cell8.getStringCellValue()); } list.add(ft); } if(list.size()>0){ PageFentan page=new PageFentan(); page.setData(list); page.setDatanum(list.size()); JSONObject jsonObj=JSONObject.fromObject(page); String jsonstr =jsonObj.toString(); System.out.println("excel文件解析出来的数据:"+jsonstr); return jsonstr; } }catch (ClassCastException e) { e.printStackTrace(); //System.out.println("数据不全是数字或全部是文字!");//由于都是设置的字符串,所以不会报错 } return ""; } public static void main(String[] args){ getDataFromExcel3("E://123.xlsx"); } public InputStream getInputStream() { return inputStream; } public void setInputStream(InputStream inputStream) { this.inputStream = inputStream; } public File getAttachments() { return attachments; } public void setAttachments(File attachments) { this.attachments = attachments; } public String getAttachmentsContentType() { return attachmentsContentType; } public void setAttachmentsContentType(String attachmentsContentType) { this.attachmentsContentType = attachmentsContentType; } public String getAttachmentsFileName() { return attachmentsFileName; } public void setAttachmentsFileName(String attachmentsFileName) { this.attachmentsFileName = attachmentsFileName; } }

    3.jsp页面代码(从上一个页面跳转到该页面时带了一些数据信息)

    <%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    <%@ taglib  prefix="s" uri="/struts-tags" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>报销明细</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <!--这里可以追加导入模块内私有的js文件或css文件-->
    </head>
    <body>
        <s:form name="queryFormdd" id="queryFormdd" action="Detail!fyftDetailMethod.action" method="post" theme="simple"  enctype="multipart/form-data">
            <div style="text-align:center;margin-top:20px;margin-right:10px;">
                        
                        <div style="float: right;">&nbsp; Excel 导入: <input  type="file" name="attachments" id="attachments" onchange="return fileUpload()"/></div>
                        <input style=" float:right;" type="button"value="增加" onclick="addTable()"> 
                        <input style=" float:right"  type="button" value="确认"onclick="resetForm();" >
    
                        <input type="hidden" value="<s:property value='#request.je'/>" name="moneys" id="moneys" />            
                        <input type="hidden" value="<s:property value='#request.gsjc'/>" name="gs" id="gs" />    
                        <input type="hidden" value="<s:property value='#request.fykm'/>" name="fykm" id="fykm" />    
                        <input type="hidden" value="<s:property value='#request.fwlx'/>" name="fwlx" id="fwlx" />        
                        <input type="hidden" id="mjtime" value="" name="mjtime" /><br/>
                            
            </div>
        
            
            <table width="100%" border="0" cellpadding="1" cellspacing="1"    class="listTable" id='viewTabs'>
                <thead id="headerContainer">
                    <tr class="listTableHead">
                    
                        <td>序号</td>
                        <td>成本中心</td>
                        <td>资产编号</td>
                        <td>合同号</td>
                        <td>模具号</td>
                        <td>项目名称</td>
                        <td>费用</td>
                        <td>备注</td>
                        <td>操作</td>
                    </tr>
                    
                </thead>
                <tbody id="Contbody">
                    <tr>
                       <td><input type="text" class="inputText" id="xh" value="" name="xh" /></td>
                       <td><input type="text" class="inputText" id="ftcbzx" value="" name="ftcbzx" /></td>
                       <td><input type="text" class="inputText" id="gdzcno" value="" name="gdzcno" /></td>
                       <td><input type="text" class="inputText" id="xshtno" value="" name="xshtno" /></td>
                       <td><input type="text" class="inputText" id="mjno" value="" name="mjno" /></td>
                       <td><input type="text" class="inputText" id="xm"   value="" name="xm" /></td>
                       <td><input type="text" class="inputText" id="ftje" value="" name="ftje" /></td>
                       <td><input type="text" class="inputText" id="bz"   value="" name="bz" /></td>
                       <td><input type="button" value ="删除"onclick="del(this);"></td>
                    </tr>
                </tbody>
    
            </table>
        </s:form>
    </body>
    
        
     <script  type="text/javascript">
                    var tr="";
                    var objtr="";
                    window.onload = function () {
                          //添加时间
                          var currentdate = getNowFormatDate();
                          document.getElementById("mjtime").value=currentdate;
                           var tab = $("[id='viewTabs'] tr")[1];
                           $("input[name='ftcbzx']").after("<a href="javascript:void(0);" class="selectIco" onclick="selectcbzx(this)" style="margin-left: -30px;"></a>");
                           tr = $(tab).clone(true);     
                           //序号编号
                           xhJudge();
                           
                    };
                     //删除按钮
                   function del(_this){
                      var t=document.getElementById('viewTabs');  
                      var $trNode = $(_this).parent().parent();
                      var flag = confirm("确定删除该行数据吗?");
                        if (flag) {
                           $trNode.remove();
                           xhJudge();
                        }
    
                   };
            
                    //文件上传
                    function fileUpload(){
                       // 创建formdata对象
                    
                       //给formData对象添加<input>标签,注意与input标签的ID一致
                      // var file1 = document.getElementById('file').files[0];
                        
                        var datanum=0;
                        $("#queryFormdd").ajaxSubmit({ 
                            type:'post',
                            url:'mjexcelshow!getUploadPath.action',
                            success: function(response,status,xhr) {   //提交成功后自动执行的处理函数,参数data就是服务器返回的数据。
                                        var jsonPage = eval('('+response+')');
                                        datanum=jsonPage.datanum;//total number
                                        $("#Contbody").empty();
                                        if(datanum==0){
                                            alert("选择的excel没有数据");
                                        }
                                        
                                        for(var i=0;i<datanum;i++){
                                            $("#Contbody").append("<tr>"+
                                                " <td><input type='text' class='inputText' id='xh' value='"+jsonPage.data[i].xh+"' name='xh' /></td>"+
                                                " <td><input type='text' class='inputText' id='ftcbzx' value='"+jsonPage.data[i].ftcbzx+"' name='ftcbzx' /></td>"+
                                                " <td><input type='text' class='inputText' id='gdzcno'  value='"+jsonPage.data[i].gzno+"' name='gdzcno' /></td>"+
                                                " <td><input type='text' class='inputText' id='xshtno' value='"+jsonPage.data[i].xshtno+"' name='xshtno' /></td>"+
                                                " <td><input type='text' class='inputText' id='mjno'  value='"+jsonPage.data[i].mjno+"' name='mjno' /></td>"+
                                                " <td><input type='text' class='inputText' id='xm'  value='"+jsonPage.data[i].xmno+"' name='xm' /></td>"+
                                                " <td><input type='text' class='inputText' id='ftje' value='"+jsonPage.data[i].ftje+"' name='ftje' /></td>"+
                                                " <td><input type='text' class='inputText' id='bz' value='"+jsonPage.data[i].bz+"' name='bz' /></td>"+
                                                "<td><input type='button' value ='删除' onclick='del(this);'></td>"+
                                            "</tr>");
                                        }
                                        
                                        
                                    },
                            error: function(data, status, e) {  //提交失败自动执行的处理函数。
                                alert('上传失败,请检查上传文件格式和文件类型');
                            }
                        });
                        
                        return false;//阻止页面跳转
                    }
    
                   //增加行
                   function addTable(){
                        var obj=addJudge();
                    //    console.log(obj);
                          if(obj.zt=="1"){
                               var tr1 = tr.clone(true);
                               tr1.appendTo($("[id='viewTabs']"));
                               var tds=$("#viewTabs").find("tr");
                               var lengths=tds.length;
                               //$(tds[lengths-1]).find("[name='subject']").val("");
                               $(tds[lengths-1]).find("[name='ftcbzx']").val("");
                               $(tds[lengths-1]).find("[name='gdzcno']").val("");
                               $(tds[lengths-1]).find("[name='xshtno']").val("");
                               $(tds[lengths-1]).find("[name='mjno']").val("");
                               $(tds[lengths-1]).find("[name='xm']").val("");
                               $(tds[lengths-1]).find("[name='ftje']").val("");
                               $(tds[lengths-1]).find("[name='bz']").val("");
                          }else{
                               alert(obj.ts);
                          }
                         
                      };
    </script>
    
    </html>
  • 相关阅读:
    JavaScript等比例缩放图片
    乐器的研究
    乐器的研究
    单位的理解
    单位的理解
    那些狗,那些人
    Opencv+Zbar二维码识别(标准条形码/二维码识别)
    二维码解码器Zbar+VS2012开发环境配置
    条形码、二维码的区别和组成结构介绍
    Caffe-Windows下遇到过的问题、技巧、解决方案
  • 原文地址:https://www.cnblogs.com/cjxns/p/11194203.html
Copyright © 2011-2022 走看看