导入功能实现失败....
首先是导入失败的问题,点击导入后显示报错信息,并如图显示。
其次是这个文件不是存放在upload文件下,而是直接存在d盘且文件名为uploaodxxxxxx,这俩问题怎么解决呢



0
收起
正在回答 回答被采纳积分+1
3回答
慕前端6228120
2018-12-21 14:27:51
Excelservice.java:
package org.imooc.service;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
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.ss.usermodel.WorkbookFactory;
import org.imooc.dto.ImportExcelParamDto;
import org.imooc.dto.ImportExcelResultDto;
import org.imooc.entity.Student;
import org.imooc.util.FileUtil;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class ExcelService {
public ImportExcelResultDto imp(ImportExcelParamDto dto){
ImportExcelResultDto result=new ImportExcelResultDto();
result.setTitle(dto.getTitle());
List<Student> studentlist=new ArrayList<>();
result.setStudentList(studentlist);
String filename=FileUtil.save(dto.getExcel(),FileUtil.savepath());
if(filename!=null){
Workbook workbook = null;
try {
workbook=WorkbookFactory.create(new File(FileUtil.savepath()+ filename));
Sheet sheet=workbook.getSheetAt(0);
int rowNum=sheet.getLastRowNum();
for (int i = 1; i <=rowNum ; i++) {
Row row=sheet.getRow(i);
Student student=new Student();
studentlist.add(student);
student.setName(row.getCell(0).getStringCellValue());
student.setAge((int)row.getCell(1).getNumericCellValue());
student.setTime(row.getCell(2).getDateCellValue());
}
} catch (Exception e) {
result.setMsg("解析Excel失败!");
e.printStackTrace();
}
finally {
if(workbook != null){
try {
workbook.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
return result;
}
}
importexcelservlet.java:
package org.imooc.servlet;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.imooc.dto.ImportExcelParamDto;
import org.imooc.dto.ImportExcelResultDto;
import org.imooc.dto.ParamDto;
import org.imooc.service.ExcelService;
import org.imooc.util.RequestUtil;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class ImportExcelServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
if(ServletFileUpload.isMultipartContent(req)){
ParamDto dto=RequestUtil.parseParam(req);
ImportExcelParamDto paramdto=new ImportExcelParamDto();
paramdto.setTitle(dto.getParamMap().get("title"));
paramdto.setExcel(dto.getFileMap().get("excel"));
ExcelService service=new ExcelService();
ImportExcelResultDto resultDto=service.imp(paramdto);
req.setAttribute("result",resultDto);
}
else{
}
req.getRequestDispatcher("/WEB-INF/jsp/importExcelResult.jsp").forward(req,resp);
}
}
requestutil:
package org.imooc.util;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.imooc.dto.ParamDto;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.util.List;
public class RequestUtil {
/**
* 从request流中解析参数与上传的文件
* @param request
*/
public static ParamDto parseParam(HttpServletRequest request) {
ParamDto result = new ParamDto();
ServletFileUpload upload = new ServletFileUpload(new DiskFileItemFactory());
upload.setHeaderEncoding("UTF-8");
try {
List<FileItem> fileItemList = upload.parseRequest(request);
for(FileItem fileItem : fileItemList) {
if(fileItem.isFormField()) {
result.getParamMap().put(fileItem.getFieldName(),fileItem.getString("UTF-8"));
} else {
result.getFileMap().put(fileItem.getFieldName(),fileItem);
}
}
} catch (FileUploadException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
}
fileutil;
package org.imooc.util;
import org.apache.commons.fileupload.FileItem;
import java.io.File;
public class FileUtil {
//上传文件的保存路径
public static final String savepath(){
return "d:/upload/";
}
//保存上传的文件
public static String save(FileItem fileItem, String path){
String fileName=System.currentTimeMillis()+"_"+fileItem.getName();
try {
fileItem.write(new File(path+fileName));
} catch (Exception e) {
e.printStackTrace();
}
return fileName;
}
}
这四个文件行嘛,功能实现主要是靠这四个吧
慕前端6228120
2018-12-21 12:05:31
..........经过下一课的学习,问题二已经没问题了
从网页搭建入门Java Web2018版
- 参与学习 人
- 提交作业 1088 份
- 解答问题 10204 个
如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星