导入依赖
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.17-beta1</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml --><dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.17-beta1</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml-schemas --><dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml-schemas</artifactId> <version>3.17-beta1</version></dependency>
外围代码
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 java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;import java.math.BigDecimal;import java.text.DateFormat;import java.text.SimpleDateFormat;import java.util.*;public class Excel{public List<Map<String,String>> read(String filePath,String columns[]) { Workbook wb =null; Sheet sheet = null; Row row = null; List<Map<String, String>> list = null; String cellData = null; wb = readExcel(filePath); if(wb != null){ //用来寄存表中数据 list = new ArrayList<Map<String,String>>(); //获取第一个sheet sheet = wb.getSheetAt(0); //获取最大行数 int rownum = sheet.getPhysicalNumberOfRows(); //获取第一行 row = sheet.getRow(0); //获取最大列数 int colnum = row.getPhysicalNumberOfCells(); for (int i = 1; i<rownum; i++) { Map<String,String> map = new LinkedHashMap<String,String>(); row = sheet.getRow(i); if(row !=null){ for (int j=0;j<colnum;j++){ Cell cell = row.getCell(j); cellData = getCellFormatValue(cell); map.put(columns[j], cellData); } }else{ break; } list.add(map); } } return list; }//读取excelpublic static Workbook readExcel(String filePath){ Workbook wb = null; if(filePath==null){ return null; } String extString = filePath.substring(filePath.lastIndexOf(".")); InputStream is = null; try { is = new FileInputStream(filePath); if(".xls".equals(extString)){ return wb = new HSSFWorkbook(is); }else if(".xlsx".equals(extString)){ return wb = new XSSFWorkbook(is); }else{ return wb = null; } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return wb; }@SuppressWarnings("deprecation")public static String getCellFormatValue(Cell cell){ String cellValue = ""; if(cell == null){ return cellValue; } //把数字当成String来读,避免出现1读成1.0的状况 if(cell.getCellType()==0) { Date d=cell.getDateCellValue(); //如果是工夫,则转为yyyy-MM-dd的格局。能够依据本人的须要转化 DateFormat df= new SimpleDateFormat("yyyy-MM-dd"); cellValue=df.format(d); }else { if(cell.getCellType() == Cell.CELL_TYPE_NUMERIC){ cell.setCellType(Cell.CELL_TYPE_STRING); } switch (cell.getCellType()){ case Cell.CELL_TYPE_NUMERIC: //数字 cellValue = String.valueOf(cell.getNumericCellValue()); break; case Cell.CELL_TYPE_STRING: //字符串 cellValue = String.valueOf(cell.getStringCellValue()); break; case Cell.CELL_TYPE_BOOLEAN: //Boolean cellValue = String.valueOf(cell.getBooleanCellValue()); break; case Cell.CELL_TYPE_FORMULA: //公式 cellValue = String.valueOf(cell.getCellFormula()); break; case Cell.CELL_TYPE_BLANK: //空值 cellValue = ""; break; case Cell.CELL_TYPE_ERROR: //故障 cellValue = "非法字符"; break;default: cellValue = "未知类型"; break; } } return cellValue; } public static void main(String[] args){ Excel ex = new Excel(); String c[]= {"stuId","stuName","userName","carNo", "carNo2","userPhone","carNumber","remark"}; List<Map<String,String>> list=ex.read("文件门路",c); DateFormat df= new SimpleDateFormat("yyyy-MM-dd"); for (Map<String,String> map : list) { //通过健去获取值 String carNo = map.get("carNo"); } }}
去除数据库中某个字段雷同,其余字段不雷同的记录
创立两头表,并获取值
create table tmp as select min(主键) as col1 from 去重表名 GROUP BY 去重字段;
删除反复值,已两头表中记录作为条件
delete from 去重表名 where 主键 not in (select col1 from tmp);
删除两头表
drop table tmp;