国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

導(dǎo)出excel,導(dǎo)出模板Excel(雙工作蒲)壓縮文件導(dǎo)出(即下載文件)

這篇具有很好參考價(jià)值的文章主要介紹了導(dǎo)出excel,導(dǎo)出模板Excel(雙工作蒲)壓縮文件導(dǎo)出(即下載文件)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

/**
	 * 導(dǎo)出報(bào)告
	 */
	@GetMapping("/report")
	@ApiOperationSupport(order = 17)
	@ApiOperation(value = "導(dǎo)出報(bào)告", notes = "傳入ids")
	public void exportReport(@RequestParam String ids, HttpServletResponse response) {
		List<FlangeJoint> joints = flangeJointService.listByIds(Func.toLongList(ids));

		String uuid = UUID.randomUUID().toString();
		ClassPathResource classPathResource = new ClassPathResource("templates/report-tpl.xlsx");

		Path zipPath = Paths.get(pathProperties.getReport(), uuid+".zip");
		File zipFile = zipPath.toFile();
		if(zipFile.exists()){
			zipFile.delete();//如果文件存在則先刪除舊的文件
		}

		List<File> files = null;
		try{
			if(!zipFile.getParentFile().exists()){
				Files.createDirectories(zipPath.getParent());
			}
//			if(!zipFile.exists()){
//				Files.createFile(zipPath);
//			}

			files = joints.stream()
				.filter(j -> j.getStatus() == 4)
				.map(joint -> {
					FlangeJointVO flangeJointVO = new FlangeJointVO();
					BeanUtil.copy(joint, flangeJointVO);
					String jointNo = joint.getJointNo();
					String packageNo = joint.getPackageNo();
					String fileName = packageNo + "-" + jointNo + ".xlsx";
					Path filePath = Paths.get(pathProperties.getReport(), uuid, fileName);
					File file = filePath.toFile();

					InputStream is = null;
					FileOutputStream fos = null;
					try{
						if(!file.getParentFile().exists()){
							Files.createDirectories(filePath.getParent());
						}
						if(!file.exists()){
							Files.createFile(filePath);
						}

						is = classPathResource.getInputStream();
						fos = new FileOutputStream(file);
						ExcelWriter excelWriter = EasyExcel.write(file).withTemplate(is).build();

						WriteSheet sheetE = EasyExcel.writerSheet(0).build();
						WriteSheet sheetC = EasyExcel.writerSheet(1).build();

						Long projectId = joint.getProjectId();
						ProjectInfo projectInfo = projectInfoService.getById(projectId);
						if (projectInfo!=null){
							flangeJointVO.setCustName(projectInfo.getCustName());
							flangeJointVO.setProjectName(projectInfo.getName());
							flangeJointVO.setProjectAddress(projectInfo.getAddress());
							flangeJointVO.setDate(LocalDate.now().toString());
						}
						String faceEast = flangeJointVO.getFaceEast();
						String faceNorth = flangeJointVO.getFaceNorth();
						String faceSouth = flangeJointVO.getFaceSouth();
						String faceWest = flangeJointVO.getFaceWest();
						String offsetEast = flangeJointVO.getOffsetEast();
						String offsetNorth = flangeJointVO.getOffsetNorth();
						String offsetSouth = flangeJointVO.getOffsetSouth();
						String offsetWest = flangeJointVO.getOffsetWest();
						if ("ACC".equals(faceEast) && "ACC".equals(faceNorth) && "ACC".equals(faceSouth) && "ACC".equals(faceWest)){
							flangeJointVO.setFlangeFace("Good");
							if ("ACC".equals(offsetEast) && "ACC".equals(offsetNorth) && "ACC".equals(offsetSouth) && "ACC".equals(offsetWest)){
								flangeJointVO.setFlangeAlighment("Good");
							}else {
								flangeJointVO.setFlangeAlighment("Fail");
							}
						}else {
							flangeJointVO.setFlangeFace("Fail");
							flangeJointVO.setFlangeAlighment("Fail");
						}
						int sno = reportSnoService.getSno(projectId);
						flangeJointVO.setReportNo(String.format("%05d", sno));
						Integer passPressure1 = flangeJointVO.getPassPressure1();
						Integer passPressure2 = flangeJointVO.getPassPressure2();
						flangeJointVO.setRightActualTorque(flangeJointVO.getActualTorque());
						if (passPressure1!=null || passPressure2!=null){
							flangeJointVO.setRightActualTorque(null);
							flangeJointVO.setBoltLoad(null);
						}else {
							flangeJointVO.setActualTorque(null);
							flangeJointVO.setPassPressure1(null);
							flangeJointVO.setPassPressure2(null);
							flangeJointVO.setBoltStress(null);
						}
						excelWriter.fill(flangeJointVO, sheetE);
						excelWriter.fill(flangeJointVO, sheetC);
						excelWriter.finish();
					}catch(Exception e1){
						e1.printStackTrace();
					}finally{
						if(fos != null) try{ fos.close(); }catch(Exception e2){e2.printStackTrace();}
						if(is != null) try{ is.close(); }catch(Exception e3){e3.printStackTrace();}
					}
					return file;
				}).collect(Collectors.toList());

			ZipUtil.zipFile(files, zipPath.toFile().getAbsolutePath());
		}catch(Exception e){
			e.printStackTrace();
		}finally {
			if(files != null){
				for(File f : files){
					if(f.exists()) f.delete();
				}
			}
			Path dirPath = Paths.get(pathProperties.getReport(), uuid);
			if(dirPath.toFile().exists()){
				dirPath.toFile().delete();
			}
		}

		//下載文件
		InputStream inStream = null;
		try {
			if(!zipFile.exists()){
				return ;
			}
			inStream = new FileInputStream(zipFile);
			response.reset();
			response.setContentType("application/zip");
			response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(zipFile.getName(), "UTF-8"));
			response.setCharacterEncoding("UTF-8");
			IoUtil.copy(inStream, response.getOutputStream());
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if (inStream != null) {
				try { inStream.close(); } catch (IOException e) { e.printStackTrace(); }
			}
		}
	}

