Java中利用POI通过List导出到Excle,将Excle中的数据导入到数据库
没接触这个小白可以直接复制代码到方法中只要导了POI这个jar包 修改一下数据库方法和实体类就可以了,实体类的位置和数据库方法的位置我已经标明了,这也是我借鉴别人的方法学习的,我只能帮你们这么多了。。加油
页面部分代码就不写了,就直接一个按钮点击调用controler层中的方法就可以.
下面开始就是java代码了
下面的代码直接复制到方法内就可以用,哦对了,这个是通过POI这个jar包来实现的
jar包可以去maven上直接下载就可以用
首先是导出Excle
try {
String filePath="e:/sheet1.xls";//文件路径
//调用sql
List<SensitiveWord> list = AsrUtils.ASRDAO.getSENSITIVE_ALL();
HSSFWorkbook workbook =new HSSFWorkbook();
//rowNum是起始行
int rowNum= 0;
HSSFSheet hssfSheet =workbook.createSheet("asdasd");
Row row =hssfSheet.createRow(rowNum++);
//Excle每列的标题
row.createCell(0).setCellValue("第一列属性名字");
row.createCell(1).setCellValue("第二列属性名字");
//通过循环将每一行的数据导出Excle
if(list!=null&&list.size()>0){
for (SensitiveWord sensitiveWord :list){
Row row1 =hssfSheet.createRow(rowNum++);
row1.createCell(0).setCellValue(sensitiveWord.getWord());
row1.createCell(1).setCellValue(sensitiveWord.getAuthor());
}
}
FileOutputStream out = new FileOutputStream(filePath);
//保存Excel文件
workbook.write(out);
}
catch (Exception e) {
e.printStackTrace();
}
}
下面的是导入Excle文件
//新建一个用来存储对象的LIst集合
//其中对象的每一个属性以map的键值对关系进行存储
ArrayList<Map<String, String>> mapList = new ArrayList<>();
//这个是你要导入的Excle文件路径
File file = new File("e:/sheet1.xls");
//判断文件是否存在
if (file.isFile() && file.exists()) {
System.out.println(file.getPath());
//获取文件的后缀名 \\ .是特殊字符
String[] split = file.getName().split("\\.");
System.out.println(split[1]);
//新建一个HSSFWorkbook对象
HSSFWorkbook wb =new HSSFWorkbook();
//根据文件后缀(xls/xlsx)进行判断
if ("xls".equals(split[1])) {
//获取文件流对象
FileInputStream inputStream = new FileInputStream(file);
//为上面新建一个HSSFWorkbook对象赋值
wb = new HSSFWorkbook(inputStream);
} else {
System.out.println("文件类型错误");
}
//开始解析
HSSFSheet sheet = wb.getSheetAt(0);
//第一行是列名,所以从第二行开始遍历
int firstRowNum = sheet.getFirstRowNum() + 1;
int lastRowNum = sheet.getLastRowNum();
//遍历行
for (int rIndex = firstRowNum; rIndex <= lastRowNum; rIndex++) {
Map map =new HashMap();
//获取当前行的内容
Row row = sheet.getRow(rIndex);
if (row != null) {
int firstCellNum = row.getFirstCellNum();
int lastCellNum = row.getLastCellNum();
for (int cIndex = firstCellNum; cIndex < lastCellNum; cIndex++) {
/* row.getCell(cIndex).setCellType(Cell.CELL_TYPE_STRING);*/
//获取单元格的值
String value = row.getCell(cIndex).getStringCellValue();
System.out.println(value);
//获取此单元格对应第一行的值
String key = sheet.getRow(0).getCell(cIndex).getStringCellValue();
System.out.println(key);
//第一行中的作为键,第n行的作为值
map.put(key, value);
System.out.println(map);
}
}
mapList.add(map);
System.out.println("读取成功");
System.out.println(mapList);
}
}
//通过循环将maplist中的map遍历出来,其中SensitiveWord是一个实体类
//之后再通过map.get(key)方法得到对象的那个属性的值,key就是文档每一列的列名
if (mapList!=null&&mapList.size()>0){
for(Map map : mapList){
SensitiveWord sensitiveWord =new SensitiveWord();
sensitiveWord.setWord((String) map.get("word"));
sensitiveWord.setAuthor((String) map.get("author"));
//调用sql将对象存到数据库中
AsrUtils.ASRDAO.setExcle(sensitiveWord);
}
}