项目中遇到将查询结果导出为一个excel文件,当动态生成的文件名为英文时成功生成,文件名为中文的再次导出浏览器就出一些莫名其妙的问题(导出文件不是一个excel),问题处理方法如下:
action中的代码片段:
System.out.println("exportExcel");
String ruleId = request.getParameter("ruleId");
String ruleName = request.getParameter("ruleName");
String ruleType = request.getParameter("ruleType");
String statisticDate = request.getParameter("statisticDate");
String smsCount = request.getParameter("smsCount");
try{
HSSFWorkbook workBook = new HSSFWorkbook();
HSSFSheet sheet = workBook.createSheet();
HSSFRow row0 = sheet.createRow(0);
row0.createCell((short)0).setCellValue("规则编号");
row0.createCell((short)1).setCellValue("规则名称");
row0.createCell((short)2).setCellValue("规则类型");
row0.createCell((short)3).setCellValue("发送日期");
row0.createCell((short)4).setCellValue("发送数量");
HSSFRow row1 = sheet.createRow(1);
row1.createCell((short)0).setCellValue(ruleId);
row1.createCell((short)1).setCellValue(ruleName);
row1.createCell((short)2).setCellValue(ruleType);
row1.createCell((short)3).setCellValue(statisticDate);
row1.createCell((short)4).setCellValue(smsCount);
response.reset(); //清空输出流
//response.setHeader("Content-disposition", "attachment; filename=短信自动发送-"+ruleName+"-"+statisticDate+".xls");
String fileName = "短信自动发送-"+ruleName+"-"+statisticDate;
response.setHeader("Content-disposition", "attachment; filename="+StringtoUTF8.toUtf8String(fileName)+".xls");
response.setContentType("application/ms-excel;charset=GBK");
ServletOutputStream out = response.getOutputStream();
workBook.write(out);
out.flush();
out.close();
处理中文的类:
写道
public class StringtoUTF8 {
public static String toUtf8String(String s) {
StringBuffer sb = new StringBuffer();
for (int i=0;i<s.length();i++){
char c = s.charAt(i);
if (c >= 0 && c <= 255) {
sb.append(c);
} else {
byte[] b;
try {
b = Character.toString(c).getBytes("utf-8");
} catch (Exception ex) {
System.out.println(ex);
b = new byte[0];
}
for (int j = 0; j < b.length; j++) {
int k = b[j];
if (k < 0) k += 256;
sb.append("%" + Integer.toHexString(k).
toUpperCase());
}
}
}
return sb.toString();
}
经过上面 StringtoUTF8 处理过的中文字符串可以正常导出excel,问题解决。
分享到:
相关推荐
这个实例提供了两种方法来导出Excel文件:通过Servlet和通过main方法。这两种方法都是在Java环境中操作Excel数据的有效方式。 首先,让我们详细了解一下Apache POI库。POI提供了一个API,允许开发者在Java应用程序...
本场景中,"servlet+api导出excel"指的是利用Servlet API来实现从数据库(这里是Oracle)中获取数据并导出为Excel文件供用户下载的功能。下面将详细解释这个过程涉及的技术点。 首先,我们需要了解Servlet API的...
本文将详细介绍如何使用Java实现将数据导出为Excel文件,并且能够被浏览器正确下载,同时解决中文乱码问题。 #### 技术选型 为了实现这一目标,我们主要采用以下技术栈: - **服务器端**:Java Servlet API,用于...
- **文件验证**:确保上传的文件类型为Excel,防止恶意文件的上传,可以通过文件扩展名和MIME类型双重验证。 - **权限控制**:限制文件大小,防止DoS攻击,同时考虑用户上传文件后的访问权限,避免未授权访问。 -...
- 使用`createSheet()`方法创建名为“report”的工作表。 3. **填充表头**: - 创建第0行用于存放表头。 - 遍历`tableHeadList`并为每个表头创建一个单元格,设置其类型为字符串。 4. **填充数据行**: - 从第...
其中,“application/vnd.ms-excel”表示数据应被解释为Excel文件,而“charset=UTF-8”则指定了字符编码,确保中文等非英文字符能正确显示。 2. **编写响应体内容:** 在页面中编写用于输出Excel的数据,这些...
在实际业务中,有时我们需要处理Excel文件,例如导入数据到系统或者导出系统数据为Excel报表。本篇文章将探讨如何在JSP中实现Excel文件的导入和导出,主要依赖于开源库Java Excel API(jExcelApi)。 Java Excel ...
总结起来,这个例子展示了如何利用Apache POI将数据库查询结果导出为Excel文件供用户下载。这在数据分析、报表生成或数据交换场景中非常常见,因为Excel提供了灵活的格式化和分析功能。通过熟练掌握Apache POI,...
在实际使用中,我们可以通过创建一个名为`Easy_poi_Util.java`的类,来封装Easy-Poi的基本操作。例如,我们可以创建一个方法用于导出Excel: ```java import cn.afterturn.easypoi.excel.ExcelExportUtil; import ...
在这段代码中,我们首先创建了一个`HSSFWorkbook`对象,然后通过该对象创建了一个名为“HelloSheet”的工作表。接着,我们创建了第一行和第一个单元格,并设置了单元格的值。最后,我们通过`FileOutputStream`将整个...
例如,你可以创建一个名为`Export.java`的类,该类包含一个方法,接收前端传递的数据,然后使用POI创建一个`HSSFWorkbook`对象(对于老版本的Excel,或者`XSSFWorkbook`对于新版本),接着添加工作表,设置列头,...
JXL库是一个Java库,专门用于读写Microsoft Excel文件,它为开发者提供了一种便捷的方式来处理Excel数据,无需依赖Microsoft Office。本篇将详细介绍如何使用JXL库来导出Excel数据表,并结合描述中的信息,探讨其...
这个名为"dlExlTest"的文件可能是项目的主测试类或者包含测试数据的文件。在实际项目中,你可能需要根据具体业务逻辑调整数据的生成和导出方式。 通过以上的知识讲解,你应该能理解如何在JavaWeb环境中使用Apache ...
这段代码会创建一个名为"output.xlsx"的Excel文件,并在其中填充一行数据。在实际应用中,你可以根据需要动态生成多行多列的数据。 然后,为了在网页中打开这个Excel文件,可以使用JavaScript的`window.open()`函数...
在Web开发中,经常需要将服务器上生成的数据导出为Excel文件供用户下载。本文档将详细介绍如何使用Java Server Pages (JSP) 实现从服务器端下载Excel文件到客户端的过程。 #### 二、准备工作 1. **环境配置**: -...
这个方法通常会接收一些参数,比如要导出的数据列表,然后将这些数据转化为Excel格式: ```java import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.spring...
在IT行业中,JFinal是一个基于Java的轻量级Web开发框架,它以其高效、简洁而深受开发者喜爱。本文将深入探讨如何使用JFinal实现Excel的...通过实践和理解这个示例,你可以熟练掌握在JFinal项目中导出Excel文件的方法。
在Web开发中,经常需要将数据导出为Excel格式提供给用户下载。本篇将详细阐述如何利用Java Server Pages(JSP)配合Apache POI库来实现这一功能。具体而言,我们将通过分析提供的代码片段,了解如何使用Apache POI来...
// 创建一个名为"Sheet1"的工作表 Row row = sheet.createRow(0); // 创建第一行 Cell cell = row.createCell(0); cell.setCellValue("Hello, Spring MVC & Apache POI!"); // 将工作簿写入文件 try ...