3

これは私の ExcelController.java です

public ModelAndView generateExcel(HttpServletRequest request,
        HttpServletResponse response) {

    // Created List called 'employeeList'
    model.put("employeeList", employeeList);

    return new ModelAndView("CreateExcel","employeeList",employeeList);
}

これは私の ExcelRevenueReportView.java です

protected void buildExcelDocument(Map<String, Object> model,
        HSSFWorkbook workBook, HttpServletRequest request, HttpServletResponse response)
        throws Exception {
    @SuppressWarnings("unchecked")
    List<Employee> employeeList = (List<Employee>) model.get("employeeList");
    HSSFSheet sheet = workBook.createSheet("Employee List");

    HSSFRow header = sheet.createRow(0);
    header.createCell((short) 0).setCellValue("Employee");

    int rowNum = 1;
    for (Object employee : employeeList) {
        //create the row data
        HSSFRow row = sheet.createRow(rowNum++);
        System.out.println(row);
        row.createCell((short) 0).setCellValue(1);
            }
}

私のservlet.xml

<bean id="multipartResolver"
    class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
</bean>
<bean
    class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping" />

<bean class="com.sort.process.ExcelController" />

<bean class="org.springframework.web.servlet.view.XmlViewResolver">
    <property name="location">
        <value>/WEB-INF/spring-excel-views.xml</value>
    </property>
</bean>

私のspring-excel-views.xml

<context:component-scan base-package="com.sort.process" />
<context:property-placeholder location="conf/log4j.properties" />

<bean id="ExcelRevenueSummary"
    class="com.sort.process.ExcelRevenueReportView">
</bean>

私はこのチュートリアルに従いました。

上記のプロジェクトでは、私は呼び出していないことを知っていますbuildExcelDocument()。それが、Excel シートが生成されていない理由である可能性があり、どこかで呼び出す必要があるかどうかわかりません。
最終的に、この方法で Excel シートを生成できません。
誰でも間違いを見つけることができますか?
または他の可能な提案はありますか?

4

2 に答える 2

7

アノテーションベースのコントローラー構成で、より軽量なアプローチを使用することをお勧めします。その場合は、コントローラーに次のコードを配置するだけです。

@RequestMapping("list/excell")
public View listExcell() {
    return new AbstractExcelView() {
        @Override
        protected void buildExcelDocument(Map<String, Object> model, HSSFWorkbook workbook,
                HttpServletRequest request, HttpServletResponse response) throws Exception {
            HSSFSheet sheet = workbook.createSheet("List of employees");

            setText(getCell(sheet, 0, 0), "Id");
            setText(getCell(sheet, 0, 1), "First name");
            setText(getCell(sheet, 0, 2), "Last name");
            setText(getCell(sheet, 0, 3), "Active");
            setText(getCell(sheet, 0, 4), "Salary");

            List<Employee> employees = dao.listEmployees();
            for (int i = 0; i < employees.size(); i++) {
                Employee employee = employees.get(i);
                setText(getCell(sheet, i + 1, 0), String.valueOf(employee.getId()));
                setText(getCell(sheet, i + 1, 1), employee.getFirstName());
                setText(getCell(sheet, i + 1, 2), employee.getLastName());
                setText(getCell(sheet, i + 1, 3), String.valueOf(employee.isActive()));
                setText(getCell(sheet, i + 1, 4), String.valueOf(employee.getSalary()));
            }
        }
    };
}

コードの問題は、コントローラーで「CreateExcel」という名前のビューを使用しているが、構成ではビューに「ExcelRevenueSummary」という名前を付けていることです。

完全な動作例が必要な場合は、ここで見つけることができます。

于 2012-12-24T11:31:01.277 に答える
2

Excel Export Spring MVCの実例を次に示します。拡張機能に特化している場合は、コードに以下の行を追加できます。

response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-disposition", "attachment; filename=BusinessSegment.xls");

これで、Excel のデータが .xls 拡張子でエクスポートされます。

于 2014-02-14T09:42:56.260 に答える