Java SpringMVC抽象视图

Java SpringMVC抽象视图,java,spring-mvc,apache-poi,Java,Spring Mvc,Apache Poi,我尝试使用spring的AbstractXlsxView,但它只是提示下载应用程序/八位字节流文件类型,而不是excel文件 ExcelBuilder.java public class ExcelBuilder extends AbstractXlsxView { @Override protected void buildExcelDocument(Map<String, Object> model, Workbook workbook,

我尝试使用spring的AbstractXlsxView,但它只是提示下载应用程序/八位字节流文件类型,而不是excel文件

ExcelBuilder.java

public class ExcelBuilder extends AbstractXlsxView {

    @Override
    protected void buildExcelDocument(Map<String, Object> model,
            Workbook workbook, HttpServletRequest request,
            HttpServletResponse response) throws Exception {

        Sheet latePaymentsSheet = workbook
                .createSheet("Late Payments");
        setLatePaymentHeader(latePaymentsSheet);

        @SuppressWarnings("unchecked")
        Map<String, Object> map = (Map<String, Object>) model.get("map");
        @SuppressWarnings("unchecked")
        List<Map<String, Object>> latePaymentsList = (List<Map<String, Object>>) map
                .get("latePayments");

        setLatePaymentsRow(latePaymentsSheet, latePaymentsList);
    }
@RequestMapping(value = "/export", method = RequestMethod.GET)
public ModelAndView exportToExcel() {

    Map<String,Object> map = Dao.getData()

 return new ModelAndView("ExcelBuilder", "map", map);
}
公共类ExcelBuilder扩展了AbstractXlsxView{
@凌驾
受保护的文档(地图模型,
工作簿,HttpServletRequest请求,
HttpServletResponse)引发异常{
工作表延迟付款工作表=工作簿
.createSheet(“逾期付款”);
设置LatePaymentHeader(latePaymentsSheet);
@抑制警告(“未选中”)
Map=(Map)model.get(“Map”);
@抑制警告(“未选中”)
列表latePaymentsList=(列表)映射
.获得(“延期付款”);
设置LatePaymentsRow(latePaymentsSheet,latePaymentsList);
}
Controller.java

public class ExcelBuilder extends AbstractXlsxView {

    @Override
    protected void buildExcelDocument(Map<String, Object> model,
            Workbook workbook, HttpServletRequest request,
            HttpServletResponse response) throws Exception {

        Sheet latePaymentsSheet = workbook
                .createSheet("Late Payments");
        setLatePaymentHeader(latePaymentsSheet);

        @SuppressWarnings("unchecked")
        Map<String, Object> map = (Map<String, Object>) model.get("map");
        @SuppressWarnings("unchecked")
        List<Map<String, Object>> latePaymentsList = (List<Map<String, Object>>) map
                .get("latePayments");

        setLatePaymentsRow(latePaymentsSheet, latePaymentsList);
    }
@RequestMapping(value = "/export", method = RequestMethod.GET)
public ModelAndView exportToExcel() {

    Map<String,Object> map = Dao.getData()

 return new ModelAndView("ExcelBuilder", "map", map);
}
@RequestMapping(value=“/export”,method=RequestMethod.GET)
公共模型和视图exportToExcel(){
Map Map=Dao.getData()
返回新的ModelAndView(“ExcelBuilder”、“地图”、“地图”);
}
Excel view.xml

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="ExcelBuilder" class="com.test.utility.ExcelBuilder">
    </bean>
</beans>

您可以更改@RequestMapping并添加
products
属性

@RequestMapping(value = "/export", method = RequestMethod.GET, produces="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")

有关其他Mime类型,请参阅。

您可以设置文件类型作为响应,如下所示:

public ModelAndView exportPaymentReport(HttpServletResponse response) {
     response.setContentType( "application/ms-excel" );
     response.setHeader( "Content-disposition", "attachment;filename=myfile.xls" );
}