struts2 中要在jsp页面上实现把数据库中的数据导成excel,在页面上点击导出时excel时,弹出下载保存框。 5
已经在java应用程序中实现导出,采用的是jxl包,只是转到javaweb时,不知道怎么做?最好有例子。...
已经在java应用程序中实现导出,采用的是jxl包,只是转到javaweb时,不知道怎么做?
最好有例子。 展开
最好有例子。 展开
3个回答
展开全部
我用的strtus2 把Action中的代码贴一下 这个简单的示例可以参考下
package com.aneel.xdh.action;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;
import com.opensymphony.xwork2.ActionSupport;
public class OutputExcelAction extends ActionSupport implements
ServletResponseAware, ServletRequestAware {
protected HttpServletRequest request = null;
protected HttpServletResponse response = null;
public void setServletResponse(HttpServletResponse resp) {
this.response = resp;
}
public void setServletRequest(HttpServletRequest req) {
this.request = req;
}
// 获取输出流
public InputStream getInputExcel() {
return (InputStream) request.getAttribute("excelStream");
}
@Override
public String execute() {
List<String> list = new ArrayList<String>();
list.add("张三");
list.add("李四");
if (list != null) {
int rows = 0;
ByteArrayOutputStream os = new ByteArrayOutputStream();
WritableWorkbook book;
try {
book = Workbook.createWorkbook(os);//创建工作簿
WritableSheet sheet = book.createSheet("第一页", rows);
for (int i = 0; i < list.size(); i++) {
Label label1 = new Label(0, i, String.valueOf(i));
Label label2 = new Label(1, i, list.get(i));
sheet.addCell(label1);
sheet.addCell(label2);
}
book.write();
book.close();
request.setAttribute("excelStream", new ByteArrayInputStream(os
.toByteArray()));
request.setAttribute("filename", "myexcel.xls");//设置文件名
return "success";
} catch (IOException e) {
e.printStackTrace();
return "error";
} catch (RowsExceededException e) {
e.printStackTrace();
return "error";
} catch (WriteException e) {
e.printStackTrace();
return "error";
}
}else{
System.out.println("统计数据不存在");
return "error";
}
}
}
一个测试的页面
<a href="download.action">click here</a>
struts 的Action就没什么好贴的了
还有其他别的方法 可以去网上找一下 找到好的方法发我一个
xdh725@126.com 这是我邮箱
package com.aneel.xdh.action;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;
import com.opensymphony.xwork2.ActionSupport;
public class OutputExcelAction extends ActionSupport implements
ServletResponseAware, ServletRequestAware {
protected HttpServletRequest request = null;
protected HttpServletResponse response = null;
public void setServletResponse(HttpServletResponse resp) {
this.response = resp;
}
public void setServletRequest(HttpServletRequest req) {
this.request = req;
}
// 获取输出流
public InputStream getInputExcel() {
return (InputStream) request.getAttribute("excelStream");
}
@Override
public String execute() {
List<String> list = new ArrayList<String>();
list.add("张三");
list.add("李四");
if (list != null) {
int rows = 0;
ByteArrayOutputStream os = new ByteArrayOutputStream();
WritableWorkbook book;
try {
book = Workbook.createWorkbook(os);//创建工作簿
WritableSheet sheet = book.createSheet("第一页", rows);
for (int i = 0; i < list.size(); i++) {
Label label1 = new Label(0, i, String.valueOf(i));
Label label2 = new Label(1, i, list.get(i));
sheet.addCell(label1);
sheet.addCell(label2);
}
book.write();
book.close();
request.setAttribute("excelStream", new ByteArrayInputStream(os
.toByteArray()));
request.setAttribute("filename", "myexcel.xls");//设置文件名
return "success";
} catch (IOException e) {
e.printStackTrace();
return "error";
} catch (RowsExceededException e) {
e.printStackTrace();
return "error";
} catch (WriteException e) {
e.printStackTrace();
return "error";
}
}else{
System.out.println("统计数据不存在");
return "error";
}
}
}
一个测试的页面
<a href="download.action">click here</a>
struts 的Action就没什么好贴的了
还有其他别的方法 可以去网上找一下 找到好的方法发我一个
xdh725@126.com 这是我邮箱
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
struts1我做过一个类似的。用jxl导入excel文件,获取里面的信息并修改,再将修改后的excel导出。struts2就不知道了。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你在配置文件里面,配置下输出的形式,输出流就可以了!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询