jeecg 导入、导出 excel

这段代码展示了JeecgBoot项目中QuarantineMemberController、IQuarantineMemberService和QuarantineMemberServiceImpl的实现,用于隔离人员信息的Excel导入和导出。导入功能解析Excel数据并进行业务处理,如身份证转换性别和生日,地址编码转省市区,异常处理等。导出功能根据查询条件生成Excel,包括数据转换和导出配置。

jeecg 导入、导出 excel

1.QuarantineMemberController

    /**
    * 导出excel
    *
    * @param request
    * @param quarantineMember
    */
    //@RequiresPermissions("org.jeecg.modules:quarantine_member:exportXls")
    @RequestMapping(value = "/exportXls")
    public ModelAndView exportXls(HttpServletRequest request, QuarantineMember quarantineMember) {
    
    
//        return super.exportXls(request, quarantineMember, QuarantineMember.class, "quarantine_member");
		return quarantineMemberService.exportingExcel(request, quarantineMember, QuarantineMember.class, "隔离人员");
    }

    /**
      * 通过excel导入数据
    *
    * @param request
    * @param response
    * @return
    */
    //@RequiresPermissions("quarantine_member:importExcel")
    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
    
    
        return quarantineMemberService.importExcel(request, response);
    }

2.IQuarantineMemberService

package org.jeecg.modules.quarantine.service;

import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.quarantine.entity.QuarantineMember;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * @Description: quarantine_member
 * @Author: jeecg-boot
 * @Date:   2022-11-03
 * @Version: V1.0
 */
public interface IQuarantineMemberService extends IService<QuarantineMember> {
    
    
  
    Result<?> importExcel(HttpServletRequest request, HttpServletResponse response);

    ModelAndView exportingExcel(HttpServletRequest request, QuarantineMember quarantineMember, Class<QuarantineMember> quarantineMemberClass, String quarantine_member);

}

3.QuarantineMemberServiceImpl

package org.jeecg.modules.quarantine.service.impl;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.query.QueryGenerator;
import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.common.util.AreaUtil;
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.modules.quarantine.entity.QuarantineMember;
import org.jeecg.modules.quarantine.mapper.QuarantineMemberMapper;
import org.jeecg.modules.quarantine.service.IQuarantineMemberService;
import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
import org.jeecgframework.poi.excel.entity.ExportParams;
import org.jeecgframework.poi.excel.entity.ImportParams;
import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.*;

/**
 * @Description: quarantine_member
 * @Author: jeecg-boot
 * @Date:   2022-11-03
 * @Version: V1.0
 */
@Service
@Slf4j
public class QuarantineMemberServiceImpl extends ServiceImpl<QuarantineMemberMapper, QuarantineMember> implements IQuarantineMemberService {
    
    

    @Autowired
    private QuarantineMemberMapper quarantineMemberMapper;

    /**
     * 导入
     * @param request
     * @param response
     * @return
     */
    @Override
    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
    
    
        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
        Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
        JSONArray areaData = AreaUtil.getAreaData();
        for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
    
    
            // 获取上传文件对象
            MultipartFile file = entity.getValue();
            if(Objects.requireNonNull(file.getContentType()).indexOf("excel") > 0 || Objects.requireNonNull(file.getContentType()).indexOf("sheet") > 0){
    
    
                ImportParams params = new ImportParams();
                params.setTitleRows(1);
                params.setHeadRows(2);
                params.setNeedSave(true);
                try {
    
    
                    List<QuarantineMember> list = ExcelImportUtil.importExcel(file.getInputStream(), QuarantineMember.class, params);
                    //update-begin-author:taoyan date:20190528 for:批量插入数据
                    long start = System.currentTimeMillis();
                    for (int i = 0; i < list.size(); i++) {
    
    
                        QuarantineMember quarantineMember 
提供的参考引用中未提及jeecg-boot框架导入导出功能的使用方法和实现方案相关内容。不过,一般来说,在jeecg-boot框架中实现导入导出功能可参考以下通用方式: ### 使用方法 #### 导出功能 在前端页面通常会有一个导出按钮,点击该按钮触发请求到后端。后端接收到请求后,根据业务逻辑查询相应的数据,将数据处理成合适的格式(如CSV、Excel等),然后返回给前端进行下载。例如在Vue前端代码中可能有如下示例: ```vue <template> <div> <el-button @click="exportData">导出数据</el-button> </div> </template> <script> export default { methods: { exportData() { // 发送导出请求 this.$axios.get('/api/exportData') .then(response => { // 处理响应,实现文件下载 const url = window.URL.createObjectURL(new Blob([response.data])) const link = document.createElement('a') link.href = url link.setAttribute('download', 'data.xlsx') document.body.appendChild(link) link.click() document.body.removeChild(link) }) .catch(error => { console.error('导出失败', error) }) } } } </script> ``` #### 导入功能 前端页面会有一个文件上传的组件,用户选择要导入的文件后,将文件发送到后端。后端接收到文件后,解析文件内容,将数据插入到数据库中。例如在Vue前端代码中可能有如下示例: ```vue <template> <div> <el-upload action="/api/importData" :show-file-list="false" :on-success="handleImportSuccess" :on-error="handleImportError"> <el-button>导入数据</el-button> </el-upload> </div> </template> <script> export default { methods: { handleImportSuccess(response, file, fileList) { console.log('导入成功', response) }, handleImportError(error, file, fileList) { console.error('导入失败', error) } } } </script> ``` ### 实现方案 #### 后端实现 在后端,对于导出功能,可使用Apache POI等库来生成Excel文件。例如使用Spring Boot和MyBatis Plus的后端代码示例: ```java import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.OutputStream; import java.util.List; @RestController public class ExportController { @GetMapping("/api/exportData") public void exportData(HttpServletResponse response) throws IOException { // 查询数据 List<Data> dataList = dataService.getDataList(); // 创建工作簿 Workbook workbook = new XSSFWorkbook(); Sheet sheet = workbook.createSheet("Data"); // 创建表头 Row headerRow = sheet.createRow(0); String[] headers = {"Column1", "Column2", "Column3"}; for (int i = 0; i < headers.length; i++) { Cell cell = headerRow.createCell(i); cell.setCellValue(headers[i]); } // 填充数据 for (int i = 0; i < dataList.size(); i++) { Row row = sheet.createRow(i + 1); Data data = dataList.get(i); row.createCell(0).setCellValue(data.getColumn1()); row.createCell(1).setCellValue(data.getColumn2()); row.createCell(2).setCellValue(data.getColumn3()); } // 设置响应头 response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); response.setHeader("Content-Disposition", "attachment; filename=data.xlsx"); // 输出文件 OutputStream outputStream = response.getOutputStream(); workbook.write(outputStream); workbook.close(); outputStream.flush(); outputStream.close(); } } ``` 对于导入功能,同样可使用Apache POI来解析Excel文件,将数据插入到数据库中。 #### 前端实现 前端主要负责文件的选择和上传,使用axios等工具将文件发送到后端。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值