前台jsp调用代码:
function outexe(){
queryForm.action = "<%=basepath%>/lpm/lpm-grpinfoExl.action";
queryForm.submit();
}
action代码:
/*
* 将数据导出到excel
*/
@Action(value="lpm-grpinfoExl")
public String lpmExl()throws Exception
{
LpmServiceInter ll = ServiceFactory.getLpmService();
List result=ll.query(lpmdto.getHql());
//写第一行标题行
String fileFolder = com.utils.FileUtil.createExlFile(getHttpRequest());//建文件夹
File objFile = new File(fileFolder + File.separator + "公司信息.csv");//建文件
String title = "公司编号,公司名称,公司状态,联系电话,注册时间";
com.utils.FileUtil.appendDataWriter(objFile, title + "\n");
//插入数据
StringBuffer data = new StringBuffer();
int rows = 0;
for(java.util.Iterator i=result.iterator();i.hasNext();){
GrpInfo g=(GrpInfo) i.next();
String s=null;
String s2=null;
data.append(" " + g.getGrpCode()).append(",");
data.append(" " + g.getGrpName()).append(",");
if(g.getStatus()==1){
s="有效";
}else{
s="已经撤销";
}
data.append(" " + s).append(",");
data.append(" " + g.getGrpTelNo()).append(",");
if(g.getRegtime()!=null){
s2=DateUtil.datetoStr2(g.getRegtime());
}else{
s2="";
}
data.append(" " +s2);
data.append("\n");
rows ++;
//当StringBuffer超过1千行数据时就先往文件插入那1千行数据并清空缓存数据
if(rows > 1000){
com.utils.FileUtil.appendDataWriter(objFile, data.toString());
data.delete(0, data.length());
}
}
com.utils.FileUtil.appendDataWriter(objFile, data.toString());
//输出到excel
com.utils.FileUtil.outExl(objFile, getHttpResponse());
return null;
}
自定义util工具类代码:
public static String createExlFile(HttpServletRequest request){
String parentPath = request.getSession().getServletContext().getRealPath("/exceltemplate/temp/" + (new java.text.SimpleDateFormat("yyyyMMdd")).format(new Date()));
//存tjfx目录
String fileFolder = parentPath + File.separator + "tjfx";
new File(fileFolder).mkdirs();
//删除tjfx里的临时文件
delete(new File(fileFolder));
return fileFolder;
}
//追加数据
public static void appendDataWriter(File objFile, String data) {
//if(!objFile.exists())
FileWriter objFileWriter = null;
BufferedWriter bfWriter = null;
try {
objFileWriter = new FileWriter(objFile, true);//true表示以追加的方式进行追加数据到文件
bfWriter = new BufferedWriter(objFileWriter);//将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入
bfWriter.write(data);//写数据行
//bfWriter.newLine();//写入一个行分隔符。
} catch (Exception e) {
//System.out.println("追加流发生错误:" + e.toString());
e.printStackTrace();
} finally {
try {
bfWriter.flush();
bfWriter.close();
objFileWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void outExl(File objFile, HttpServletResponse response)
throws Exception {
ServletOutputStream os = null;
InputStream in = null;
try {
long l = objFile.length(); //文件长度
in = new FileInputStream(objFile);
os = response.getOutputStream();//获取输出流
if (in != null) {
response.reset();
response.setCharacterEncoding("gbk");
response.setContentType("application/x-msdownload"); //
String title = objFile.getName();
title = title.substring(0,title.lastIndexOf("."));
String sf = "attachment; filename="
+ new String(title.getBytes(), "iso-8859-1") + ".csv"; //
response.setHeader("Content-Disposition", sf); // 以上输出文件元信息
response.setContentLength((int) l); //设置输入文件长度
byte[] b = new byte[2048];
int len = 0;
while ((len = in.read(b)) > 0) {
os.write(b, 0, len); //向浏览器输出
}
}
os.flush();
} catch (Exception e) {
e.printStackTrace();
} finally {
if(in != null)
in.close(); //关闭文件输入流
if(os != null)
os.close();
}
}
分享到:
相关推荐
轻松让java 将数据导出到Excel中,java让开发更简单。
C# 将数据导出到Excel各种方法汇总
C#将数据导出到Excel汇总 一、asp.net中导出Execl的方法: 在asp.net中导出Execl有两种方法,一种是将导出的文件存放在服务器某个文件夹下面,然后将文件地址输出在浏览器上;一种是将文件直接将文件输出流写给...
将数据导出到Excel源代码及方法:response.setContentType("application/vnd.ms-excel");//响应正文的MIME类型,表示Excel response.addHeader("Content-Disposition", "attachment;filename=logininfo.xls"); ...
C# 将数据导出到Excel C# 将数据导出到Excel
将simulink示波器数据导出到excel表格教程将simulink示波器数据导出到excel表格教程将simulink示波器数据导出到excel表格教程将simulink示波器数据导出到excel表格教程将simulink示波器数据导出到excel表格教程将...
C# 将数据导出到excel模板 自定义字段 excel表格可复杂 解压密码: www.shcodetool.cn
利用不同的服务器控件将DataTable数据导出到Excel文件,包括: 利用DataGrid将数据导出到Excel文件; 利用HtmlTable将数据导出到Excel文件; 利用Literal将数据导出到Excel文件; 将本页内容导出到Excel文件。 适用于...
c#将数据导出到excel中 本程序详细描述了将数据导出到excel中,简单实用,下载之后直接运行即可
功能:java将数据导出到Excel表格
C#创建Excel文件并将数据导出到Excel文件,实现效果及细节参考: http://blog.csdn.net/testcs_dn/article/details/25509249
C#大量数据导出到Excel,超过65536行时自动分页导出
自己写的vs2005将数据导出到Excel表格的小程序。 有这方面需求的朋友可以下载参考。
数据导出到Excel.html ,数据导出到Excel.html
从数据库中获取数据显示在Datagridview中,然后将数据导入到excel或从Dataset直接将数据导出到excel
asp代码,将数据导出到excel中
源程序不需做任何修改,只要将jar包导入到项目中就可以运行了。