下面是文件表格和entity對(duì)象文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-527000.html

@Data
@TableName("t_flange_joint")
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "FlangeJoint對(duì)象", description = "法蘭節(jié)點(diǎn)表")
public class FlangeJoint extends BaseEntity {

    private static final long serialVersionUID = 1L;

    /**
     * 所屬項(xiàng)目
     */
    @ApiModelProperty(value = "所屬項(xiàng)目")
    private Long projectId;
    /**
     * 節(jié)點(diǎn)編號(hào)
     */
    @ApiModelProperty(value = "節(jié)點(diǎn)編號(hào)")
    private String jointNo;
    /**
     * 管線編號(hào)
     */
	@TableField(updateStrategy = FieldStrategy.IGNORED)
    @ApiModelProperty(value = "管線編號(hào)")
    private String lineNo;
    /**
     * 包編號(hào)
     */
    @ApiModelProperty(value = "包編號(hào)")
    private String packageNo;
    /**
     * 圖紙編號(hào)
     */
    @ApiModelProperty(value = "圖紙編號(hào)")
    private String isometricNo;
    /**
     * 節(jié)點(diǎn)序列號(hào)
     */
	@TableField(updateStrategy = FieldStrategy.IGNORED)
    @ApiModelProperty(value = "節(jié)點(diǎn)序列號(hào)")
    private String labelNo;
    /**
     * 節(jié)點(diǎn)類型
     */
    @ApiModelProperty(value = "節(jié)點(diǎn)類型")
    private String jointType;
    /**
     * pid
     */
    @ApiModelProperty(value = "pid")
    private String pid;
    /**
     * 法蘭尺寸
     */
    @ApiModelProperty(value = "法蘭尺寸")
    private String flangeSize;
    /**
     * 法蘭磅級(jí)
     */
    @ApiModelProperty(value = "法蘭磅級(jí)")
    private String flangeRating;
    /**
     * 法蘭材質(zhì)
     */
	@TableField(updateStrategy = FieldStrategy.IGNORED)
    @ApiModelProperty(value = "法蘭材質(zhì)")
    

到了這里,關(guān)于導(dǎo)出excel,導(dǎo)出模板Excel(雙工作蒲)壓縮文件導(dǎo)出(即下載文件)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Java下載excel模板文件

    Java下載excel模板文件

    最近做了一個(gè)導(dǎo)入Excel的功能,需求: 先提供一個(gè)下載Excel模板的功能。 用戶下載好模板后,可以在模板文件當(dāng)中填寫要上傳的內(nèi)容,填寫完過(guò)后再進(jìn)行導(dǎo)入Excel,然后將用戶填寫的數(shù)據(jù)保存到數(shù)據(jù)庫(kù)當(dāng)中。 1.將模板放到resources目錄下,盡量創(chuàng)建一個(gè)專門的文件夾來(lái)存放模板

    2024年02月15日
    瀏覽(92)
  • Java下載Excel模板文件的實(shí)現(xiàn)

    Java下載Excel模板文件的實(shí)現(xiàn)

    在項(xiàng)目中經(jīng)常會(huì)用到文件下載的功能,比如下載excel模板,這里簡(jiǎn)單記錄一下實(shí)現(xiàn)過(guò)程 1、將模板文件放到項(xiàng)目資源文件目錄中,也可以自定義其他位置,只要通過(guò)路徑能找到該文件就行: ?2、controller層寫下載的接口 3、前端直接調(diào)用這個(gè)接口就可以實(shí)現(xiàn)下載啦

    2024年02月11日
    瀏覽(25)
  • 后端:使用easyExcel實(shí)現(xiàn)解析Excel文件讀取數(shù)據(jù)。前端:Excel模板下載、前端上傳文件

    后端:使用easyExcel實(shí)現(xiàn)解析Excel文件讀取數(shù)據(jù)。前端:Excel模板下載、前端上傳文件

