需要导入POI.jar包,下载地址:https://download.csdn.net/download/qq_42694534/10736714
还有上传文件的两个commons-fileupload-1.3.3包、commons-io-2.6包,下载地址:
https://download.csdn.net/download/qq_42694534/10736792
JAVA 使用poi技术处理Excel表导入、导出的包,将其导入到项目的lib的目录下就可以啦,我这里用的是3.9的
/**
* 导入数据(用来处理用户上传的数据)
* @param request
* @param response
* @return
*/
private IModuleDao menuDao = new ModuleDaoImpl();
private Module module = new Module();
private ObjectMapper mapper = new ObjectMapper();
public String add(HttpServletRequest request, HttpServletResponse response){
boolean falg = true;
try {
// 3.设置参数工厂,临时存放上传文件.
DiskFileItemFactory dfif = new DiskFileItemFactory();
// 4.设置工厂临时文件的大小
dfif.setSizeThreshold(1024 * 1024 * 3);
// 5.设置临时文件存储的位置
dfif.setRepository(new File(System.getProperty("java.io.tmpdir")));
// 5创建上传对象
ServletFileUpload fileUpload = new ServletFileUpload(dfif);
// 6设置上传文件大小
fileUpload.setFileSizeMax(1024 * 1024 * 50);
// 7设置表单的大小
fileUpload.setSizeMax(1024 * 1024 * 100);
// 8设置表单字符
fileUpload.setHeaderEncoding("utf-8");
// 10获取上传文件
List<FileItem> fileItems = fileUpload.parseRequest(request);
FileItem fileItem = fileItems.get(0);
/**
* 获取文件后缀
*/
String str = fileItem.getName().substring(fileItem.getName().lastIndexOf("."));
if (str.equals(".xls") || str.equals(".xlsx")) {// 判断上传的文件是不是表格
POIFSFileSystem pfs = new POIFSFileSystem(fileItem.getInputStream());
HSSFWorkbook wb = new HSSFWorkbook(pfs);
//获取工作薄
HSSFSheet sheet=wb.getSheetAt(0);
//声明行对象
HSSFRow row=null;
//通过循环获取每一行
for(int i=0;sheet.getRow(i)!=null;i++){
row=sheet.getRow(i);
//循环获取一行的中列
//将表格中的一行数据看成一个对象,用List<String>去接收
List<String> ls = new ArrayList<>();
for(int j=0;row.getCell(j)!=null;j++){
ls.add(row.getCell(j).toString());
}
//然后一个个加入到module对象中去,在这里要注意一点哦,要做数据类型转换,
//不然会有点小麻烦噢
module.setId(String.valueOf((int)Math.ceil(Double.valueOf(ls.get(0)))));
module.setPid((int)Math.ceil(Double.valueOf(ls.get(1))));
module.setText(ls.get(2));
if(ls.get(3).length()>0) {
module.setUrl(ls.get(3));
}
module.setSort((int)Math.ceil(Double.valueOf(ls.get(4))));
//接着将一个个对象向Dao方法传人,并加入到数据库里去
//这里的Dao呢,就自己写吧,我就不展示咯
menuDao.add(module);
}
} else {
String jsonString = JSON.toJSONString("上传表格可否");
print(jsonString, response);
}}catch (Exception e) {
falg=false;
throw new RuntimeException("上传失败了");
}
String jsonString = JSON.toJSONString(falg);
try {
print(jsonString, response);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}