实体类接收不到前端传递的数据

如果是文件上传页面,前端的文件头设置了
enctype="multipart/form-data"

那么必须在spring配置文件里配置


<!--文件上传-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <property name="defaultEncoding" value="UTF-8"/>
    <property name="maxUploadSize" value="500000"/>
</bean>

红字必须写,我因为没写红字结果无法接收到数据

在使用 FastExcelFactory 通过实体类导出 Excel 模板并传递前端的过程中,主要涉及后端生成模板文件、填充数据、返回文件流以及前端处理下载等步骤。FastExcelFactory 是基于 Apache POI 的封装工具类,能够简化 Excel 的导出操作。 ### 后端实现(Spring Boot) #### 1. 引入依赖 确保项目中包含 FastExcelFactory 所依赖的 Apache POI 相关库。在 `pom.xml` 中添加以下依赖: ```xml <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>5.2.3</version> </dependency> ``` #### 2. 创建实体类 定义一个与 Excel 表格结构对应的 Java 实体类,例如: ```java public class User { private String name; private int age; private String email; // Getters and Setters } ``` #### 3. 使用 FastExcelFactory 导出模板 编写一个工具类或服务类,利用 FastExcelFactory 导出带有表头的 Excel 模板。以下是一个示例方法: ```java import com.alibaba.fastexcel.FastExcelFactory; import com.alibaba.fastexcel.writer.WriteCellStyle; import com.alibaba.fastexcel.writer.WriteFont; import com.alibaba.fastexcel.writer.WriteSheet; import com.alibaba.fastexcel.writer.WriteWorkbook; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.List; public void exportExcelTemplate(HttpServletResponse response, List<User> dataList) { try { // 设置响应头 response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); response.setHeader("Content-Disposition", "attachment; filename=users.xlsx"); // 创建写入配置 WriteWorkbook writeWorkbook = new WriteWorkbook(); writeWorkbook.setOutputStream(response.getOutputStream()); WriteSheet writeSheet = new WriteSheet(); writeSheet.setSheetName("用户列表"); // 设置标题样式(可选) WriteCellStyle headStyle = new WriteCellStyle(); WriteFont headFont = new WriteFont(); headFont.setBold(true); headStyle.setWriteFont(headFont); // 写入数据 FastExcelFactory.write(writeWorkbook) .head(User.class) .sheet(writeSheet) .doWrite(dataList); } catch (IOException e) { e.printStackTrace(); // 处理异常 } } ``` #### 4. 控制器接口 在控制器中暴露一个导出接口,供前端调用: ```java @GetMapping("/export") public void exportUsers(HttpServletResponse response) { List<User> userList = userService.getAllUsers(); // 获取数据 exportExcelTemplate(response, userList); } ``` ### 前端实现(Vue.js 示例) 前端通过 Axios 调用后端接口,接收 Excel 文件流并触发下载操作。 ```javascript export default { methods: { async exportExcel() { try { const response = await axios.get('/api/export', { responseType: 'blob' // 重要:接收二进制流 }); const url = window.URL.createObjectURL(new Blob([response.data])); const link = document.createElement('a'); link.href = url; link.setAttribute('download', 'users.xlsx'); document.body.appendChild(link); link.click(); link.remove(); } catch (error) { console.error('导出失败:', error); } } } }; ``` ### 样式与模板配置(可选) 如果需要导出带有特定样式或固定模板的 Excel 文件,可以先准备一个模板文件,通过 `FileInputStream` 读取并使用 `FastExcelFactory` 进行数据填充: ```java File templateFile = new File("path/to/template.xlsx"); FileInputStream fis = new FileInputStream(templateFile); WriteWorkbook writeWorkbook = new WriteWorkbook(); writeWorkbook.setInputStream(fis); writeWorkbook.setOutputStream(response.getOutputStream()); FastExcelFactory.write(writeWorkbook) .head(User.class) .sheet(new WriteSheet()) .doWrite(dataList); ``` ### 注意事项 - 确保后端接口返回的 `Content-Type` 为 `application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`,以便前端正确识别文件类型。 - 前端下载时应使用 `responseType: 'blob'`,否则无法正确处理二进制文件。 - FastExcelFactory 支持复杂的样式配置,如合并单元格、字体加粗、背景色等,可通过 `WriteCellStyle` 和 `WriteFont` 进行详细设置[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值