Struts2下载浏览器没响应,求指教解决问题思路
我看别人之前写的代码,发现仔细比对后一样的,而且与我自己的代码能替换部分进行了替换,发现还是不行。本地有Excel生成,并且数据正常,就是浏览器没反应。
大家先看我代码struts2的配置文件
在看我的代码部分:
`
public InputStream getDownloadFile() throws Exception {
// 第一步,创建一个webbook,对应一个Excel文件
HSSFWorkbook wb = new HSSFWorkbook();
// 第二步,在webbook中添加一个sheet,对应Excel文件中的sheet
HSSFSheet sheet = wb.createSheet("数据表");
// 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制short
HSSFRow rowTitle = sheet.createRow((int) 0);
HSSFRow rowTime = sheet.createRow((int) 1);
HSSFRow rowEmpty = sheet.createRow((int) 2);
HSSFRow row = sheet.createRow((int) 3);
// 第四步,创建单元格,并设置值表头 设置表头居中
HSSFCellStyle styleTitle = wb.createCellStyle();
styleTitle.setAlignment(HSSFCellStyle.ALIGN_LEFT);
// 标题字体
HSSFFont fontTitle = wb.createFont();
// fontTitle.setColor(HSSFColor.VIOLET.index);
fontTitle.setFontHeightInPoints((short) 15);
fontTitle.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
styleTitle.setFont(fontTitle);
HSSFCellStyle style = wb.createCellStyle();
// 表头字体
HSSFFont font = wb.createFont();
font.setFontHeightInPoints((short) 10);
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
font.setColor(HSSFColor.WHITE.index);// 白色头文字
style.setFont(font);
// 设置这些样式
style.setFillForegroundColor(HSSFColor.DARK_TEAL.index);
style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
style.setBorderRight(HSSFCellStyle.BORDER_THIN);
style.setBorderTop(HSSFCellStyle.BORDER_THIN);
style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
// 内容字体
HSSFCellStyle styleContent = wb.createCellStyle();
styleContent.setAlignment(HSSFCellStyle.ALIGN_LEFT);
HSSFFont fontContent = wb.createFont();
fontContent.setFontHeightInPoints((short) 9);
styleContent.setFont(fontContent);
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
String tsStartTime = df.format(datestart);
String tsEndTime = df.format(dateend);
HSSFCell cellTilte = rowTitle.createCell((short) 0);
cellTilte.setCellValue("易宝数据报表");
cellTilte.setCellStyle(styleTitle);
HSSFCell cellTime = rowTime.createCell((short) 0);
cellTime.setCellValue("查询日期: " + tsStartTime + " - "+ tsEndTime);
cellTime.setCellStyle(styleTitle);
HSSFCell cell = row.createCell((short) 0);
cell.setCellValue("序号");
cell.setCellStyle(style);
cell = row.createCell((short) 1);
cell.setCellValue("下单时间");
cell.setCellStyle(style);
cell = row.createCell((short) 2);
cell.setCellValue("支付时间");
cell.setCellStyle(style);
cell = row.createCell((short) 3);
cell.setCellValue("商户订单号");
cell.setCellStyle(style);
cell = row.createCell((short) 4);
cell.setCellValue("订单金额");
cell.setCellStyle(style);
cell = row.createCell((short) 5);
cell.setCellValue("收款方名称");
cell.setCellStyle(style);
cell = row.createCell((short) 6);
cell.setCellValue("订单状态");
cell.setCellStyle(style);
cell = row.createCell((short) 7);
cell.setCellValue("支付类型");
cell.setCellStyle(style);
cell = row.createCell((short) 8);
cell.setCellValue("大客户编码");
cell.setCellStyle(style);
cell = row.createCell((short) 9);
cell.setCellValue("PNR");
cell.setCellStyle(style);
cell = row.createCell((short) 10);
cell.setCellValue("起始票号");
cell.setCellStyle(style);
cell = row.createCell((short) 11);
cell.setCellValue("终止票号");
cell.setCellStyle(style);
List<Object[]> lstData = SearchRes();// 获取要下载的数据
List list = new ArrayList();
int intNo = 1;
for (Object[] obj : lstData) {
AirLineDownloadDatas data = new AirLineDownloadDatas();
data.setNo(String.valueOf(intNo));
data.setOrderingTime(obj[0].toString());
data.setPayTime(obj[1].toString());
data.setMerchantOrderId(obj[2].toString());
data.setOrderAmount(obj[3].toString());
data.setPayeeName(obj[4].toString());
if (obj[5].toString().equals("0")){
data.setOrderState("等待出票");
}else if (obj[5].toString().equals("1")){
data.setOrderState("已支付");
}else if (obj[5].toString().equals("2")){
data.setOrderState("已出票");
}else if (obj[5].toString().equals("3")){
data.setOrderState("已退款");
}else{
data.setOrderType(obj[5].toString());
}
if (obj[6].toString().equals("0")){
data.setOrderType("会员支付");
}else if (obj[6].toString().equals("1")){
data.setOrderType("银行卡支付");
}else{
data.setOrderType(obj[6].toString());
}
data.setBigCustomerId(obj[7].toString());
data.setPNR(obj[8].toString());
data.setTicketNoStart(obj[9].toString());
data.setTicketNoEnd(obj[10].toString());
list.add(data);
intNo++;
}
for (int i = 0; i < list.size(); i++) {
row = sheet.createRow((int) i + 4);// 从第四行开始
AirLineDownloadDatas dataGet = (AirLineDownloadDatas) list.get(i);
// 第四步,创建单元格,并设置值
row.createCell((short) 0).setCellValue(dataGet.getNo());
row.createCell((short) 1).setCellValue(dataGet.getOrderingTime());
row.createCell((short) 2).setCellValue(dataGet.getPayTime());
row.createCell((short) 3)
.setCellValue(dataGet.getMerchantOrderId());
row.createCell((short) 4).setCellValue(dataGet.getOrderAmount());
row.createCell((short) 5).setCellValue(dataGet.getPayeeName());
row.createCell((short) 6).setCellValue(dataGet.getOrderState());
row.createCell((short) 7).setCellValue(dataGet.getOrderType());
row.createCell((short) 8).setCellValue(dataGet.getBigCustomerId());
row.createCell((short) 9).setCellValue(dataGet.getPNR());
row.createCell((short) 10).setCellValue(dataGet.getTicketNoStart());
row.createCell((short) 11).setCellValue(dataGet.getTicketNoEnd());
}
sheet.setColumnWidth((short) 0, 3500);
sheet.setColumnWidth((short) 1, 5000);
sheet.setColumnWidth((short) 2, 5000);
sheet.setColumnWidth((short) 3, 5000);
sheet.setColumnWidth((short) 4, 3500);
sheet.setColumnWidth((short) 5, 3500);
sheet.setColumnWidth((short) 6, 3500);
sheet.setColumnWidth((short) 7, 2500);
sheet.setColumnWidth((short) 8, 5000);
sheet.setColumnWidth((short) 9, 2500);
sheet.setColumnWidth((short) 10, 5000);
sheet.setColumnWidth((short) 11, 5000);
try {
String strFn = java.util.UUID.randomUUID().toString()
.replaceAll("-", "");
String strOutFn = GlobalParams.strPath + strFn + ".xls";// "/mnt/temp/"
// + strFn +
// ".xls";//
//这个地方在本地都已经生成了文件,数据也正常
FileOutputStream fout = new FileOutputStream(strOutFn);
wb.write(fout);
fout.close();
ActionContext.getContext().getSession().put("file", strOutFn);
this.fileName = "Excel" + df.format(new Date()).toString() + ".xls";
this.fileName = new String(this.fileName.getBytes("GBK"),
"ISO-8859-1");
//就是这块,debug调试没问题,不知道为啥浏览器就没反应
//而且之前的代码也是这么写的,浏览器是可以的,不知道为啥突然就不行了
File file = new File(strOutFn);
this.fileLength = file.length() + "";
InputStream is = new FileInputStream(file);
return is;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
`
求大神给出解决问题的思路或指教下错误的地方,谢谢!
瞪大我的星星眼
9 years, 5 months ago