`
jerry_chen
  • 浏览: 282638 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

Excel文件使用Http服务实现下载

    博客分类:
  • JAVA
 
阅读更多

1. Excel文件使用Http服务实现下载

1.1. web.xml文件中注册新建的Servlet

    <!-- ExcelDownloadServlet -->

    <servlet>

        <servlet-name>excelDownloadServlet</servlet-name>

        <servlet-class>

            com.jerry.support.ExcelDownloadServlet

        </servlet-class>

        <load-on-startup>5</load-on-startup>

    </servlet>

    <servlet-mapping>

        <servlet-name>excelDownloadServlet</servlet-name>

        <url-pattern>/excelDownloadServlet</url-pattern>

    </servlet-mapping>

1.2. 创建ExcelDownloadServlet.java类,在容器中查找相应service服务,使用service服务去完成预定的任务

public class ExcelDownloadServlet extends HttpServlet {


    private static final long serialVersionUID = 1L;

   

    IExcelService iEexcelService = ServiceLocator.getInstance().getService("iEexcelService");

       

        response.reset();   // 重置response

        response.setContentType("application/msexcel;charset=\"UTF-8\"");

        response.setHeader("Content-disposition","attachment; filename=IndexModelExcel.xls");

       

        BufferedInputStream in = null;

        BufferedOutputStream out = null;

        try {                      

            String path = iEexcelService.downloadTemplate(request);

            PathUtils utils = new PathUtils();

            File file = new File(utils.getWebRoot() + path);

            in = new BufferedInputStream(new FileInputStream(file));

            out = new BufferedOutputStream(response.getOutputStream());

           

            byte[] buff = new byte[1024];

            while (-1 != in.read(buff)) {

                out.write(buff);

                buff = new byte[1024]; // 需要扩充字符数组

            }

           

            try {

                if (null != in)

                    in.close();

                if (null != out)

                    out.close();

            } catch (IOException e) {

                e.printStackTrace();

            }

            response.flushBuffer();

        } catch (IllegalAccessException e) {

            e.printStackTrace();

        } catch (IOException e) {

            e.printStackTrace();

        }

    }

   

    public void doPost(HttpServletRequest request, HttpServletResponse response) {

        this.doGet(request, response);

    }

}

 

request.getRequestURL():http://200.200.202.189:8081/project /excelDownloadServlet

request.getContextPath():/project

url: http://200.200.202.189:8081/visu/IndexExcel.xls

 

 

1.3.Web工程路径Utils

public class PathUtils {

 

  /**

   * 获取工程类路径(绝对路径)

   *

   * @return

   */

  public String getWebClassesPath() {

      String path = getClass().getProtectionDomain().getCodeSource().getLocation().getPath();

      return path;

  }

 

  /**

   * 获取WEB-INF文件夹路径(绝对路径)

   *

   * @return

   * @throws IllegalAccessException

   */

  public String getWebInfPath() throws IllegalAccessException{

     String path = getWebClassesPath();

     if (path.indexOf("WEB-INF") > 0) {

         path = path.substring(0, path.indexOf("WEB-INF")+8);

     } else {

         throw new IllegalAccessException("路径获取错误");

     }

     return path;

  }

 

  /**

   * 获取WebRoot文件夹路径(绝对路径)

   *

   * @return

   * @throws IllegalAccessException

   */

  public String getWebRoot() throws IllegalAccessException{

     String path = getWebClassesPath();

     if (path.indexOf("WEB-INF") > 0) {

         path = path.substring(0, path.indexOf("WEB-INF/classes"));

     } else {

         throw new IllegalAccessException("路径获取错误");

     }

     return path;

  }

 

  public static void main(String[] args) throws Exception {

      PathUtils utils = new PathUtils();

      System.out.println("1" + utils.getWebClassesPath());

      System.out.println("2" + utils.getWebInfPath());

      System.out.println("3" + utils.getWebRoot());

  }

 

}

 

 

输出:1/E:/Workspaces/MyEclipse/project/WebRoot/WEB-INF/classes/

2/E:/Workspaces/MyEclipse/project/WebRoot/WEB-INF/

          3/E:/Workspaces/MyEclipse/project/WebRoot/

 

1.4. 浏览器远程调用servlet在服务器端生成Excel文件,发生乱码及无法打开Excel文件的问题是因为在生成Excel文件时没有指定文件的编码格式,采用UTF-8的格式

                    File file = new File(realPath);

    file.createNewFile();

    FileOutputStream fos = new FileOutputStream(file);

            OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8");

            osw.write(excelXml);

            osw.flush();

            fos.close();

 

 

分享到:
评论

相关推荐

    生成和下载excel文件 生成和下载excel文件

    本文将详细介绍如何使用C#结合ADO.NET来实现这一功能,包括创建Excel文件、填充数据以及提供下载链接等步骤。 #### 一、连接数据库并获取数据 首先,我们需要建立与数据库的连接,并执行SQL查询来获取所需的数据。...

    Excel文件上传预览示例

    "Excel文件上传预览示例"是一个典型的 ASP.NET C# 应用程序,它展示了如何实现用户上传Excel文件并进行预览的功能。这个功能在很多业务系统中都有广泛的应用,比如数据分析、财务报表、销售统计等。下面将详细解释这...

    使用jsp下载excel文件

    本文档将详细介绍如何使用Java Server Pages (JSP) 实现从服务器端下载Excel文件到客户端的过程。 #### 二、准备工作 1. **环境配置**: - Java 开发工具包 (JDK) - Apache Tomcat 或其他支持 JSP 的 Web 服务器...

    excel文件服务器 excel文件服务器excel文件服务器excel文件服务器excel文件服务器excel文件服务器exc

    5. DataExcel.v1.1.dll:这是另一个版本为1.1的Excel处理库,可能包含了对Excel文件读写的具体实现。 6. DataProject2023.exe和DataExcel.exe:这两个是可执行文件,分别可能是服务器主程序和Excel操作的前端界面。 ...

    使用Springboot实现excel的导入导出

    在Spring Boot中实现Excel的导入导出... filename=employees.xlsx,这样浏览器就会将响应解释为要下载的Excel文件。 将Excel写入响应流: 使用response.getOutputStream()获取输出流,然后将工作簿写入到输出流中.....

    vue实现Excel文件的上传与下载功能的两种方式

    前言项目中使用到比较多的关于Excel的前端上传与下载,整理出来,以便后续使用或分析他人。 1.前端vue:模板下载与导入Excel 导入Excel封装了子组件,点击导入按钮可调用子组件,打开文件上传的对话框,上传成功后...

    SpringBoot实现Excel文件解析

    在Spring Boot框架中,实现Excel文件的解析是一个常见的需求,特别是在数据导入、导出或数据分析的应用场景中。本文将深入探讨如何使用Spring Boot结合Java来处理Excel文件。 首先,我们需要引入处理Excel文件的库...

    java实现文件下载,并弹出保存对话框(Excel)

    本文将深入探讨如何使用Java实现文件下载,并在客户端弹出保存对话框,特别聚焦于Excel文件的处理,这在企业级应用中尤为常见。 ### Java实现文件下载的关键步骤 1. **设置HTTP响应头**:为了触发浏览器的下载行为...

    C++使用com接口对Excel 文件进行常用操作

    openExcel 方法用于打开选择的 Excel 文件,我们使用 MFC 的 CFileDialog 类来实现文件对话框,选择要打开的 Excel 文件。 通过使用 COM 接口,我们可以轻松地操作 Excel 文件,实现对 Excel 文件的各种操作。这种...

    VB.net实现无需安装Excel由代码创建Excel文件纯代码创建Excel文件

    例如,下面是一个简单的示例,展示了如何使用NPOI创建一个包含一行数据的Excel文件: ```vbnet Imports NPOI.SS.UserModel Imports NPOI.HSSF.UserModel Public Class Program Public Shared Sub Main() Dim ...

    asp.net+Ajax实现Excel文件导出

    本篇文章将详细讲解如何利用ASP.NET与Ajax技术实现在Web应用中导出Excel文件。 首先,ASP.NET是Microsoft开发的一个用于构建动态网站、Web应用程序和服务的框架。它基于.NET Framework,提供了丰富的服务器控件、...

    JavaScript 使用ActiveX实现在Excel文件中插入图片

    JavaScript 使用ActiveX实现在Excel文件中插入图片

    LiberOffice实现在线编辑Word和Excel文件的应用

    总结来说,实现LiberOffice在线编辑Word和Excel文件的应用涉及的技术点包括:LiberOffice的OpenDocument格式、Maven构建、Web应用程序开发、文件上传与下载、实时同步、服务进程管理、文件安全存储以及兼容性测试。...

    java解析Excel文件并把数据存入数据库和导出数据为excel文件SpringBoot代码示例

    1、java解析读取excel文件中的数据,并写入数据库。 2、java读取数据库数据,并导出为excel文件。 3、README.md中有详细的操作步骤示例。 使用说明: 1. 先使用postman导入:other/excel相关.postman_collection....

    springboot实现Excel文件导入与导出功能

    springboot实现Excel文件导入与导出功能, 本次任务主要实现两个功能,一是如何将Excel文件导入后台服务器,解析文件中的内容,并且存入数据库中。二是如何将后台数据库中的数据导出为Excel表格。经过调研,实现此...

    ASP生成EXCEL并自动下载

    在本场景中,"ASP生成EXCEL并自动下载"是一个技术主题,涉及到使用ASP编程来创建Excel文件,并允许用户在浏览器中直接下载。这个主题分为两个主要部分: 1. **纯ASP生成并下载EXCEL文件**: 在这部分,我们将探讨...

    java实现mysql数据库的表导出到excel文件

    本文将详细讲解如何使用Java实现从MySQL数据库的表导出到Excel文件的过程,以及涉及到的关键技术和工具。 首先,我们需要了解的是Java与数据库交互的基础——JDBC(Java Database Connectivity)。JDBC是Java API,...

    Python Flask文件下载示例 - excel,pdf, txt, csv

    - Pandas包, 后台实现EXCEL文件生成和写操作。 - csv包,后台实现csv文件生成和写操作。 - reportlab包, 后台实现PDF文件生成和写操作。 - Flask的send_file包, 实现从后端向发送请求的客户端传送文件。 提供了...

    java中将多个excel打包成zip文件下载.rar

    在Java编程环境中,将多个Excel文件打包成ZIP文件并实现下载功能是一项常见的需求,尤其是在数据导出或批量处理场景中。下面将详细讲解这个过程涉及的主要知识点。 首先,我们需要了解Java中的`java.util.zip`包,...

Global site tag (gtag.js) - Google Analytics