代码之家  ›  专栏  ›  技术社区  ›  Casey

将Spring MVC AbstractExcelView与已创建的文档一起使用

  •  2
  • Casey  · 技术社区  · 15 年前

    我正试图使用AbstractExcelView为我在服务器上创建的XLS文档提供服务。有没有一种方法可以将它与已经构建的工作簿一起使用?我尝试了以下方法,但不起作用:

    import java.io.FileInputStream;
    import java.io.InputStream;
    import java.util.Map;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    import org.springframework.web.servlet.view.document.AbstractExcelView;
    
    
    public class ValidationErrorsView  extends AbstractExcelView {
    
    @SuppressWarnings("unchecked")
    @Override
    protected void buildExcelDocument(Map arg0, HSSFWorkbook workbook,     
     HttpServletRequest arg2, HttpServletResponse arg3) 
        throws Exception {
    
        final String toprocess = "myfile.xls";
        final InputStream is = new FileInputStream(toprocess);
        workbook = new HSSFWorkbook (is);
        }
    
    }
    
    2 回复  |  直到 12 年前
        1
  •  4
  •   axtavt    15 年前

    你不需要 AbstractExcelView 为现有文件提供服务。

    • 如果文档在webapp的公用文件夹中,用户可以将其作为静态文件下载。
    • 如果它在 WEB-INF ,您可以使用将请求转发给它 request.getRequestDispatcher(fileName).forward(request, response) .
    • 如果是任意文件,则应打开该文件并将其内容复制到 response.getOutputStream()

    但是,不要忘记设置正确的内容类型: response.setContentType("application/vnd.ms-excel");

        2
  •  3
  •   Sergey Glotov Nitesh Khosla    12 年前
    public class ValidationErrorsView extends AbstractExcelView {
    
        public ValidationErrorsView() {
            super();
            setUrl("/WEB-INF/templates/1.1");
        }
    
        @Override
        protected void buildExcelDocument(Map model, HSSFWorkbook workbook,
                HttpServletRequest request, HttpServletResponse response)
                throws Exception {
    
        }
    }
    

    “1.1”是现有的Excel文件名。

    工作簿-从1.1.xls文件创建。