    ????????本篇是EasyExcel快速入門知識(shí),講解如何讀取Excel文件,對(duì)Excel中錯(cuò)誤信息如空字符、必填項(xiàng)為空、表格格式校驗(yàn)做到處理?,并給出了實(shí)際項(xiàng)目中示例代碼;為什么要使用easyexcel;原因是相比于poi,easyexcel更加輕量級(jí),讀取寫入API方便,并且在工作中占用內(nèi)存較??;

    2024年02月05日
    瀏覽(37)
  • #vue3 實(shí)現(xiàn)前端下載excel文件模板功能

    #vue3 實(shí)現(xiàn)前端下載excel文件模板功能

    一、需求: 前端無(wú)需通過(guò)后端接口,即可實(shí)現(xiàn)模板下載功能。 通過(guò)構(gòu)造一個(gè) JSON 對(duì)象,使用前端常用的 第三方庫(kù) xlsx ,可以直接將該 JSON 對(duì)象轉(zhuǎn)換成 Excel 文件,讓用戶下載模板 二、效果: 三、源碼如下:

    2024年01月19日
    瀏覽(124)
  • vue+xlsx實(shí)現(xiàn)前端模版下載、導(dǎo)入和導(dǎo)出excel文件

    vue+xlsx實(shí)現(xiàn)前端模版下載、導(dǎo)入和導(dǎo)出excel文件

    產(chǎn)品需求:后端不想寫下載,導(dǎo)入和導(dǎo)出的接口,讓我們前端自己實(shí)現(xiàn)。 這里我們就可以用xlsx插件來(lái)實(shí)現(xiàn),我們不多說(shuō)了,先放一下實(shí)現(xiàn)的圖片,下面我們分別把模版下載、導(dǎo)入和導(dǎo)出的代碼放上來(lái),想用的話,直接復(fù)制粘貼即可! 模版下載圖片 導(dǎo)出圖片: 好了,下面我

    2024年02月13日
    瀏覽(93)
  • Post 和 Get 兩種方式實(shí)現(xiàn)數(shù)據(jù)導(dǎo)出Excel文件并下載

    Post 和 Get 兩種方式實(shí)現(xiàn)數(shù)據(jù)導(dǎo)出Excel文件并下載 前端使用Vue,后端使用Springboot。 一般而言,使用post方式是比較方便的。但有時(shí)候,需要下載的數(shù)據(jù)在后端進(jìn)行查詢的時(shí)候很比較復(fù)雜的查詢條件,而這個(gè)查詢條件是前端進(jìn)行下載請(qǐng)求的時(shí)候傳遞的參數(shù),如果參數(shù)比較復(fù)雜或參

    2024年02月11日
    瀏覽(22)
  • 快速上手Django(九) -Django下載文件、Django上傳文件、Django實(shí)現(xiàn)excel導(dǎo)入導(dǎo)出

    快速上手Django(九) -Django下載文件、Django上傳文件、Django實(shí)現(xiàn)excel導(dǎo)入導(dǎo)出

    在實(shí)際的項(xiàng)目中很多時(shí)候需要用到下載功能,如導(dǎo)excel、pdf或者文件下載。 1. Django下載文件方案和思路 將文件作為響應(yīng)返回給用戶:這是最常用的下載文件方法。你可以編寫一個(gè)視圖函數(shù),在該函數(shù)中將文件作為響應(yīng)返回給用戶。 使用第三方庫(kù),如您需要支持?jǐn)帱c(diǎn)續(xù)傳或并發(fā)

    2024年02月05日
    瀏覽(89)
  • js將后端返回的文件流導(dǎo)出為excel,并自定義下載文件名

    js將后端返回的文件流導(dǎo)出為excel,并自定義下載文件名

    一. 需求 后臺(tái)管理系統(tǒng),常會(huì)出現(xiàn)導(dǎo)出excel表格功能;點(diǎn)擊導(dǎo)出按鈕,請(qǐng)求后端接口,需要將接口返回的 文件流 導(dǎo)出為excel,實(shí)現(xiàn)前端下載excel文件。 但是,返回的數(shù)據(jù)獲取 response 時(shí)出現(xiàn)亂碼,如圖: 二. 實(shí)現(xiàn)思路 調(diào)用后端下載接口,獲取傳遞過(guò)來(lái)的二進(jìn)制數(shù)據(jù)流 創(chuàng)建 a 標(biāo)

    2024年02月05日
    瀏覽(166)
  • vue-cli4前端實(shí)現(xiàn)下載本地Excel模板,以及下載靜態(tài)文件的坑

    vue-cli4前端實(shí)現(xiàn)下載本地Excel模板,以及下載靜態(tài)文件的坑

    a標(biāo)簽的下載功能: 1:bobl ----二進(jìn)制流文件 Blob對(duì)象標(biāo)識(shí)一個(gè)不可變、原始數(shù)據(jù)的類文件對(duì)象。Blob表示的不一定是JavaScript原生格式的數(shù)據(jù) 2:responseType responseType它表示服務(wù)器響應(yīng)的數(shù)據(jù)類型,由于后臺(tái)返回來(lái)的是二進(jìn)制數(shù)據(jù),所以要把它設(shè)為‘blob’ 通過(guò)設(shè)置responseType為blo

    2024年02月02日
    瀏覽(119)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包