gpt4 book ai didi

excel - Groovy/Grails文档下载

转载 作者:行者123 更新时间:2023-12-02 15:21:05 25 4
gpt4 key购买 nike

我目前正在使用Grails开发Web应用程序。要求之一是生成excel时间表并下载后记。
这是我从grails Controller 下载的代码。

response.contentType = "application/vnd.ms-excel"
response.setHeader("Content-Disposition","attachment;filename=name.xls")
response.outputStream << wb.bytes
response.outputStream.flush()

但是我的Excel文件已损坏。我可以使用开放式办公室来打开它,但是不能使用Microsoft Office或Google Drive来打开它。看起来xls文件的内容格式不正确。
如果我保存文档而不是下载一切都可以。
 FileOutputStream fileOut = new FileOutputStream("name.xls")
wb.write(fileOut)
fileOut.close()

我无法弄清楚为什么以字节数组形式下载时文件内容损坏了。

Grails版本-2.3.7
Apache POI版本-3.13

提前致谢,

方法代码
   def generate(){

TimeSheetExportWrapper timeSheet = new TimeSheetExportWrapper()
bindData(timeSheet, params.ts)

HSSFWorkbook wb = excelExportService.createExcelTimeSheet(getCurrentTenant(), timeSheet, getCurrentTimezone())

response.contentType = "application/vnd.ms-excel"
response.setHeader("Content-Disposition", "attachment;filename=${timeSheet.proposedFileName}")
response.outputStream << wb.bytes
response.outputStream.flush()
}

最佳答案

您应该做一些事情:

首先,设置内容长度:response.setHeader("Content-Length", "${wb.bytes.length}")
其次,关闭输出:response.outputStream.close()
最后,请确保您使用return null以确保Grails不会尝试呈现 View 。

   def generate(){

TimeSheetExportWrapper timeSheet = new TimeSheetExportWrapper()
bindData(timeSheet, params.ts)

HSSFWorkbook wb = excelExportService.createExcelTimeSheet(getCurrentTenant(), timeSheet, getCurrentTimezone())

response.contentType = "application/vnd.ms-excel"
response.setHeader("Content-Length", "${wb.bytes.length}")
response.setHeader("Content-Disposition", "attachment;filename=${timeSheet.proposedFileName}")
response.outputStream << wb.bytes
response.outputStream.flush()
response.outputStream.close()
return null
}

关于excel - Groovy/Grails文档下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36156391/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com