Java实现Excel文件无乱码下载到客户端

4星 · 超过85%的资源 需积分: 32 188 下载量 162 浏览量 更新于2024-11-16 3 收藏 4KB TXT 举报
在Java编程中,导出Excel文件并将其下载到客户端是一个常见的需求,尤其是在处理数据展示和文件分享时。在这个例子中,开发者实现了一个名为`publicActionForwarddcexcel`的方法,用于处理Excel文件的生成和下载操作。以下是关键知识点的详细解释: 1. **参数获取**: 方法接收四个参数:ActionMapping `mapping`、ActionForm `form`、HttpServletRequest `request` 和 HttpServletResponse `response`。`tablename` 参数用于指定要导出的数据表名,`tiaojian` 参数可能用于筛选数据。 2. **编码处理**: 使用 `URLEncoder.encode()` 方法对文件名进行URL编码,确保在HTTP头信息中传递的文件名是安全的,避免乱码问题。这里将 "excelļ.xls" 编码为 "excel.xls",但需要确保使用的字符集(这里是 "UTF-8")与实际字符集一致。 3. **响应设置**: 在`response`对象上设置了`Content-Disposition`头信息,设置为“attachment”,这使得浏览器会提示用户保存文件,而不是直接显示在页面上。文件名通过`filename`属性传递,使用之前编码过的文件名。另外,设置了`Content-Type`为 "application/vnd.ms-excel",表明返回的是Excel文件类型。 4. **数据查询与导出**: 调用`D_gccz_impo` 类的 `writeExcel()` 方法,该方法需要一个 OutputStream 对象(通过 `response.getOutputStream()` 获取),以及表名和数据列表。如果数据库查询(`d.selectjh()`)返回的结果列表 `lists` 的大小大于0,表示有数据需要导出,就会执行Excel文件的生成并写入到OutputStream。 5. **异常处理**: 方法中包含一个 try-catch 块,捕获可能出现的 Exception 类型的异常,并打印堆栈跟踪。如果在执行到`D_gccz_impo.writeExcel(os, tname, lists)`时抛出异常,代码将不会执行到else部分,而是直接终止并打印错误信息。 总结来说,这段代码的核心功能是利用Java的HttpServletResponse和特定库(如Apache POI或JExcelAPI)将查询结果导出为Excel文件,并通过HTTP响应将文件发送到客户端,同时确保文件名在传输过程中没有乱码问题。这种方式在处理数据报表下载或者需要导出数据至其他应用的场景中非常实用。