青锋已经开源了多个开源项目,关注青锋可以获得更多技术支持和资源。
(新增)基于SpringCloud Alibaba Nacos+vue前端的微服务版本。
基于springboot、layui的jsp后台管理系统。
基于springboot、layui的thymeleaf后台管理系统。
基于springboot、ant design的Vue后台管理系统。
基于springboot的青锋家谱管理系统
开源项目地址:
新增“Excel导入导出”案例
增加了【Excel导入导出】案例,可以在实际项目中直接使用。
导入功能示例代码
/**
* @title: downloadExcel
* @description: 下载导入Excel模板
* @author: qingfeng
* @date: 2021/4/5 0005 18:52
*/
@RequestMapping(value = "/downloadExcel", method = RequestMethod.GET)
public void downloadExcel(HttpServletRequest request,HttpSession session,HttpServletResponse response) throws Exception {
PageData pd = new PageData(request);
FileUtil.downFile(response, session.getServletContext().getRealPath("/")+"/template/excelImport/eiedata_import_mb.xlsx", "Excel导入导出案例数据导入模板.xlsx");
}
/**
* @title: toImport
* @description: toImport
* @author: qingfeng
* @date: 2021/4/5 0005 18:57
*/
@RequestMapping(value = "/toImport", method = RequestMethod.GET)
public String toImport(ModelMap map,HttpServletRequest request) {
PageData pd = new PageData(request);
map.put("pd",pd);
return "web/example/eiedata/eiedata_importExcel";
}
/**
* @title: saveImportExcel
* @description: 执行导入
* @author: qingfeng
* @date: 2021/4/5 0005 18:57
*/
@RequestMapping(value = "/saveImportExcel", method = RequestMethod.POST)
public void saveImportExcel(HttpServletRequest request,HttpSession session,HttpServletResponse response) throws IOException {
PageData pd = new PageData(request);
String str = "导入成功";
String savePath = ParaUtil.localName;
File files = new File(savePath+pd.get("file_path"));
FileInputStream fileInputStream = new FileInputStream(files);
Workbook book = new XSSFWorkbook(fileInputStream);
Sheet sheet = book.getSheetAt(0); //示意访问sheet
int totalRows = sheet.getPhysicalNumberOfRows();
int totalCells = sheet.getRow(0).getPhysicalNumberOfCells();
String[] objs = new String[totalCells];
Boolean flag = true;
String time = DateTimeUtil.getDateTimeStr();
PageData user = (PageData) session.getAttribute("loginUser");
PageData organize = (PageData) session.getAttribute("loginOrganize");
Pinyin4JUtil pinyin4JUtil = new Pinyin4JUtil();
List
list = new ArrayList
();
for (int i = 0; i < totalRows; i++) {
for (int j = 0; j < totalCells; j++) {
Cell xssfCell = sheet.getRow(i).getCell(j);
if (totalRows >= 1 && sheet.getRow(0) != null) {
if(xssfCell==null){
objs[j]="";
}else{
if(xssfCell.toString().trim().equals("")){
objs[j]="";
}else{
if(xssfCell.getCellType()== HSSFCell.CELL_TYPE_FORMULA){
FormulaEvaluator evaluator = book.getCreationHelper().createFormulaEvaluator();
double resultScore = evaluator.evaluate(xssfCell).getNumberValue();// 读取计算结果 =SUM(M6:M15)
objs[j] = resultScore+"";
}else if(xssfCell.getCellType()==HSSFCell.CELL_TYPE_NUMERIC){
if (HSSFDateUtil.isCellDateFormatted(xssfCell)) {// 处理日期格式、时间格式
SimpleDateFormat sdf = null;
if (xssfCell.getCellStyle().getDataFormat() == HSSFDataFormat
.getBuiltinFormat("h:mm")) {
sdf = new SimpleDateFormat("HH:mm");
} else {// 日期
sdf = new SimpleDateFormat("yyyy-MM-dd");
}
Date date = xssfCell.getDateCellValue();
objs[j] = sdf.format(date).trim();
} else if (xssfCell.getCellStyle().getDataFormat() == 58) {
// 处理自定义日期格式:m月d日(通过判断单元格的格式id解决,id的值是58)
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
double value = xssfCell.getNumericCellValue();
Date date = org.apache.poi.ss.usermodel.DateUtil
.getJavaDate(value);
objs[j] = sdf.format(date).trim();
} else {
System.out.println(xssfCell.toString());
objs[j] = xssfCell.toString().trim();
}
}else if(xssfCell.getCellType()==HSSFCell.CELL_TYPE_STRING){
objs[j] = xssfCell.getRichStringCellValue().toString().trim();
}else{
objs[j]="";
}
// objs[j] = parseExcel(xssfCell,book);//xssfCell.toString();
}
}
}
}
if(i!=0){
if(Verify.verifyIsNotNull(objs[0])){
PageData p = new PageData();
//主键id
String id = GuidUtil.getUuid();
p.put("id", id);
p.put("create_time", time);
//处理数据权限
p.put("create_user",user.get("id"));
p.put("create_organize",organize.get("organize_id"));
//处理类型
if(objs[1].equals("水果")){
p.put("classify","0");
}else if(objs[1].equals("蔬菜")){
p.put("classify","1");
}else if(objs[1].equals("其他")){
p.put("classify","2");
}
p.put("name",objs[2]); //名称
p.put("num",objs[3]); //数量
p.put("order_by",objs[4]); //排序
p.put("remark",objs[5]); //备注
list.add(p);
}
}
}
Json json = new Json();
if(list.size()>0){
eiedataService.saveImportList(list);
json.setSuccess(flag);
json.setMsg(str);
}else{
json.setSuccess(flag);
json.setMsg(str);
}
this.writeJson(response,json);
}
【列表】导出功能示例代码
@RequestMapping(value = "/exportData", method = RequestMethod.GET)
public void exportData(HttpServletRequest request, HttpServletResponse response, HttpSession session) throws Exception {
PageData pd = new PageData(request);
//处理数据权限
pd = dealDataAuth(pd, session);
List
list = eiedataService.findList(pd);
for (PageData p:list) {
if(p.get("classify").equals("0")){
p.put("classify_name","水果");
}else if(p.get("classify").equals("1")){
p.put("classify_name","蔬菜");
}else if(p.get("classify").equals("2")){
p.put("classify_name","其他");
}
}
Map
【合并单元格】导出功能示例代码
@RequestMapping(value = "/exportMergeData", method = RequestMethod.GET)
public void exportMergeData(HttpServletRequest request, HttpServletResponse response, HttpSession session) throws Exception {
PageData pd = new PageData(request);
//处理数据权限
pd = dealDataAuth(pd, session);
List
list = new ArrayList
();
PageData p1 = new PageData();
p1.put("classify","0");
p1.put("classify_name","水果");
list.add(p1);
PageData p2 = new PageData();
p2.put("classify","1");
p2.put("classify_name","蔬菜");
list.add(p2);
PageData p3 = new PageData();
p3.put("classify","2");
p3.put("classify_name","其他");
list.add(p3);
for (PageData pp:list) {
pd.put("classify",pp.get("classify"));
List
ls = eiedataService.findList(pd);
pp.put("child_list",ls);
}
Map
)pp.get("child_list")).size();
System.out.println(startNum+"------------"+endNum);
sheet.addMergedRegion(new CellRangeAddress(startNum,endNum,0,0));
sheet.addMergedRegion(new CellRangeAddress(startNum,endNum,1,1));
startNum = startNum+((ArrayList
)pp.get("child_list")).size();
}
// sheet.addMergedRegion(new CellRangeAddress(1,3,0,0));
// sheet.addMergedRegion(new CellRangeAddress(1,3,1,1));
//
// sheet.addMergedRegion(new CellRangeAddress(4,5,0,0));
// sheet.addMergedRegion(new CellRangeAddress(4,5,1,1));
//
// sheet.addMergedRegion(new CellRangeAddress(6,7,0,0));
// sheet.addMergedRegion(new CellRangeAddress(6,7,1,1));
OutputStream os = new FileOutputStream(toFile);
workbook.write(os);
is.close();;
os.flush();
FileUtil.downFile(response, toFile, "案例信息-导入导出案例_" + DateTimeUtil.getDateTimeStr() + ".xls");
File file = new File(toFile);
file.delete();
file.deleteOnExit();
}