poi 读取xls实现批量导入
来源:互联网 发布:mark knopfler知乎 编辑:程序博客网 时间:2024/05/01 09:33
建表数据:
mysql> show create table t_user \G;
*************************** 1. row ***************************
Table: t_user
Create Table: CREATE TABLE `t_user` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(20) default NULL,
`phone` varchar(20) default NULL,
`email` varchar(20) default NULL,
`qq` varchar(20) default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.01 sec)
User实体类:
package com.poi.tom;public class User {private int id;private String nameString;private String phoneString;private String email;private String qq;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getNameString() {return nameString;}public void setNameString(String nameString) {this.nameString = nameString;}public String getPhoneString() {return phoneString;}public void setPhoneString(String phoneString) {this.phoneString = phoneString;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public String getQq() {return qq;}public void setQq(String qq) {this.qq = qq;}}
poi.xls:
用Spring batch operation
package com.poi.tom;import java.io.File;import java.io.FileInputStream;import java.io.InputStream;import java.sql.PreparedStatement;import java.sql.SQLException;import java.util.ArrayList;import java.util.List;import org.apache.poi.hssf.usermodel.HSSFCell;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.ss.usermodel.Cell;import org.apache.poi.ss.usermodel.Sheet;import org.apache.poi.ss.usermodel.Workbook;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.jdbc.core.BatchPreparedStatementSetter;import org.springframework.jdbc.core.JdbcTemplate;import org.springframework.jdbc.datasource.DriverManagerDataSource;public class TestInsertUsersIntoDBUseTemplate {private static Logger LOGGER = LoggerFactory.getLogger(TestInsertUsersIntoDBUseTemplate.class);static{try {Class.forName("com.mysql.jdbc.Driver");} catch (ClassNotFoundException e) {LOGGER.error("driver is not found!");}}static DriverManagerDataSource dataSource = new DriverManagerDataSource("jdbc:mysql://localhost:3306/poi", "root", "root");static JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);public static void main(String[] args) throws Exception{InputStream is = new FileInputStream(new File("F:/poi.xls"));Workbook wb = new HSSFWorkbook(is);Sheet sheet = wb.getSheetAt(0);LOGGER.info("total row num is "+sheet.getLastRowNum());List<User> userList = new ArrayList<User>();for(int i=1;i<=sheet.getLastRowNum();i++){if(sheet.getRow(i)==null){continue;}else {User user = new User();user.setNameString(getCellValue(sheet.getRow(i).getCell(1)));user.setPhoneString(getCellValue(sheet.getRow(i).getCell(2)));user.setEmail(getCellValue(sheet.getRow(i).getCell(3)));user.setQq(getCellValue(sheet.getRow(i).getCell(4)));userList.add(user);}}LOGGER.info(userList.size()+"");batchUpdate(userList);}public static String getCellValue(Cell cell){if (cell==null) {return " ";}else if(cell.getCellType()==HSSFCell.CELL_TYPE_BOOLEAN){return String.valueOf(cell.getBooleanCellValue());}else if(cell.getCellType()==HSSFCell.CELL_TYPE_NUMERIC){double d = cell.getNumericCellValue();return String.valueOf(Double.valueOf(d).intValue());}else {return cell.getStringCellValue();}}public static int[] batchUpdate(final List<User> userList) {int[] updateCounts = jdbcTemplate.batchUpdate("insert into t_user(name,phone,email,qq)values(?,?,?,?)",new BatchPreparedStatementSetter() {public void setValues(PreparedStatement ps, int i) throws SQLException {ps.setString(1, ((User)userList.get(i)).getNameString());ps.setString(2, ((User)userList.get(i)).getPhoneString());ps.setString(3, ((User)userList.get(i)).getEmail());ps.setString(4, ((User)userList.get(i)).getQq());}public int getBatchSize() {return userList.size();}} );return updateCounts;}}
查询:
mysql> select * from t_user;
+-----+--------+-----------+--------------------+------+
| id | name | phone | email | qq |
+-----+--------+-----------+--------------------+------+
| 105 | 张三 | 123 | 1234567@qq2233.com | 11 |
| 106 | 张三1 | 1234 | 1234567@qq.com | 22 |
| 107 | 张三2 | 12345 | 1234567@qq.com | 33 |
| 108 | 张三3 | 123456 | 1234567@qq.com | 44 |
| 109 | 张三4 | 1234567 | 1234567@qq.com | 55 |
| 110 | 张三5 | 12345678 | 1234567@qq.com | 66 |
| 111 | 张三6 | 123456789 | 1234567@qq.com | 77 |
| 112 | 张三7 | 1 | 111321@121331.com | 88 |
| 113 | 张三8 | 2 | 21@q33.com | 99 |
| 114 | 张三9 | 3 | 231@qq2.com | 0 |
| 115 | 张三10 | 4 | 12345672233@qq.com | 1 |
+-----+--------+-----------+--------------------+------+
11 rows in set (0.00 sec)
复杂点的可以将数据放在任意位置,去导入,可以划一个range,有待研究,另外hardcode比较拿不出去.
- poi 读取xls实现批量导入
- POI读取XLS、XLSX
- 使用apache poi 实现Excel批量导入
- POI读取xls文件笔记
- POI读取xls和xlsx
- POI读取xls和xlsx
- struts1 poi Excel批量导入支持xls和xlsx-源码java
- poi批量实现导入功能,jxl实现导入预览功能
- xls批量导入sql server
- 文件信息批量导入数据库(Struts2实现文件上传,POI实现Excel文件读取并写入数据库) .
- 文件信息批量导入数据库(Struts2实现文件上传,POI实现Excel文件读取并写入数据库)
- poi批量导入
- POI导入,兼容xlsx 和 xls
- POI导入Excel含.xls和.xlsx
- POI 3.7 读取xls和xlsx
- 使用POI读取xls和xlsx
- POI读取EXCEL下xlsx,xls文件
- poi读取excel(xls,xlsx)
- 将List a 和List b中的元素合并,没有重复的元素,最后返回这个合并的List
- 【用户连接】
- “经济型”Win8.1 4G平板电脑
- LeetCode::Spiral Matrix II
- EF CodeFirst 一对一关系定义
- poi 读取xls实现批量导入
- 常用方法2 ---字符串处理类
- 关于ActionContext.getContext()的用法心得
- LeetCode::Remove Duplicates from Sorted List
- UVa 353 - Pesky Palindromes
- js字符串转换成数字,数字转换成字符串
- makefile学习笔记
- lambda表达式——.net3.5新特性
- 常用方法1 ---数学处理类