weixin_40478037
weixin_40478037
2018-04-16 02:49
采纳率: 75%
浏览 1.7k
已采纳

java解析excle数据并自动生成Word报表

图片说明

需要读取从客户端发送过来的excel文件内容,excel文件的格式是事先规定好的不变的,
生成的Word文件的格式也是是事先规定好的不变的,把excle中的数据提取出来,汇总归类生成Word报告,如下图,求完整的解决方案,包含项目源码,可以添加报酬

图片说明

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • qq_35741499
    qq_35741499 2018-04-16 06:57
    已采纳

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://"
    + request.getServerName() + ":" + request.getServerPort()
    + path + "/";
    %>


    My JSP 'index.jsp' starting page //ajax 方式上传文件操作 $(document).ready(function() { $('#btn').click(function() { if (checkData()) { $('#form1').ajaxSubmit({ url : 'uploadExcel/ajaxUpload.action', dataType : 'text', success : resutlMsg, error : errorMsg }); function resutlMsg(msg) { alert(msg); $("#upfile").val(""); } function errorMsg() { alert("导入excel出错!"); } } }); }); //JS校验form表单信息 function checkData() { var fileDir = $("#upfile").val(); var suffix = fileDir.substr(fileDir.lastIndexOf(".")); if ("" == fileDir) { alert("选择需要导入的Excel文件!"); return false; } if (".xls" != suffix && ".xlsx" != suffix) { alert("选择Excel格式的文件导入!"); return false; } return true; } function download() { var url = "uploadExcel/downloadExcel.action"; window.open(url); }



    1.通过简单的form表单提交方式,进行文件的上 2.通过jquery.form.js插件提供的form表单一步提交功能


    action="uploadExcel/upload.action">










    上传文件:
    onclick="return checkData()">


    点赞 评论
  • qq_30791769
    我在学习java 2018-04-16 03:44

    做过上传xls格式的表格并存到数据库的,因为excel表格比较简单而且我的导出也是导出excel表格,所以我用了jxl。但我看你还要导入xlsx?输出是world文档?没做过,但给你个提示。用poi插件,和jxl一样是做导入导出excel表格的,但是他的功能比jxl强大,自己去百度,踩踩坑,对自己的提高有帮助的。没具体研究,所以不多说了。给你个jxl的样例看看吧

    package com.xxx.xxx.action;

    import java.io.*;
    import java.util.*;

    import javax.annotation.Resource;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;

    import jxl.Cell;
    import jxl.Sheet;
    import jxl.Workbook;
    import jxl.format.Border;
    import jxl.format.BorderLineStyle;
    import jxl.read.biff.BiffException;
    import jxl.write.Label;
    import jxl.write.WritableCellFormat;
    import jxl.write.WritableSheet;
    import jxl.write.WritableWorkbook;

    import org.joda.time.DateTime;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.ResponseBody;
    import org.springframework.web.multipart.MultipartFile;

    import com.xxxx.xxxx.dao.*;
    import com.xxxx.xxxx.entity.*;
    import com.xxx.xxx.utils.*;
    /**

    • 类说明 *
    • @author zhangyj
    • @date 2017年12月22日 新建
      */
      @Controller
      @RequestMapping("/")
      public class Import {

      @Resource
      private SceneCellDao scMapper;

      @Resource
      private Black_WhiteD black_whited;

      @RequestMapping(value="importsc.do")
      @ResponseBody
      public String get(HttpServletRequest request,HttpServletResponse response,MultipartFile file){
      try {
      //也可以用request获取上传文件
      //MultipartFile fileFile = request.getFile("file"); //这里是页面的name属性
      //转换成输入流
      InputStream is = file.getInputStream();
      //得到excel
      Workbook workbook = Workbook.getWorkbook(is);
      //得到sheet
      Sheet sheet = workbook.getSheet(0);
      //得到列数
      int colsNum = sheet.getColumns();
      //得到行数
      int rowsNum = sheet.getRows();
      DateTime date=new DateTime();
      String now=date.toString("yyyy-MM-dd HH-mm-ss");
      System.out.println(now);
      //单元格
      Cell cell;
      //额 为什么写这个list来着? 忘了 好像为了对比数据? 留着吧
      List> list=new ArrayList>();
      List lsc=new ArrayList();

              //--做你需要的操作  
              //获取请求者信息
              HttpSession session= request.getSession();
              String user_account=(String) session.getAttribute("USER_ACCOUNT");
              System.out.println(user_account);
              //获取IP地址  存进数据库表备用 
              String ip_address=IpTools.getIpAddr(request);
              System.out.println(ip_address);
              /*
               * 本地直接调用   地址就是‘127.0.0.1’或‘0:0:0:0:0:0:0:1’ 
               * 如果数据库存入  ‘0:0:0:0:0:0:0:1’ 后面调用拆分服务会报错(不太确定是不是这个引起的,反正两个都是表示的
               *     本地调用,直接转为了‘127.0.0.1’)
               * 
               */
              if("0:0:0:0:0:0:0:1".equals(ip_address)){
                  ip_address="127.0.0.1";
              }
      
              for (int i = 1; i < rowsNum; i++) {//我的excel第一行是标题,所以 i从1开始 
                  Black_White bw=new Black_White();
                  Map<Integer, String> map = new HashMap<Integer, String>();
                  for (int j = 0; j < colsNum; j++) {
                      cell = sheet.getCell(j, i);//注意:第一个参数是列.第二个参数是行 
                      map.put(j, cell.getContents());
                  }
                  System.out.println(map);
                  bw.setMSISDN(Long.parseLong(map.get(0)));
                  bw.setBW_TYPE_ID(Integer.parseInt(map.get(1)));
                  bw.setTEMP_ID(Integer.parseInt(map.get(2)));
                  bw.setSMS_INTERVAL(Integer.parseInt(map.get(3)));
                  bw.setINSERT_TIME(now);
                  list.add(map);
                  lsc.add(bw);    
              }
              System.out.println(list);
              System.out.println(lsc);
      
               int i=black_whited.addBlack_White(lsc); //这是mybatis操作数据库的  很常见的代码 不传了
               System.out.println(i);
              return null;
          } catch (IOException e) {
              e.printStackTrace();
              return null;
          } catch (BiffException e) {
              e.printStackTrace();
              return null;
          }
      

      }
      }

      页面的代码
      -----html







      导入

      ---js
      //导入
      function importFile(){
      if ($('#file').val() == null || $('#file').val() == '') {
      alert('请选择导入上传');
      } else {
      var formData = new FormData($("#importFile")[0]);
      $.ajax({
      url: '${ctx}/importbw.do',
      type: 'POST',
      data: formData,
      async: false,
      cache: false,
      contentType: false,
      processData: false,
      success: function (data) {
      if(data!=null){
      alert("导入成功");
      }else{
      alert("");
      }
      },
      error: function (data) {
      alert("导入失败");
      }
      });
      }
      }

    点赞 评论
  • qq_30791769
    我在学习java 2018-04-16 03:46

    html /*







    导入
    */
    点赞 评论
  • qq_30791769
    我在学习java 2018-04-16 03:47
                 --    <form id="importFile" class="form-inline pull-right" style="height: 34px;" enctype="multipart/form-data">  
                      --  <span class="pr inputbox" style="position: relative; bottom: 4px;">
                        --  <input type="file" name="file" id="file"  style="height: 32px;width: 165px;">  
                       -- </span>
                        --<button class="btn btn-info" onclick="importFile()"><i class="fa fa-sign-in"></i>导入</button>
                    --</form>
    
    点赞 评论

相关推荐