Spring boot实现Excel的导入导出(表连接)

今天完成一个小项目,通过xls一键导入导出数据

导入在线

在这里插入图片描述

导出

前端代码:

此代码是一键导出或是多选导出,需要自己获取id

	exportExcels: function () {   //选择导出    实体要写@ExcelResources(title="用户名",order=1) 1是第一列存入的值,如果实体不写会导出数据有条数,但没有值
	//alert(getSelectedRowsdao().length);
	var arr =0;
	arr=getSelectedRowsdao();
	if(arr==""||arr==null){
		window.top.location.href = baseURL + "platform/student/exportExcel?token="+token;
	}else{
		var id=arr.join(",");
		window.top.location.href = baseURL + "platform/student/exportExcels?token="+token+"&id="+id;
	}

后端 控制器代码:

实体类要写@ExcelResources(title=“用户名”,order=1),tiele导出后的列名,1就是是导出后的第几列 必须写,否则导出后不出数据

在这里插入图片描述

重点,导出全部的方式是要自己定义的,选择导出是可以用已经给出的方法

//导出
	/**
	 * 导出用户
	 * @throws IOException 
	 */
	@Log("导出用户")
	@RequestMapping("/exportExcel")
	//@RequiresPermissions("sys:user:exportExcel")
	public void exportExcel(HttpServletResponse response) throws IOException{
		Map<String, Object> params = new HashMap<String, Object>();
		List<TimsStu> stuList = (List<TimsStu>)timsStuService.queryList(params);//把表全部信息存到集合里
		//querList需要自己写方法,就是查询全部
		OutputStream os = response.getOutputStream();
        
		Map<String, String> map = new HashMap<String, String>();
        map.put("title", "用户信息表");
        map.put("total", stuList.size()+" 条");
        //map.put("date", DateUtils.format(new Date(), DateUtils.DATE_TIME_PATTERN));
        
        //响应信息,弹出文件下载窗口
        response.setContentType("application/vnd.ms-excel");
        response.setHeader("Content-Disposition",  "attachment; filename="+ URLEncoder.encode("用户信息表.xls", "UTF-8"));  

        ExcelTemplate et = ExcelUtil.getInstance().handlerObj2Excel("web-info-template.xls", stuList, TimsStu.class, true);
        et.replaceFinalData(map);
        et.wirteToStream(os);
        os.flush();
        os.close();
	}
	/**
	 * 选择导出用户
	 * @throws IOException 
	 */
	@Log("选择导出用户")
	@RequestMapping("/exportExcels")
	//@RequiresPermissions("sys:user:exportExcel")
	public String exportExcels(HttpServletResponse response,HttpServletRequest req) throws IOException{
		Map<String, Object> params = new HashMap<String, Object>();
		String ids=req.getParameter("id");   //获取前端传来的字符串
		List<TimsStu> stuList =null;
		
			String[] studentIds=ids.split(",");
			int arr[]=new int[studentIds.length];
			for (int i = 0; i < arr.length; i++)   // 
				arr[i]=Integer.parseInt(studentIds[i]);
			
			List<Long> id=new ArrayList<Long>();
			for (int i = 0; i < arr.length; i++) {
				id.add((long) arr[i]);
			}
			
			 stuList =timsStuService.selectBatchIds(id);//方法是已经定义好的
		
		
		
		OutputStream os = response.getOutputStream();
        
		Map<String, String> map = new HashMap<String, String>();
        map.put("title", "用户信息表");
        map.put("total", stuList.size()+" 条");
        //map.put("date", DateUtils.format(new Date(), DateUtils.DATE_TIME_PATTERN));
        
        //响应信息,弹出文件下载窗口
        response.setContentType("application/vnd.ms-excel");
        response.setHeader("Content-Disposition",  "attachment; filename="+ URLEncoder.encode("用户信息表.xls", "UTF-8"));  

        ExcelTemplate et = ExcelUtil.getInstance().handlerObj2Excel("web-info-template.xls", stuList, TimsStu.class, true);
        et.replaceFinalData(map);
        et.wirteToStream(os);
        os.flush();
        os.close();
        return "1";
	}

表连接的数据导出,需要在dao(xml)里面定义方法,用选择用户控制器方法,把Service方法改成自己新定义的就可以了(可以用图中给出的selectBatchIds重写,这样写好就可以直接用)

在这里插入图片描述

导入

pom文件需要配置一下

<dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>3.17</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>4.0.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>4.0.0</version>
 </dependency>

前端 代码:

<input type="file" class="form-control" name="file" id="file" >
daoru:function(){   //导入
 var form = new FormData();
         form.append("file", document.getElementById("file").files[0]);
          $.ajax({
              url: baseURL + 'platform/cla/daoru',        //后台url
              data: form,
              cache: false,
              async: false,
              type: "POST",                   //类型,POST或者GET
              dataType: 'json',              //数据返回类型,可以是xml、json等
              processData: false,
              contentType: false,
              success: function (data) {      //成功,回调函数                    
                  	alert("cj");
                  	if(data=="1"){
                  		alert("成功");
                  	}
              },
              error: function (er) {          //失败,回调函数
             	 alert(JSON.stringify(er));
              }
          });
		},

控制器 代码:

注释了比较多,比较精简 for循环里是获取值,重点

//导入
	@RequestMapping("/daoru")
	public String daoru(@RequestParam("file") MultipartFile file,HttpServletRequest request){
		  String contentType = file.getContentType();
	        String fileName = file.getOriginalFilename();
	        if (file.isEmpty()) {
	            return "文件为空!";
	        }
	        try {
	            //根据路径获取这个操作excel的实例
	            HSSFWorkbook wb = new HSSFWorkbook(file.getInputStream()); //根据页面index 获取sheet页
	            HSSFSheet sheet = wb.getSheetAt(0);
	            //实体类集合
	            List<TmisCla> importDatas = new ArrayList<>();
	            HSSFRow row = null;
	            //循环sesheet页中数据从第二行开始,第一行是标题
	            for (int i = 1; i < sheet.getPhysicalNumberOfRows(); i++) {
	                //获取每一行数据
	                row = sheet.getRow(i);
	                TmisCla data = new TmisCla();
	                //data.setTmisClaid(Integer.valueOf((int) row.getCell(0).getNumericCellValue()));;
	                data.setTmisClaname(row.getCell(1).getStringCellValue());
	                data.setTmisCaid(Integer.valueOf((int) row.getCell(2).getNumericCellValue()));
//	                data.setContent(row.getCell(2).getStringCellValue());
//	                data.setAuthor(row.getCell(3).getStringCellValue());
//	                data.setU_id(Integer.valueOf((int) row.getCell(5).getNumericCellValue()));
//	                data.setC_id(Integer.valueOf((int) row.getCell(6).getNumericCellValue()));
	                SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	                //data.setAddtime(new java.sql.Timestamp(df.parse(df.format(HSSFDateUtil.getJavaDate(row.getCell(4).getNumericCellValue()))).getTime()));
	                importDatas.add(data);
	                tmisClaService.insert(data);  //调用添加方法,此方式是自带方法
	            }
	            //循环展示导入的数据,实际应用中应该校验并存入数据库
//	            for (TmisCla imdata : importDatas) {
//	                SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
//	                System.out.println("ID:"+imdata.getTimsSname());
//	            }
	        } catch (Exception e) {
	            e.printStackTrace();
	        }
		return "1";
	}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!关于Spring BootExcel导入导出,可以使用Apache POI库来实现。下面是一个简单的示例代码: 1. 添加依赖: 在pom.xml文件中添加以下依赖: ```xml <dependencies> <!-- Spring Boot Web --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- Apache POI --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.2</version> </dependency> </dependencies> ``` 2. 创建Excel导出接口: ```java import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import javax.servlet.http.HttpServletResponse; import java.io.IOException; @Controller @RequestMapping("/excel") public class ExcelController { @GetMapping("/export") public void exportExcel(HttpServletResponse response) throws IOException { // 创建工作簿 Workbook workbook = new XSSFWorkbook(); // 创建工作 Sheet sheet = workbook.createSheet("Sheet1"); // 创建行 Row row = sheet.createRow(0); // 创建单元格并设置值 Cell cell = row.createCell(0); cell.setCellValue("Hello, Excel!"); // 设置响应头 response.setHeader("Content-Disposition", "attachment; filename=example.xlsx"); response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); // 将工作簿写入响应流 workbook.write(response.getOutputStream()); // 关闭工作簿 workbook.close(); } } ``` 3. 运行Spring Boot应用并访问导出接口: 启动Spring Boot应用后,可以通过访问`http://localhost:8080/excel/export`来导出Excel文件。 以上是一个简单的示例,您可以根据自己的需求进行修改和扩展。希望对您有帮助!如有任何问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值