zoukankan      html  css  js  c++  java
  • excel批量导入数据库SQL server

    思路:

    第一是文件上传,可以参照Jakarta的FileUpload组件,用普通的Post也就行了。
    第二是Excel解析,用JSL或者POI都行
    第三是数据保存,这个应该简单吧,一个循环,一行对应一条数据,写好了方法循环赋值调用就行了。
    第四是查询和显示,这个更简单了,不用多说。
    第一,上传

    SmartUpload mySmartUpload = new SmartUpload();

    // 时间转换
    SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss");
    SimpleDateFormat formatter1 = new SimpleDateFormat("yyyyMM");
    boolean sign = true;

    String date1 = formatter1.format(new Date());
    String date2 = "";
    String ext = "";

    // 获取当前项目路径
    String path = config.getServletContext().getRealPath("/");
    String path1 = path + "upload/excel/" + date1;
    System.out.println("上传的文件目录为:"+path1);

    // 创建文件夹
    File dirFile = null;
    try {
    dirFile = new File(path1);
    dirFile.mkdirs();
    } catch (Exception e) {
    e.printStackTrace();
    System.out.println(e);
    }
    try {
    // 初始化
    mySmartUpload.initialize(config, request, response);

    // 设定允许上传的文件(通过扩展名限制),仅允许excel文件
    mySmartUpload.setAllowedFilesList("xls");

    // 上传
    mySmartUpload.upload();

    // 获取文件后缀名
    ext = mySmartUpload.getFiles().getFile(0).getFileExt();

    // 生成文件名
    date2 = formatter.format(new Date());

    // 保存
    mySmartUpload.getFiles().getFile(0).saveAs(path1 + "/" + date2 + "." + ext);

    } catch (Exception e) {
    e.printStackTrace();
    sign = false;
    }

    if (sign == true) {
    String apkPath = "upload/excel/" + date1 + "/" + date2 + "." + ext;

    String version = mySmartUpload.getRequest().getParameter("version");
    Map<String, Object> vers = new HashMap<String, Object>();

    vers.put("version", version);
    vers.put("apk", apkPath);
    int result = 0;
    result = versionDao.addVersion(vers);
    if (result > 0) { //上传成功

    第二 ,解析

    // poi解析
    FileInputStream fis=null;
    List<UserInfo> list=new ArrayList<UserInfo>();
    try {
    System.out.println("开始解析数据。。。。。");
    String fi=dirFile+"/"+date2+"." + ext;
    System.out.println("解析的文件:"+fi);
    fis=new FileInputStream(dirFile+ "/" +date2 + "." + ext);
    HSSFWorkbook book=new HSSFWorkbook(fis);
    HSSFSheet sheet=book.getSheetAt(0);//第一个sheet
    int lastRowNum=sheet.getLastRowNum();//最大行数 有数据的
    //一般excel第一行是标题
    HSSFRow row=null;
    for (int i = 1; i < lastRowNum; i++) {
    row=sheet.getRow(i);
    String num=getCellValue(row, 0);
    String name=getCellValue(row, 1);
    String address=getCellValue(row, 2);
    String mail=getCellValue(row, 3);
    UserInfo info=new UserInfo(num, name, address, mail);
    list.add(info);
    System.out.println("读取内容:"+num+","+name+","+address+","+mail+",");
    }
    System.out.println("内容:"+list+"。");
    // out.print("<script>alert('添加ok!');location.href='versionAdd.jsp'</script>");
    } catch (Exception e) {
    System.out.println("excel解析出错!!!");
    e.printStackTrace();
    }
    // 解析结束

    第三,插入数据库

    //解析excel成功
    //下面操作入库
    response.getWriter().println("excel data:<br/>");
    for (UserInfo info : list) {
    response.getWriter().println("name:"+info.getName()+" address:"+info.getAddress()+" mail:"+info.getMail()+"<br/>");
    System.out.println("名称:"+info.getName()+"地址:"+info.getAddress()+"邮箱:"+info.getMail());
    //jdbc链接数据库操作 一条条插入,这个不用我再写了吧???
    int r=versionDao.addV2(info);
    if(r>0){
    System.out.println("插入成功!");
    }

    第四,读取。。。。(略)

  • 相关阅读:
    学习笔记——Maven实战(九)打包的技巧
    学习笔记——Maven实战(八)常用Maven插件介绍(下)
    学习笔记——Maven实战(七)常用Maven插件介绍(上)
    学习笔记——Maven实战(六)Gradle,构建工具的未来?
    学习笔记——Maven实战(五)自动化Web应用集成测试
    在Google的GKE上创建支持Internal Load Balancer的Service
    Bash命令查找本机公网IP
    Google Cloud IAM中添加自定义域名
    Debian上启用Apache2服务
    Google Cloud VM上在线扩硬盘
  • 原文地址:https://www.cnblogs.com/manmanlu/p/3521251.html
Copyright © 2011-2022 走看看