以上代码放入接口中调用就可以生成一个Excel表的模板吗
时间: 2024-04-11 20:33:12 浏览: 115
是的,您可以将上述代码放入一个接口中,当用户访问该接口时,会生成并提供一个 Excel 表的模板文件供用户下载。
以下是一个简单的示例,展示了如何使用Spring Boot框架创建一个接口,该接口在访问时生成并提供 Excel 模板文件的下载:
```java
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.core.io.InputStreamResource;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
@Controller
public class ExcelTemplateController {
@GetMapping("/downloadTemplate")
public ResponseEntity<InputStreamResource> downloadTemplate() throws IOException {
// 创建工作簿
Workbook workbook = new XSSFWorkbook();
// 创建工作表
Sheet sheet = workbook.createSheet("Sheet1");
// 创建行并设置单元格内容
Row row = sheet.createRow(0);
Cell cell = row.createCell(0);
cell.setCellValue("姓名");
// 设置单元格格式
CellStyle style = workbook.createCellStyle();
Font font = workbook.createFont();
font.setBold(true);
style.setFont(font);
cell.setCellStyle(style);
// 将工作簿转换为字节数组
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
workbook.write(outputStream);
byte[] bytes = outputStream.toByteArray();
// 关闭资源
outputStream.flush();
outputStream.close();
workbook.close();
// 创建输入流资源
InputStreamResource resource = new InputStreamResource(new ByteArrayInputStream(bytes));
// 设置响应头部信息
HttpHeaders headers = new HttpHeaders();
headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=template.xlsx");
// 返回响应实体
return ResponseEntity.ok()
.headers(headers)
.contentLength(bytes.length)
.contentType(MediaType.parseMediaType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"))
.body(resource);
}
}
```
在这个示例中,我们使用了Spring Boot框架创建了一个名为`ExcelTemplateController`的控制器类。控制器中的`downloadTemplate()`方法处理了用户访问`/downloadTemplate`路径时的请求,并生成了一个 Excel 模板文件。最后,我们将模板文件以字节数组的形式返回给用户,供其下载。
请注意,此示例中使用的是`application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`媒体类型,适用于Excel 2007及更高版本的`.xlsx`文件格式。如果您的需求是支持Excel 2003及更低版本的`.xls`文件格式,您需要相应地进行调整。
当用户访问 `/downloadTemplate` 路径时,将会触发 `downloadTemplate()` 方法生成并下载 Excel 模板文件。
希望这个示例对您有所帮助!如有任何其他问题,请随时提问。
阅读全文