<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
頁面中當用戶將excel表格上傳到伺服器後,將該excel檔案儲存在本地然後在伺服器中將excel中的資料讀取出來然後存入資料庫
<dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>3.1.4</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.75</version> </dependency> <!-- 糊塗工具類--> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.8.11</version> </dependency>
檔案上傳的路徑:使用者傳來的檔案存放在哪
# 檔案上傳 spring: servlet: multipart: max-file-size: 5MB max-request-size: 50MB ## 檔案上傳路徑 savepath: C:Users86186Desktoppp
檔案上傳時需要使用到的一些方法
/** * 檔案上傳的工具類 */ public class FileUploadUtil { /** * 得到filename檔名的字尾名 * @param filename 檔名 * aasdsad.jpg asaa.gif * @return */ public static String getFileSuffix(String filename){ if(filename == null || filename.isEmpty()){ throw new RuntimeException("檔名不能為空,filename:"+filename); } return filename.substring(filename.lastIndexOf(".")); } /** * 使用UUID生成一個唯一的字串 * @return */ public static String randomFilename(){ return UUID.randomUUID().toString().replaceAll("-",""); } /** * 基於時間戳生成檔名 * @return */ public static String randomFilename2(){ return System.currentTimeMillis()+""; } /** * 基於時間戳 + UUID生成檔名 * @return */ public static String randomFilename3(){ return System.currentTimeMillis()+randomFilename(); } /** * 建立目錄 */ public static void mkdir(String path){ File file = new File(path); if(!file.exists()){ //不存在 file.mkdirs(); } } /** * 基於當前時間建立檔名 */ public static String getTimeFilename(){ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyy-MM-dd-HH-mm-ss"); Date date = new Date(System.currentTimeMillis()); return simpleDateFormat.format(date)+"-"+randomFilename2(); } }
需要接受前端返回回來的檔案
/** * excel檔案匯入進資料庫中 * @param file * @return */ @Autowired private FileUploadService fileUploadService; @PostMapping("excelImport") public ResponseData excelImport(MultipartFile file) throws Exception { // 由於easyExcel所以需要傳入fileUploadService物件 String upload = fileUploadService.upload(file,fileUploadService); return ResponseDataUtil.buildOk(upload); }
@Service("fileUploadService") @Slf4j public class FileUploadServiceImpl implements FileUploadService { // 注入environment來獲取在組態檔中檔案儲存的路徑 @Autowired private Environment environment; // 注入資料層的物件 @Autowired private productMapper productMapper; @Override public String upload(MultipartFile file, FileUploadService fileUploadService) throws Exception { if (file == null) { throw new Exception("檔案不可以為空"); } //得到上傳的儲存路徑 String savePath = environment.getProperty("savepath"); //建立目錄 FileUploadUtil.mkdir(savePath); String dbPath = ""; //得到上傳的原檔名 String originalFilename = file.getOriginalFilename(); String suffix = FileUploadUtil.getFileSuffix(originalFilename); String filename = FileUploadUtil.getTimeFilename() + suffix; dbPath += filename; //儲存 file.transferTo(new File(savePath, filename)); dbPath = savePath +"\"+ dbPath; //呼叫方法進行讀取 EasyExcel.read(dbPath, ExcelDTO.class, new PageReadListener<ExcelDTO>(dataList -> { for (ExcelDTO demoData : dataList) { log.info("讀取到一條資料{}", JSON.toJSONString(demoData)); insert(demoData); } })).sheet().doRead(); return dbPath; } // 插入資料到資料庫中 @Override public void insert(ExcelDTO excelDTO) { // 使用hutool工具類將excelDTO類轉換成product類,因為product類對應的是資料庫中的欄位 Product product = BeanUtil.copyProperties(excelDTO, Product.class); productMapper.insert(product); } }
@Data public class ExcelDTO { @ExcelProperty("藥品名稱") private String pname; @ExcelProperty("藥品價格") private BigDecimal pprice; @ExcelProperty("藥品數量") private String pcount; @ExcelProperty("藥品描述") private String pdes; @ExcelProperty("藥品類別") private Integer ptype; }
ExcelDTO = excel對應的類
fileUploadService = service物件
@Slf4j @Component public class DataListener extends AnalysisEventListener<ExcelDTO> { public FileUploadService fileUploadService; public DataListener(FileUploadService fileUploadService) { this.fileUploadService = fileUploadService; } public DataListener() { } //讀取excel內容,一行一行讀取 @Override public void invoke(ExcelDTO excelDTO, AnalysisContext analysisContext) { if (excelDTO == null) { try { throw new Exception("檔案資料為空"); } catch (Exception e) { e.printStackTrace(); } } } @Override public void doAfterAllAnalysed(AnalysisContext analysisContext) { } }
以上就是Java+EasyExcel實現檔案上傳功能的詳細內容,更多關於Java EasyExcel檔案上傳的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45