使用jquery.ocupload插件上传文件
jquery.ocupload-1.1.2.js就是一个js库,它用于一键文件上传
使用coupload一旦选择完文件,就会自动上传
导入jquery.js和jquery.ocupload.js
导入按钮
POI导入文件,
Excel文件
导入依赖
springmvc配置上传组件
controller层
// 导入Excel表
@RequestMapping(value = "import.action",method = RequestMethod.POST)
public String importRegion(MultipartFile excelFile) {
ArrayList<BcRegion> bcRegions = new ArrayList<>();
try {
HSSFWorkbook workbook = new HSSFWorkbook(excelFile.getInputStream());
// 获取第一个工作簿
HSSFSheet sheet = workbook.getSheetAt(0);
// 获取Excel表格的行,
int lastRowNum = sheet.getLastRowNum();
// 遍历表格的每一行
for (int i=1; i<=lastRowNum; i++){
HSSFRow row = sheet.getRow(i); // 获取行号
BcRegion bcRegion = new BcRegion();
bcRegion.setId(UUID32Gen.gen32UUIDString()); //
// 获取Excel表格的列,
short lastCellNum = row.getLastCellNum();
// 遍历表格的每一列, 获取单元格
for(int j=0;j<lastCellNum;j++){
switch (j){
case 1:
bcRegion.setProvince(row.getCell(1).getStringCellValue()); //省或市
break;
case 2:
bcRegion.setCity(row.getCell(2).getStringCellValue()); //市
break;
case 3:
bcRegion.setDistrict(row.getCell(3).getStringCellValue()); //县或区
break;
case 4:
bcRegion.setPostcode(row.getCell(4).getStringCellValue()); //邮编
break;
}
}
// 获取省份
String province = bcRegion.getProvince();
// 获取市
String city = bcRegion.getCity();
// 获取区或县
String district = bcRegion.getDistrict();
// 去掉省/或者市字
province = province.substring(0,province.length()-1);
// 去掉市字
city = city.substring(0,city.length()-1);
// 去掉区或县字
district = district.substring(0, district.length() - 1);
// 获取简码
// getShortPinyin(): 获取拼音首字母
bcRegion.setShortcode(PinyinHelper.getShortPinyin(province+city+district));
// 获取城市编码
bcRegion.setCitycode(PinyinHelper.convertToPinyinString(city,"",PinyinFormat.WITHOUT_TONE));
// 写进数据库
bcRegions.add(bcRegion);
}
// 保存到数据库
this.bcRegionService.saveAll(bcRegions);
}catch (Exception e){
e.printStackTrace();
}
// 跳转页面
return "base/region";
}
JPinyin是一个汉字转拼音的Java开源类库,在PinYin4j的功能基础上做了一些改进。
Jpinyin里面一共有四个类:
ChineseHelper.java 汉字简繁体转换类
PinyinFormat.java 拼音格式类
PinyinHelper.java 汉字转拼音类
PinyinResource.java 资源文件加载类
convertToPinyinString() 方法
/**
* 将字符串转换成相应格式的拼音
* @param str 需要转换的字符串
* @param separator 拼音分隔符
* @param pinyinFormat 拼音格式:WITH_TONE_NUMBER–数字代表声调,WITHOUT_TONE–不带声调,WITH_TONE_MARK–带声调
* @return 字符串的拼音
*/
getShortPinyin() :截取拼音首字母
/**
* 获取字符串对应拼音的首字母
* @param str 需要转换的字符串
* @return 对应拼音的首字母
*/
service 层
@Override
@Transactional // 插入必须进行事务
public void saveAll(ArrayList<BcRegion> bcRegions) {
// 遍历逐条插入
for (BcRegion bcRegion:bcRegions){
this.bcRegionMapper.insertSelective(bcRegion);
}
}