zoukankan      html  css  js  c++  java
  • Excel数据批量导入到数据库

    1.今天做批量导入网上找了个例子,改了改,运行起来了。用POI实现Excel的读取,需要jar包。

    2.ReadExcel.java读取数据

    /**
     * 
     */
    package com.b510.excel;
    
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.ArrayList;
    import java.util.List;
    
    import org.apache.poi.hssf.usermodel.HSSFCell;
    import org.apache.poi.hssf.usermodel.HSSFRow;
    import org.apache.poi.hssf.usermodel.HSSFSheet;
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    
    import com.b510.common.Common;
    import com.b510.excel.vo.Student;
    
    /**
     * @author Hongten
     * @created 2014-5-18
     */
    public class ReadExcel {
    
        public List<Student> readXls() throws IOException {
            InputStream is = new FileInputStream(Common.EXCEL_PATH);
            HSSFWorkbook hssfWorkbook = new HSSFWorkbook(is);
            Student student = null;
            List<Student> list = new ArrayList<Student>();
            // 循环工作表Sheet
            for (int numSheet = 0; numSheet < hssfWorkbook.getNumberOfSheets(); numSheet++) {
                HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(numSheet);
                if (hssfSheet == null) {
                    continue;
                }
                // 循环行Row
                for (int rowNum = 1; rowNum <= hssfSheet.getLastRowNum(); rowNum++) {
                    HSSFRow hssfRow = hssfSheet.getRow(rowNum);
                    if (hssfRow != null) {
                        student = new Student();
                        HSSFCell no = hssfRow.getCell(0);
                        HSSFCell name = hssfRow.getCell(1);
                        HSSFCell age = hssfRow.getCell(2);
                        HSSFCell score = hssfRow.getCell(3);
                        student.setNo(getValue(no));
                        student.setName(getValue(name));
                        student.setAge(getValue(age));
                        student.setScore(Float.valueOf(getValue(score)));
                        list.add(student);
                    }
                }
            }
            return list;
        }
        
         @SuppressWarnings("static-access")
        private String getValue(HSSFCell hssfCell) {
                if (hssfCell.getCellType() == hssfCell.CELL_TYPE_BOOLEAN) {
                    // 返回布尔类型的值
                    return String.valueOf(hssfCell.getBooleanCellValue());
                } else if (hssfCell.getCellType() == hssfCell.CELL_TYPE_NUMERIC) {
                    // 返回数值类型的值
                    return String.valueOf(hssfCell.getNumericCellValue());
                } else {
                    // 返回字符串类型的值
                    return String.valueOf(hssfCell.getStringCellValue());
                }
            }
    }

    3.SaveData2DB.ava保存数据

    /**
     * 
     */
    package com.b510.excel;
    
    import java.io.IOException;
    import java.sql.SQLException;
    import java.util.List;
    
    import com.b510.common.Common;
    import com.b510.excel.util.DbUtil;
    import com.b510.excel.vo.Student;
    
    /**
     * @author Hongten
     * @created 2014-5-18
     */
    public class SaveData2DB {
    
    	@SuppressWarnings({ "rawtypes" })
    	public void save() throws IOException, SQLException {
    		ReadExcel xlsMain = new ReadExcel();
    		Student student = null;
    		List<Student> list = xlsMain.readXls();
    
    		for (int i = 0; i < list.size(); i++) {
    			student = list.get(i);
    			List l = DbUtil.selectOne(Common.SELECT_STUDENT_SQL + "'%" + student.getName() + "%'", student);
    			if (!l.contains(1)) {
    				DbUtil.insert(Common.INSERT_STUDENT_SQL, student);
    			} else {
    				System.out.println("The Record was Exist : No. = " + student.getNo() + " , Name = " + student.getName() + ", Age = " + student.getAge() + ", and has been throw away!");
    			}
    		}
    	}
    }
    

    4.源程序http://files.cnblogs.com/files/feifeishi/ExcelTest.rar

  • 相关阅读:
    IT题库-134 | String、StringBuffer和StringBuilder的区别
    Java NIO 总结
    Java 性能分析工具-JProfiler
    Java 性能分析工具-MAT
    java 获取dump文件
    GC总结
    String总结
    堆-对象的分配与回收过程
    java 生产环境调优排查总结
    记一次因为Gradle与Lombok不兼容导致编译时的内存溢出 Expiring Daemon because JVM heap space is exhausted
  • 原文地址:https://www.cnblogs.com/feifeishi/p/6127547.html
Copyright © 2011-2022 走看看