HTML代码
//工具栏
var toolbar = [ {
{
id : 'button-import',
text : '导入',
iconCls : 'icon-redo'
},{
id : 'button-export',
text : '导出',
iconCls : 'icon-undo',
handler : function () {
window.location.href = "/batchExport";
}
}
}];
// 为导入按钮,添加一键上传效果
$("#button-import").upload({
// 默认name为file
action : '../../area_batchImport',
onSelect :function(){
// 选中文件后,关闭自动提交
this.autoSubmit = false ;
// 判定文件格式 ,以.xls 或者 .xlsx 结尾
var filename = this.filename();
var regex = /^.*\.(xls|xlsx)$/ ;
if(regex.test(filename)){
// 满足
this.submit();
}else{
$.messager.alert("警告","只能上传.xls或.xlsx结尾的文件!","warning");
}
},
onComplete : function(response){
alert("文件上传成功!");
/*刷新当前上传的数据*/
window.location.href = "/pages/base/area.html";
}
});
dao:
public interface AreaDao extends JpaRepository<Area,String>,JpaSpecificationExecutor<Area> {
}
service:
/**
* excle导入数据并保存到数据库
* @param areas
* @return
*/
public List<Area> saveBatch(List<Area> areas);
/**
* 导出
* @return
*/
public List<Area> findAll();
serviceImpl:
@Autowired
private AreaDao areaDao;
/**
* excle导入数据并保存到数据库
* @param areas
* @return
*/
@Override
@Transactional
public List<Area> saveBatch(List<Area> areas) {
return areaDao.saveAll(areas);
}
/**
* 查询所有的数据
* @return
*/
@Override
public List<Area> findAll() {
List<Area> areas = areaDao.findAll();
return areas;
}
controller:
@Autowired
private AreaService areaService;
/**
* excle导入数据并保存到数据库
*
* @param file
* @return
*/
@RequestMapping("/area_batchImport")
public String batchImport(MultipartFile file) throws Exception {
List<Area> areas = new ArrayList<Area>();
// 编写解析代码逻辑
// 基于.xls 格式解析 HSSF
// 1、 加载Excel文件对象
HSSFWorkbook hssfWorkbook = new HSSFWorkbook(file.getInputStream());
// 2、 读取一个sheet
HSSFSheet sheet = hssfWorkbook.getSheetAt(0);
// 3、 读取sheet中每一行
for (Row row : sheet) {
// 一行数据 对应 一个区域对象
if (row.getRowNum() == 0) {
// 第一行 跳过
continue;
}
// 跳过空行
if (row.getCell(0) == null || StringUtils.isBlank(row.getCell(0).getStringCellValue())) {
continue;
}
Area area = new Area();
area.setId(row.getCell(0).getStringCellValue());
area.setProvince(row.getCell(1).getStringCellValue());
area.setCity(row.getCell(2).getStringCellValue());
area.setDistrict(row.getCell(3).getStringCellValue());
area.setPostcode(row.getCell(4).getStringCellValue());
String city = PinYin4jUtils.hanziToPinyin(area.getCity().replace("市", ""), "");
area.setCitycode(city);
String province = ToFirstChar(area.getProvince().replace("市", ""));
String district = ToFirstChar(area.getDistrict().replace("市", ""));
String city1 = ToFirstChar(area.getCity().replace("市", ""));
StringBuilder stringBuilder = new StringBuilder(province);
StringBuilder builder = stringBuilder.append(city1).append(district);
area.setShortcode(builder.toString());
areas.add(area);
}
// 调用业务层
areaService.saveBatch(areas);
return "ok";
}
===============================================
/**
* 数据库导出到excel
*
* @param file
* @return
*/
@RequestMapping("/batchExport")
public String batchExport(HttpServletResponse response) throws Exception {
//创建对象
HSSFWorkbook hssfWorkbook = new HSSFWorkbook();
//第一页的名称
HSSFSheet sheet = hssfWorkbook.createSheet("区域资料");
//查询出所有的区域数据
List<Area> areas = areaService.findAll();
String fileName = "userinf" + ".xls";//设置要导出的文件的名字
//新增数据行,并且设置单元格数据
int rowNum = 1;
String[] headers = {"ID", "城市", "城市编码", "区域", "邮编", "省", "简码"};
//headers表示excel表中第一行的表头
HSSFRow row = sheet.createRow(0);
//在excel表中添加表头
for (int i = 0; i < headers.length; i++) {
HSSFCell cell = row.createCell(i);
HSSFRichTextString text = new HSSFRichTextString(headers[i]);
cell.setCellValue(text);
}
//在表中存放查询到的数据放入对应的列
for (Area area : areas) {
HSSFRow row1 = sheet.createRow(rowNum);
row1.createCell(0).setCellValue(area.getId());
row1.createCell(1).setCellValue(area.getCity());
row1.createCell(2).setCellValue(area.getCitycode());
row1.createCell(3).setCellValue(area.getDistrict());
row1.createCell(4).setCellValue(area.getPostcode());
row1.createCell(5).setCellValue(area.getProvince());
row1.createCell(6).setCellValue(area.getShortcode());
rowNum++;
}
response.setContentType("application/octet-stream");
response.setHeader("Content-disposition", "attachment;filename=" + fileName);
response.flushBuffer();
hssfWorkbook.write(response.getOutputStream());
return "ok";
}
springboot启动类
@SpringBootApplication
public class BosManagementAppilcation {
public static void main(String[] args) throws Exception {
SpringApplication.run(BosManagementAppilcation.class,args);
}