java springmvc excel表导入功能

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import me.tbs.jxguorong.core.utils.DateUtil;
import me.tbs.jxguorong.core.utils.FileUtil;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;


public class text {



    //把从页面传过来的文件写入新建路径文件中
                                //文件内容                   路径              传入时的文件名称(带后缀)
    protected String copyFile(InputStream in, String path, String originalName) throws IOException {
        //创建新的excel表(文件名称)
        String newFileName = DateUtil.getFileNameByDate() + "." + FileUtil.getFileExt(originalName);// 新文件名
        File file = new File(path);
        if (!file.exists()) {
            file.mkdirs();
        }
        FileOutputStream fs = new FileOutputStream(path + File.separator + newFileName);
        byte[] buffer = new byte[1024 * 1024];
        int bytesum = 0;
        int byteread = 0;
        while ((byteread = in.read(buffer)) != -1) {
            bytesum += byteread;
            fs.write(buffer, 0, byteread);
            fs.flush();
        }

        // Thumbnails.of(path + "\\" + newFileName).size(80,
        // 80).outputFormat("jpg").toFiles(Rename.PREFIX_DOT_THUMBNAIL);

        fs.close();
        in.close();

        return newFileName;
    }






    //批量导入出库卡数据,获取Excel表的数据并存储
                                             //路径
        public List<Jyk> readExcelJyk(String excelUrl) throws BiffException, IOException {
            List<Jyk> list = new ArrayList<Jyk>();

            File xlsFile = new File(excelUrl);

            Workbook book = Workbook.getWorkbook(xlsFile);
            Sheet sheet = book.getSheet(0);
            int rows = sheet.getRows();
            for (int i = 1; i < rows; i++) {
                Jyk jyk = new Jyk();

                         //i代表excel表中的行数,1代表excel第1列
                jyk.setXh(sheet.getCell(1, i).getContents());
                jyk.setKm(sheet.getCell(2, i).getContents());
                jyk.setGmrxm(sheet.getCell(3, i).getContents());
                jyk.setGmrdh(sheet.getCell(4, i).getContents());
                jyk.setSkyh(sheet.getCell(5, i).getContents());
                jyk.setSksj(sheet.getCell(6, i).getContents());
                jyk.setSkje(sheet.getCell(7, i).getContents());
                jyk.setSklx(sheet.getCell(8, i).getContents());
                list.add(jyk);
            }

            return list;
        }





        //获取页面传过来的file文件
        public String Hykkimport(@RequestParam(value = "file", required = true) MultipartFile file,
                RedirectAttributes redirectAttributes) {
            try {
                    String ss="";
                    int i = 0;// 记录导入不成功数量
                    if (file != null) {
                        //把获取的文件、保存的路径、从前台传过来的文件名称(带后缀)传入copyFile(【三个参数】)方法中
                        String fileName = this.copyFile(file.getInputStream(), this.getUploadRootDir() + hyFileUrl,
                                file.getOriginalFilename());
                        String jykExcelUrl = this.getUploadRootDir() + hyFileUrl + File.separator + fileName;

                        List<Jyk> list = jykService.readExcelJyk(jykExcelUrl);

                        for (Jyk jyk : list) {                      
                            if (jykService.checkJyk2(jyk.getXh(),jyk.getKm())) {
                                jykService.saveJyk(jyk);                            
                            } else {
                                    ss+=jyk.getXh()+"\\n";
                                    i++;
                            }
                        }
                    }
                    if (i == 0) {
                        redirectAttributes.addFlashAttribute("message", "成功导入会员");
                    } else {
                        redirectAttributes.addFlashAttribute("message","共"+i+ "个会员导入失败\\n导入失败的卡号分别是:\\n"+ss);
                    }

            }catch (Exception e) {
                redirectAttributes.addFlashAttribute("message", "导入失败,请严格按照说明来操作");
            }
            return "redirect:/jyk";
        }

    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值