读取excel到数据库

lz使用poi的jar,maven依赖见lz的 poi读取数据写入excel:

http://blog.csdn.net/imthemostshuaiin626/article/details/75103353

主要解决了长数字在excel中为科学记数法转化为原数据的问题(具体为手机号码)

@SuppressWarnings("resource")
    public static void main(String[] args) {
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring_bean.xml");
        JdbcTemplate jdbcTemplate = (JdbcTemplate) applicationContext.getBean("jdbcTemplate");
        String path="X:\\Users\\xb\\Desktop\\excel\\xx号段.xlsx";
        int i = 1;//从第几行开始
        excel2sqlDate(path, jdbcTemplate,i);


    }
@SuppressWarnings("deprecation")
    private static void excel2sqlDate(String path,JdbcTemplate jdbcTemplate,int r){
        DecimalFormat df = new DecimalFormat("0");  
        List<User> users = new ArrayList<>();
        try {
            // 构造 XSSFWorkbook 对象,strPath 传入文件路径
            XSSFWorkbook xwb = new XSSFWorkbook(path);
            // 读取第一章表格内容
            XSSFSheet sheet = xwb.getSheetAt(0);
            // 定义 row、cell
            XSSFRow row;
            //XSSFCell cell;

            // 循环输出表格中的内容
            for (int i = sheet.getFirstRowNum()+r; i < sheet.getPhysicalNumberOfRows(); i++)
            {
                row = sheet.getRow(i);
                for (int j = row.getFirstCellNum(); j < row.getPhysicalNumberOfCells(); j++)
                {
                    // 通过 row.getCell(j).toString() 获取单元格内容,
                    if (j==0) {
                        if (row.getCell(0)!=null) {
                            row.getCell(0).setCellType(Cell.CELL_TYPE_STRING);
                        }
                        if (row.getCell(2) != null) {
                            row.getCell(2).setCellType(Cell.CELL_TYPE_NUMERIC);//科学记数法的转化
                        }
                        if (row.getCell(3) != null) {
                            row.getCell(3).setCellType(Cell.CELL_TYPE_STRING);
                        }
                        User user = new User();
                        user.setId(row.getCell(0).toString());
                        user.setName(row.getCell(1).toString());
                        user.setPhoneNum(df.format(row.getCell(2).getNumericCellValue()));
                        user.setCount(Integer.parseInt(row.getCell(3).toString()));
                        users.add(user);
                        System.out.println(row.getCell(0)+"-"+row.getCell(1)+"-"+df.format(row.getCell(2).getNumericCellValue())+"-"+row.getCell(3));
                    }
                }
            }

        } catch (IOException e) {
            e.printStackTrace();

        }
        String sql="insert into xxx(name,phone,count) values(?,?,?) ";
        for(User user :users){
            jdbcTemplate.update(sql,user.getName(),user.getPhoneNum(),user.getCount());

        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值
>