2 smal1 sun Smal1_Sun 于 2016.03.31 09:30 提问

Java导入excel文档,如何去除重复数据?

以下是我的导入excel工具类

 public class StuExcelUtil {
    public static List<Student> redexcel(File file) throws Exception{
        List<Student> list=new ArrayList<Student>();
        InputStream input=new FileInputStream(file);
        Workbook wb = Workbook.getWorkbook(input);
        Sheet sheet=wb.getSheet(0);
        int row=sheet.getRows();
        int colums=sheet.getColumns();
        /* 如何写入带图片的excel?
        int imgNum=sheet.getNumberOfImages();
        if(imgNum>0){
            for (int i = 0; i < imgNum; i++) {
                Image image=sheet.getDrawing(i);
                byte[] imageData = image.getImageData();
                String fileName = image.getImageFile().getName().trim();
            }
        }
        */
        for (int i = 1; i < row; i++) {
            for (int j = 0; j < colums; j++) {
                Student stu=new Student();
                stu.setName(sheet.getCell(j++, i).getContents());
                stu.setSex(Integer.parseInt(sheet.getCell(j++, i).getContents()));
                stu.setAge(Integer.parseInt(sheet.getCell(j++, i).getContents()));
                stu.setGrade(Integer.parseInt(sheet.getCell(j++, i).getContents()));
                stu.setWishType(Integer.parseInt(sheet.getCell(j++, i).getContents()));
                stu.setWishDesc(sheet.getCell(j++, i).getContents());
                stu.setWishStory(sheet.getCell(j++, i).getContents());
                stu.setTeacherWords(sheet.getCell(j++, i).getContents());
                stu.setTeacherMobile(DesUtils.encryptBasedDes(sheet.getCell(j++,i).getContents()));
                list.add(stu);
            }
        }
        return list;
    }
}

6个回答

daidaineteasy
daidaineteasy   Ds   Rxr 2016.03.31 10:45
已采纳

从excel文件中获取到数据,通过批处理发送给数据库进行处理,

数据库那边写一个存储过程,在往里插入数据之前,先进行查询,

如果查到数据库中已经有相同的数据,就不进行插入,否则就执行插入操作。

daidaineteasy
daidaineteasy 回复Smal1_Sun: 有差距的,你循环list去查询数据库,你对数据库的请求会有多少,每次去请求数据库都会新建一个链接,并且是有时间消耗的,你将这些操作交给数据库去操作,减少对数据库的请求,性能上就有很大的提升。
一年多之前 回复
Smal1_Sun
Smal1_Sun 但我觉得你的方式是在数据库中做判断, 我的是在代码中做判断, 没什么差阿 ?
一年多之前 回复
Royal_lr
Royal_lr   Ds   Rxr 2016.03.31 09:39

看你对重复怎么判定的,,给个判断就行了,,

Smal1_Sun
Smal1_Sun 我目前是这种方式,成功了。但是这样的话,对数据库的压力就很大, 每次都要查询,还影响速度。不晓得有没有其他方式?
一年多之前 回复
Royal_lr
Royal_lr 如果是excel的数据和数据库的数据比较的话,,,那就得这样
一年多之前 回复
Smal1_Sun
Smal1_Sun 新手, 不太理解,我是把excel中的数据插入到数据库中,这个工具类返回的是list,难道我要循环这个list,再查询数据库的list,相比较吗?
一年多之前 回复
limengyouxi
limengyouxi   2016.03.31 09:39

查询取到数据的时候进行去重 在往Excel中导入

Smal1_Sun
Smal1_Sun 我的意思是,一个excel文档,导入到数据库中。 如果数据库中和excel中有相同的数据, 如何去除重复数据?
一年多之前 回复
limengyouxi
limengyouxi   2016.03.31 09:38

查询取到数据的时候进行去重 在往Excel中导入

limengyouxi
limengyouxi   2016.03.31 09:38

查询取到数据的时候进行去重 在往Excel中导入

CSDNXIAON
CSDNXIAON   2016.03.31 09:43

Java中Excel导入数据
java导入excel数据到mysql数据库
Java数据导入Excel
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!

Csdn user default icon
上传中...
上传图片
插入图片