export to excel using jquery ajax call in spring mvc

在Spring MVC中,你可以使用以下步骤导出Excel文件并使用jQuery AJAX调用:

在服务器端,创建一个Spring MVC控制器处理Excel导出请求。该控制器应该返回Excel文件的字节数组,这可以通过在Spring MVC控制器方法上使用@ResponseBody注解来实现。

在控制器方法中使用Apache POI或JExcelAPI等Java库来生成Excel文件。

创建一个JavaScript函数,在该函数中使用jQuery AJAX调用控制器方法,并将响应作为Excel文件下载到客户端。

以下是示例代码:

Controller方法:

@RequestMapping(value = "/exportToExcel", method = RequestMethod.GET)
public @ResponseBody byte[] exportToExcel() throws IOException {
    // generate Excel file using Apache POI or JExcelAPI
    byte[] excelBytes = ...
    // set response headers
    HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
    headers.setContentDispositionFormData("attachment", "export.xlsx");
    return excelBytes;

JavaScript函数:

function exportToExcel() {
    $.ajax({
        url: "/exportToExcel",
        type: "GET",
        success: function(response, status, xhr) {
            // create a Blob object from the byte array
            var blob = new Blob([response], {type: xhr.getResponseHeader("content-type")});
            // create a temporary URL for the Blob object
            var url = URL.createObjectURL(blob);
            // create a link to download the Excel file
            var link = document.createElement("a");
            link.href = url;
            link.download = "export.xlsx";
            link.click();
        error: function(xhr, status, error) {
            console.error(error);

在上面的代码中,控制器方法使用@ResponseBody注解返回Excel文件的字节数组。在JavaScript函数中,我们使用jQuery AJAX调用该方法,并在成功回调函数中将响应作为Blob对象下载到客户端。

请注意,由于浏览器的安全策略限制,JavaScript代码不能直接保存文件到本地文件系统。因此,我们创建一个临时URL并使用HTML5下载属性下载文件。

  •