中国电子工程师网,优化深圳seo,自己做网站费用,wordpress如何qq登录界面虽然标题叫标准化#xff0c;只不过是我自己的习惯#xff0c;当一件事情变得流程标准化之后#xff0c;开发程序就会飞快#xff0c;开发评估工作总是 搞个1~2天#xff0c;实则前端后端一起开发#xff0c;1个小时就可以搞定。 1 前端
const exportXls async () …虽然标题叫标准化只不过是我自己的习惯当一件事情变得流程标准化之后开发程序就会飞快开发评估工作总是 搞个1~2天实则前端后端一起开发1个小时就可以搞定。 1 前端
const exportXls async () {var now moment(new Date()).format(YYYYMMDDHHMMSS)let name 商品收发明细表.xlsconst res await proxy.$api.invOrder.goodsRdDetail.export({...condForm.value})let data res.data;let url window.URL.createObjectURL(new Blob([data], ))let link document.createElement(a)link.style.display nonelink.href url;console.log(link);link.setAttribute(download, now name)document.body.appendChild(link)link.click()document.body.removeChild(link)
}请求的代码如下
public postOnlyFile (url: string, data {} , config: AxiosRequestConfigany {}): Promiseany axios({...this.baseConfig,headers:{...this.baseConfig.headers,Content-Type: application/json},responseType:blob,url,method: post,data,...config,})2 后端 controller层基本就是复制粘贴传参数给到service层而已。 PostMapping(export)ApiOperation(导出商品收发明细表)public void export(RequestBody PsiInvOrderReportCondDto condDto, HttpServletResponse response){//设置响应头response.setContentType(application/vnd.ms-excel);response.setCharacterEncoding(utf-8);//设置防止文件名中文乱码try {//设置防止文件名中文乱码String fileName URLEncoder.encode(商品收发明细表, utf-8);response.setHeader(Content-disposition, attachment;filename fileName .xlsx);//if (!CheckEmptyUtil.isEmpty(condDto.getBillDateRange())){condDto.setStartBillDate(condDto.getBillDateRange().get(0));condDto.setEndBillDate(condDto.getBillDateRange().get(1));}goodsRdDetailService.export(response.getOutputStream(),xls/GoodsRdDetail.xls, condDto);} catch (Exception e) {log.error(e.getMessage(), e);}}service层主要通过easyexcel填充数据
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.excel.write.metadata.fill.FillConfig;Overridepublic void export(OutputStream outputStream, String pathName, PsiInvOrderReportCondDto condDto) {ListGoodsRdDetailListDto goodsRdDetailListDtos select(condDto);int line 1;for (GoodsRdDetailListDto goodsRdDetailListDto:goodsRdDetailListDtos){goodsRdDetailListDto.setLine(String.valueOf(line));goodsRdDetailListDto.setBillDateStr(DateUtil.formatDate(goodsRdDetailListDto.getBillDate()));BusinessTypeEnum businessTypeEnum BusinessTypeEnum.getInvBusinessTypeEnum(goodsRdDetailListDto.getBusiType());goodsRdDetailListDto.setBusiType(businessTypeEnum.display());}org.springframework.core.io.Resource resource new ClassPathResource(pathName);InputStream inputStream null;String fileName DateUtil.getDateRandom() .xls;File file new File(TmpDic.url File.separator fileName);try {inputStream resource.getInputStream();FileUtils.copyInputStreamToFile(inputStream, file);} catch (IOException e) {e.printStackTrace();}ExcelWriter excelWriter EasyExcel.write(outputStream).withTemplate(file).build();FillConfig fillConfig FillConfig.builder().forceNewRow(Boolean.TRUE).build();//WriteSheet sheet0 EasyExcel.writerSheet(0,单据明细不合并表头)//单元格
// .registerWriteHandler(new CustomCellWriteHandler()).build();excelWriter.fill(goodsRdDetailListDtos, fillConfig, sheet0);//PsiAccountSet psiAccountSet psiAccountSetService.getById(condDto.getAsId());GoodsRdDetailExcelHeaderDto excelHeaderDto new GoodsRdDetailExcelHeaderDto();excelHeaderDto.setCompanyName(psiAccountSet.getName());excelHeaderDto.setStartBillDate(DateUtil.formatDate(condDto.getStartBillDate()));excelHeaderDto.setEndBillDate(DateUtil.formatDate(condDto.getEndBillDate()));excelWriter.fill(excelHeaderDto,sheet0);//excelWriter.finish();file.delete();}3 excel模板 定义excel模板就是上面的xls/GoodsRdDetail.xls