EXCEL表格数据导入数据库-POI
2019-05-21 16:05
253 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Stao_Hello/article/details/90408905
另一个需要注意的地方就是
EXCEL文件数据导入数据库-POI
这是本人第一次写文章,非常感谢你们的点击,如果有写的不好的地方,还请你们多加批评。不多废话,进入正题
在前不久,我在做一个给用户做一个数据导入的小功能的时候,总是报错,发生异常,一个小小的功能,却也浪费了我半天的时间,今天有空来将我发生的错误进行一下总结
Java做数据导入的方式有很多,用的比较多的是 POI 至于其他方式的弊端,有兴趣的可以百度一下,这里就不再做多余的赘述了
今天我们就来 POI 这种方式向数据库导入数据,EXCEL 有2003版和2007版之分,所以,我们在做导入的时候,要在代码里面做好兼容判断,判断表格是什么版本的,用相应的对象去获取,直接上代码
代码例子
表中的数据有三列,分别是 name、age、time
代码片
import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.io.InputStream; import java.text.SimpleDateFormat; import java.util.HashMap; import java.util.Map; /** * @Author: SunTao * @Date: 2019/5/21 14:52 * @Version 1.0 */ @Controller @RequestMapping("st/redeem") public class StudentRedeem { @RequestMapping("upload") public String upload(@RequestParam("file") MultipartFile file, Model model) { try { // 获取文件名 String fileName=file.getOriginalFilename(); // 将文件流转成 InputStream is=file.getInputStream(); Workbook wb=null; if (fileName.endsWith(".xls")) { // 2003版的EXCEL wb=new HSSFWorkbook(is); } else { // 2007版的EXCEL wb=new XSSFWorkbook(is); }// 获取表一 Sheet sheet=wb.getSheetAt(0); // 获取表中的数据总行数 int count=sheet.getLastRowNum(); // 定义一个Map 用以装载当前行数据 Map<String,Object> data=new HashMap<>(); // 循环导入数据 for (int i=1;i<=count;i++) { // 第一列数据 Row row=sheet.getRow(i); Cell cell0=row.getCell(0); cell0.setCellType(Cell.CELL_TYPE_STRING); String name=cell0.getStringCellValue(); // 第二列数据 Cell cell1=row.getCell(1); cell1.setCellType(Cell.CELL_TYPE_STRING); String age=cell1.getStringCellValue(); // 如果是日期格式的数据 Cell cell2=row.getCell(2); SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String time=sdf.format(cell2.getStringCellValue()); // 将编译出的当前行数据放在Map中 data.put("name",name); data.put("age",age); data.put("date",time); System.out.println(data); } } catch (IOException e) { e.printStackTrace(); } return null; } }
大家可以看到我用到的框架是SpringMVC,在上面的代码示例中我只是演示了将数据取出,而将数据向数据库去添加是比较简单的,所以我就没有给出示例,如果想要测试的话,可以用SSM的整合后的框架,写一个简单的添加方法进行测试,今天要说的是
if (fileName.endsWith(".xls")) { // 2003版的EXCEL wb=new HSSFWorkbook(is); } else { // 2007版的EXCEL wb=new XSSFWorkbook(is); }
EXCEL文件后缀名是" .xls " 说明 EXCEL 版本是2003版的,如果是" .xlsx " 说明是2007版的
fileName.endsWith(".xls")就是判断一下文件的版本,因为2007版的不能用
HSSFWorkbook对象,同理,2003版的也不可以用
XSSFWorkbook对象
另一个需要注意的地方就是
Cell cell2=row.getCell(2); SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String time=sdf.format(cell2.getStringCellValue());
对于日期格式的数据,如果只是简单的像其他列一样去获取的话,在控制台打印出来的是一串数字,不方便我们的使用,用上面的方式获取,结果是" 2019-05-21 15:59:15 " 这样的格式
相关文章推荐
- POI导入Excel表格数据到数据库中
- java用poi从Excel导入数据到数据库
- JAVA工具类(5) --- 批量导入excel表格数据到数据库中
- POI一键导入Excel数据到数据库
- 小例子:java利用poi读取excel中数据并导入数据库
- poi 获取excel数据 导入数据库
- EXCEL表格数据导入到数据库示例,请需要的兄弟自行编写数据层!
- Java 使用poi把数据库中数据导入Excel的解决方法
- 依赖POI实现EXCEL导入数据并生成javaBean和EXCEL根据数据库表导出
- excel表格数据导入数据库
- POI解析excel表格导入数据库
- 使用poi导入excel文件数据到数据库
- excel表格数据导入数据库
- 将Excel表格数据导入数据库
- 电子表格数据导入数据库和数据库下载数据到excel PHP代码phpexecl
- excel表格数据导入数据库
- poi方式操作excel表格数据(数据库查询到的数据导入excel文件)
- Java 利用poi把数据库中数据导入Excel
- ssm利用poi将excel数据导入数据库
- ASP.NET下将Excel表格中的数据规则的导入数据库思路分析及实现