日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【自用】EasyExcel 表格模板下载及导入

發布時間:2024/3/26 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【自用】EasyExcel 表格模板下载及导入 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

工具類

import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.URLEncoder; import java.util.ArrayList; import java.util.List;import javax.servlet.http.HttpServletResponse;import com.alibaba.excel.EasyExcel; import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener;/*** 高性能處理Excel工具類**/ public class EasyExcelUtil {/*** 使用 模型 來讀取Excel* * @param inputStream Excel的輸入流* @param clazz 模型的類* @return 返回 模型 的列表*/public static <T> List<T> readExcel(InputStream inputStream, Class<T> clazz) {ModelExcelListener<T> listener = new ModelExcelListener<T>();EasyExcel.read(inputStream, clazz, listener).sheet().doRead();return listener.getDatas();}/*** 使用 模型 來導出到WEB* * @param response web的響應* @param data 要寫入的以 模型 為單位的數據* @param fileName 配置Excel的表名* @param sheetName 配置Excel的頁簽名* @param clazz 模型的類* @throws IOException */public static <T> void writeExcel(HttpServletResponse response, List<T> data, Class<T> clazz, String fileName, String sheetName) throws IOException {// 這里注意 有同學反應使用swagger 會導致各種問題,請直接用瀏覽器或者用postmanresponse.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");response.setCharacterEncoding("utf-8");// 這里URLEncoder.encode可以防止中文亂碼 當然和easyexcel沒有關系fileName = URLEncoder.encode(fileName, "UTF-8").replaceAll("\\+", "%20");response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");EasyExcel.write(response.getOutputStream(), clazz).sheet(sheetName).doWrite(data);}/*** 使用 模型 來寫入Excel* <br/>注意,如果是web輸出流,需要設置頭* * @param outputStream Excel的輸出流* @param data 要寫入的以 模型 為單位的數據* @param sheetName 配置Excel的表名字* @param clazz 模型的類*/public static <T> void writeExcel(OutputStream outputStream, List<T> data, Class<T> clazz, String sheetName) {EasyExcel.write(outputStream, clazz).sheet(sheetName).doWrite(data);}/*** 模型 解析監聽器*/private static class ModelExcelListener<T> extends AnalysisEventListener<T> {private List<T> datas = new ArrayList<>();@Overridepublic void invoke(T object, AnalysisContext context) {datas.add(object);}@Overridepublic void doAfterAllAnalysed(AnalysisContext context) {}public List<T> getDatas() {return datas;}}}

模板下載、導出實體定義(實體可以公用)

import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import lombok.Data;@Data @ExcelIgnoreUnannotated //默認情況下Java類中的所有屬性都添加讀寫,在類上面加入@ExcelIgnoreUnannotated注解,加入這個注解后只有加了@ExcelProperty才會參與讀寫。 public class 實體類名 {@TableId(value = "主鍵字段", type = IdType.INPUT)private String xxx;@ExcelProperty(value = "表格模板名字")@TableField(value = "數據庫屬性對應字段")private String xxxx; }

模板下載Controller(接口直接調用工具類即可)

import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.apache.shiro.util.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile;import javax.servlet.http.HttpServletResponse; import java.io.*; import java.util.ArrayList; import java.util.List;/*** @author */ @RestController @RequestMapping("/") @Api(value = "", tags = "") public class Controller {/*** 下載模板*/@PostMapping(value = "/")@ApiOperation(value = "下載導入模板", notes = "下載導入模板")public ResultData downLoadOwnerVehicleForm(HttpServletResponse response) {List<實體> xxxxx= new ArrayList<>();try {EasyExcelUtil.writeExcel(response, ownerVehicleForms, 實體.class, "模板名字", "sheet1");} catch (IOException e) {e.printStackTrace();}return new ResultData<>(ResultData.SUCCESS);}}

表格導入Controller

@PostMapping(value = "/")@ApiOperation(value = "", notes = "")public ResultData xxxxx(@RequestParam MultipartFile file) {byte[] byteArr;try {byteArr = file.getBytes();} catch (IOException e) {throw new xxxException("500", "文件格式轉換異常");}InputStream inputStream = new ByteArrayInputStream(byteArr);List<實體> xxxxxx= null;xxxxxx = EasyExcelUtil.readExcel(inputStream, 實體.class);if (CollectionUtils.isEmpty(xxxxxx)) {throw new xxxException("500", "導入數據不可為空");}//此處拿到導入數據 進入業務層處理return new ResultData<>(ResultData.SUCCESS);}

。。。。業務層省略 根據實際需求處理

可以添加事務回滾
@Transactional(rollbackFor = xxxException.class)

不知道有沒有遺漏的 自用就這樣 隨機應變吧

總結

以上是生活随笔為你收集整理的【自用】EasyExcel 表格模板下载及导入的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 激情超碰| 1024中文字幕| 欧洲视频在线观看 | 在线观看国产黄色 | 在线观看av中文字幕 | www.国产欧美| 日韩欧美精品在线 | 香蕉黄视频 | 一本大道一区二区 | 久久精品成人av | 高潮videossex高潮 | 15—16女人毛片 | 伊人久久中文 | 国产chinesehd精品 | 黑鬼大战白妞高潮喷白浆 | 男女激情四射网站 | 国产影视av | 91免费大片 | 国产精品麻豆一区二区 | 51自拍视频 | 亚洲va在线观看 | china国模大尺度pics | 天海翼视频在线观看 | 色婷婷六月天 | 制服丝袜一区在线 | 中国特级黄色大片 | 欧美在线观看一区 | 精品亚洲乱码一区二区 | 网友自拍第一页 | 黄色精品一区二区 | 欧美丰满老妇熟乱xxxxyyy | 久久人人爽爽人人爽人人片av | 写真福利片hd在线播放 | 999毛片| 91在线高清 | 成人亚洲区 | 91禁在线动漫 | 国产欧美日韩综合精品 | 亚洲人成在线观看 | 欧美大片在线看 | 亚洲综合网在线 | av三级在线观看 | 秋霞欧洲 | 天天干人人 | 国产精品久久久久久久一区探花 | 污免费视频| eeuss鲁片一区二区三区在线观看 | 超碰在线最新 | 青青草97国产精品免费观看 | 欧美老女人性视频 | 福利视频一区二区三区 | 91黄版 | 熟女少妇一区二区 | 欧美日韩第一页 | 欧美日韩一区二区综合 | 国产精品一二三级 | 暖暖av在线 | 免费观看黄色av | 日本韩国三级 | 亚洲天码中字 | 中文字幕在线观看网址 | 欧美少妇激情 | 日韩精品影视 | 草逼视频免费看 | 毛片黄片免费看 | 无遮挡aaaaa大片免费看 | 蜜桃av导航| av天堂永久资源网 | 一区免费在线 | 夜夜欢视频 | 亚洲美女自拍偷拍 | 四虎黄网| 中文字幕欧美人妻精品一区蜜臀 | 高清国产mv在线观看 | 波多野结衣亚洲 | 精品人伦一区二区三区蜜桃免费 | 日本精品在线视频 | 严厉高冷老师动漫播放 | 亚洲熟女乱综合一区二区 | 91精品人妻一区二区三区蜜桃2 | 久久午夜精品人妻一区二区三区 | 麻豆社 | 自拍三级视频 | 懂色av,蜜臀av粉嫩av | 日韩成人免费视频 | 四虎影城库 | 免费看av的网址 | 红桃视频91 | 不卡的av在线播放 | 调教女m荡骚贱淫故事 | 免费毛片一区二区三区 | 91视频在线观看免费 | 欧美日韩制服 | 免费看黄20分钟 | 国产视频首页 | 日本亚洲欧美 | 97中文字幕在线观看 | 无码一区二区三区在线观看 | 久久午夜剧场 |