选择指定的数据easyexcel导出
前端vue
<el-table :data="tableData" style="width: 100%" @selection-change="selectionChange" > <el-table-column type="selection" width="55" align="center" > </el-table-column> <el-table-column width="150px" label="序号" align="center" prop="id" /> <el-table-column align="center" width="200px" label="订单编号" prop="orderId" /> <el-table-column align="center" width="150px" label="订单类型" prop="orderType" /> <el-table-column width="150px" align="center" label="订单动作" prop="orderActions" /> <el-table-column width="150px" align="center" label="业务类型" prop="businessType" /> <el-table-column width="150px" align="center" label="支付方式" prop="paymentMethods" /> <el-table-column width="150px" align="center" label="配送方式" prop="shippingMethods" /> <el-table-column width="150px" align="center" label="订单状态" prop="orderStatus" > <template v-slot="obj"> <el-tag v-if="obj.row.orderStatus==='待出库'" type="warning">待出库</el-tag> <el-tag v-if="obj.row.orderStatus==='已出库'" type="info">已出库</el-tag> <el-tag v-if="obj.row.orderStatus==='已发货'" type="primary">已发货</el-tag> <el-tag v-if="obj.row.orderStatus==='已到货'" type="success">已到货</el-tag> </template> </el-table-column> <el-table-column align="center" label="操作" > <template v-slot="obj"> <el-button type="primary" size="mini" @click="showDetail(obj.row);detailDialogVisible = true">查看 </el-button> <el-button type="success" icon="el-icon-s-promotion" @click="outbound(obj.row)" size="mini">生成销售出库单 </el-button> </template> </el-table-column> </el-table> <!--表单数据-->
前端js传值
methods: { selectionChange(obj){ console.log(obj) this.params = obj; }, async exportExcel(){ this.$axios({ url:'http://localhost:8088/sales/sales-order/export2', method:'post', data:this.params, responseType: 'blob' // responseType: 'arraybuffer' }).then(res=>{ //生成一个a链接 const link = document.createElement("a"); //将后端返回的数据封装为blob let blob = new Blob([res.data], { type: "multipary/form-data" }); link.style.display = "none"; //将返回的数据生成url赋值给a链接 link.href = URL.createObjectURL(blob); link.setAttribute("download", decodeURI('订单详情.xlsx')); document.body.appendChild(link); link.click(); // 下载完成移除元素 document.body.removeChild(link); //下载后释放url对象 window.URL.revokeObjectURL(link.href); console.log(res); }) } }
后端controller中
@RestController
@RequestMapping("/sales/sales-order")
@Slf4j
public class SalesOrderController {
/** * 选择导出 * @param params * @return * @throws IOException */ @RequestMapping("export2") public void writeExcel2(HttpServletResponse response,@RequestBody List<SalesOrder> params) throws IOException { response.setContentType("application/vnd.ms-excel"); response.setCharacterEncoding("utf-8"); //防止中文乱码 String fileName = URLEncoder.encode("订单信息","UTF-8"); response.setHeader("Content-Disposition","attachment;filename*=UTF-8''"+fileName+".xlsx"); ServletOutputStream outputStream = response.getOutputStream(); //工作簿对象 ExcelWriterBuilder writeWorkBook = EasyExcel.write(outputStream,SalesOrder.class); //工作表对象 ExcelWriterSheetBuilder sheet = writeWorkBook.sheet(); //准备数据 //写 sheet.doWrite(params); }
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