怎样才能点击一个超链接之后, IE就会弹出一个提示框,询问你是要保存还是要打开这个Excel文件。我自己的思路是:点击这个超链接之后,进入到action中:
在action中从数据库中获取数据之后。然后将数据添加到excel中去。
File f = new File("E:\\ContractStat.xls");
workbook = Workbook.createWorkbook(f);
worksheet = workbook.createSheet("record", 0);
这样写的话就将excel的路径写死了,请问用什么方法可以将这个路径写成有选择性的。
在action中从数据库中获取数据之后。然后将数据添加到excel中去。
File f = new File("E:\\ContractStat.xls");
workbook = Workbook.createWorkbook(f);
worksheet = workbook.createSheet("record", 0);
这样写的话就将excel的路径写死了,请问用什么方法可以将这个路径写成有选择性的。
response.setHeader("Content-disposition","attachment;filename="+filename+".xls");
这样IE就会弹出一个提示框,询问你是要保存还是要打开这个Excel文件,生成文件路径由你自己选啊
前面那个,然后在新的jsp里面加上这段话即可:
java.text.SimpleDateFormat tempDate = new java.text.SimpleDateFormat(
"yyyyMMddHHmmss");
String time = tempDate.format(new Date());
String fileName = "用户基本信息_" + time + ".xls";
fileName = new String(fileName.getBytes("GBK"), "ISO8859_1");
response.setHeader("Content-Disposition", "attachment;filename="
+ fileName);response.setDateHeader("Expires", 0);
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Pragma", "no-cache");看你具体的需求吧 这是大概的思路
workbook = Workbook.createWorkbook(“路径”);这句代码里面的路径放什么?
而且这个路径是有选择性的,可以选择电脑的任何盘里面。
/**
* 导出Excel统计结果方法
*/
public ActionForward doExcel(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
Date date = new Date();
SimpleDateFormat time = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss"); response.setContentType("application/octet-stream; charset=UTF-8");
String s = "attachment;filename=" + time.format(date) + ".xls";
response.setHeader("Content-Disposition", s);
// 获取统计条件
String name = request.getParameter("name");// 表格名称
String tjfs = request.getParameter("tjfs");// 统计类型 1-部门,0-个人
String xs = request.getParameter("xs");// 检查方式
String start = request.getParameter("start");// 统计开始时间
String end = request.getParameter("end");// 统计结束时间
String mx = request.getParameter("mx");// 是否显示明细
if (mx == null) {// 初始化为不显示明细
mx = "0";
}
request.setAttribute("tjfs", tjfs);
request.setAttribute("mx", mx);
request.setAttribute("xs", xs);
request.setAttribute("start", start);
request.setAttribute("end", end); List titles = jzkhtzdService.getTitles(tjfs, mx);// 根据统计类型,是否显示明细获取不同的表头
List datas = new ArrayList(); // 导出Execl表
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("sheet1"); sheet.setColumnWidth((short) 0, (short) 6000);// 给工作表列定义列宽
sheet.setColumnWidth((short) 1, (short) 3000);// 给工作表列定义列宽
HSSFRow row1 = sheet.createRow(0);
HSSFCellStyle cellStyle = wb.createCellStyle(); // 创建单元格样式
cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 指定单元格居中对齐
cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 指定单元格垂直居中对齐 HSSFFont font = wb.createFont(); // 设置单元格字体
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
font.setFontName("宋体");
font.setFontHeight((short) 200);
cellStyle.setFont(font); if (tjfs != null && tjfs.equals("1") && mx.equals("1")) {// 导出详细信息表格
datas = jzkhtzdService.getXxTjList(xs, start, end);
HSSFCell cell = null;
for (int i = 0; i < titles.size(); i++) {// 设置表头
cell = row1.createCell((short) i);
cell.setCellStyle(cellStyle); // 设置表头样式
String str = (String) titles.get(i);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);// 设置cell编码解决中文高位字节截断
cell.setCellValue(str);
} for (int i = 0; i < datas.size(); i++) {
Jzkhtj tj = (Jzkhtj) datas.get(i);
HSSFRow row = sheet.createRow(i + 1);
HSSFCell dataCell1 = row.createCell((short) 0);
dataCell1.setEncoding(HSSFCell.ENCODING_UTF_16);// 设置cell编码解决中文高位字节截断 HSSFCell dataCell2 = row.createCell((short) 1);
dataCell2.setEncoding(HSSFCell.ENCODING_UTF_16);// 设置cell编码解决中文高位字节截断 HSSFFont font2 = wb.createFont();
font2.setColor(HSSFColor.BLUE.index);
HSSFCellStyle cellStyle2 = wb.createCellStyle();// 创建考核单位单元格显示样式;
cellStyle2.setFont(font2);
if (tj.getFlag() != null && tj.getFlag().equals("1")) {// 考核单位
dataCell1.setCellValue(tj.getTjlx());
dataCell1.setCellStyle(cellStyle2);
dataCell2.setCellValue("");
} else if (tj.getFlag() != null && tj.getFlag().equals("0")) {// 考核人员
dataCell1.setCellValue("");
dataCell2.setCellValue(tj.getTjlx());
} HSSFCell dataCell3 = row.createCell((short) 2);
dataCell3.setEncoding(HSSFCell.ENCODING_UTF_16);// 设置cell编码解决中文高位字节截断
dataCell3.setCellValue(tj.getCounts()); HSSFCell dataCell4 = row.createCell((short) 3);
dataCell4.setEncoding(HSSFCell.ENCODING_UTF_16);// 设置cell编码解决中文高位字节截断
dataCell4.setCellValue(tj.getJljes()); HSSFCell dataCell5 = row.createCell((short) 4);
dataCell5.setEncoding(HSSFCell.ENCODING_UTF_16);// 设置cell编码解决中文高位字节截断
dataCell5.setCellValue(tj.getKfjes());
}
try {
wb.write(response.getOutputStream());
} catch (IOException e) {
e.printStackTrace();
} } else {
datas = jzkhtzdService.getTjList(tjfs, xs, start, end);// 获取统计所有数据
HSSFCell cell = null;
for (int i = 0; i < titles.size(); i++) {// 设置表头
cell = row1.createCell((short) i);
cell.setCellStyle(cellStyle); // 设置表头样式
cell.setEncoding(HSSFCell.ENCODING_UTF_16);// 设置cell编码解决中文高位字节截断
String str = (String) titles.get(i);
cell.setCellValue(str);
} for (int i = 0; i < datas.size(); i++) {
Jzkhtj tj = (Jzkhtj) datas.get(i);
HSSFRow row = sheet.createRow(i + 1);
HSSFCell dataCell1 = row.createCell((short) 0);
dataCell1.setEncoding(HSSFCell.ENCODING_UTF_16);// 设置cell编码解决中文高位字节截断
dataCell1.setCellValue(tj.getTjlx());
HSSFCell dataCell2 = row.createCell((short) 1);
dataCell2.setEncoding(HSSFCell.ENCODING_UTF_16);// 设置cell编码解决中文高位字节截断
dataCell2.setCellValue(tj.getCounts());
HSSFCell dataCell3 = row.createCell((short) 2);
dataCell3.setEncoding(HSSFCell.ENCODING_UTF_16);// 设置cell编码解决中文高位字节截断
dataCell3.setCellValue(tj.getJljes());
HSSFCell dataCell4 = row.createCell((short) 3);
dataCell4.setEncoding(HSSFCell.ENCODING_UTF_16);// 设置cell编码解决中文高位字节截断
dataCell4.setCellValue(tj.getKfjes());
}
try {
wb.write(response.getOutputStream());
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
至于按钮点击的话,楼主可以考虑ajax提交到后台即可实现下载,或保存excle效果....