Java学习之道:Java操作Excel之导出下载

页面放置一个button进行点击导出事件

<h:commandLink target="_parent" value="导出"

action="#{eveluatesubject.doSaveExcel}"

styleClass="cssButtonBG">

</h:commandLink>

后台的导出方法

/**

* 导出EXCEL

*

* @param request

* @return

*/

public String doSaveExcel() {

HttpServletRequest request = (HttpServletRequest) FacesContext

.getCurrentInstance().getExternalContext().getRequest();

dooutof(request);

return null;

}

public String dooutof(HttpServletRequest request) {

// 文件名与路径

String realPath = request.getRealPath("");

String fileName = "导出的文件名称.xls";

File file = new File(realPath + "//xxfzpj//tempPath//");//导出文件存放的位置

if (!file.exists()) {

file.mkdirs();

}

realPath = realPath + "//xxfzpj//tempPath//" + fileName;

// 建立工作薄并写表头

try {

WritableWorkbook wwb = Workbook.createWorkbook(new File(realPath));

WritableSheet ws = wwb.createSheet("Sheet1", 0);// 建立工作簿

// 写表头

jxl.write.Label label1 = new jxl.write.Label(0, 0, "列1");

jxl.write.Label label2 = new jxl.write.Label(1, 0, "列2");

jxl.write.Label label3 = new jxl.write.Label(2, 0, "列3");

jxl.write.Label label4 = new jxl.write.Label(3, 0, "列4");

jxl.write.Label label5 = new jxl.write.Label(4, 0, "列5");

ws.addCell(label1);// 放入工作簿

ws.addCell(label2);

ws.addCell(label3);

ws.addCell(label4);

ws.addCell(label5);

// 写入信息

List<Map> listmsg = 数据库中读出的内容(运行SQL);

for (int i = 0; i < listmsg.size(); i++) {

label1 = new jxl.write.Label(0, i + 1, listmsg.get(i).get(

"subject_id").toString().trim());// 建立第一列

label2 = new jxl.write.Label(1, i + 1, listmsg.get(i).get(

"subject_name").toString().trim());// 建立第二列

if (listmsg.get(i).get("object_name") != null

&& "" != listmsg.get(i).get("object_name")) {

label3 = new jxl.write.Label(2, i + 1, listmsg.get(i).get(

"object_name").toString().trim());// 建立第三列

} else {

label3 = new jxl.write.Label(2, i + 1, "未定义评价对象名称!");

}

label4 = new jxl.write.Label(3, i + 1, listmsg.get(i).get(

"mode_name").toString().trim());// 建立第四列

label5 = new jxl.write.Label(4, i + 1, listmsg.get(i).get(

"type_name").toString().trim());// 建立第五列

ws.addCell(label1);// 放入工作簿

ws.addCell(label2);

ws.addCell(label3);

ws.addCell(label4);

ws.addCell(label5);

}

// 写入Exel工作表

wwb.write();

// 关闭Excel工作薄对象

wwb.close();

// 下载

FacesContext ctx = FacesContext.getCurrentInstance();

String contentType = "application/x-download";

HttpServletResponse response = (HttpServletResponse) ctx

.getExternalContext().getResponse();

response.setContentType(contentType);

response.setHeader("Content-Disposition", "attachment;filename="

+ new String(fileName.getBytes("gb2312"), "ISO8859-1"));

HttpServletRequest request1 = (HttpServletRequest) FacesContext

.getCurrentInstance().getExternalContext().getRequest();

ServletOutputStream out = response.getOutputStream();

byte[] bytes = new byte[0xffff];

InputStream is = new FileInputStream(new File(realPath));

int b = 0;

while ((b = is.read(bytes, 0, 0xffff)) > 0) {

out.write(bytes, 0, b);

}

is.close();

out.flush();

ctx.responseComplete();

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}// 此处建立路径

return null;

}

时间: 2024-10-15 22:18:58

Java学习之道:Java操作Excel之导出下载的相关文章

Java学习之道:Java 导出EXCEL

1.Apache POI简介 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程式对Microsoft Office格式档案读和写的功能. .NET的开发人员则可以利用NPOI (POI for .NET) 来存取 POI 的功能. 2.POI结构 HSSF - 提供读写Microsoft Excel XLS格式档案的功能. XSSF - 提供读写Microsoft Excel OOXML XLSX格式档案的功能. HWPF - 提供读写Microsoft

Java学习之道:Java上传下载excel、解析Excel、生成Excel的问题

在软件开发过程中难免需要批量上传与下载,生成报表保存也是常有之事,最近集团门户开发用到了Excel模版下载,Excel生成,圆满完成,对这一知识点进行整理,资源共享,有不足之处还望批评指正,文章结尾提供了所需jar包的下载,方便大伙使用,下面言归正传! 1.Excel的下载 1)Action中: 添加响应事件,通过getRealPath获得工程路径,与jsp中获得request.getContextPath()效果相同,fileName为要下载的文件名,经过拼接filePath是xls文件的绝对

Java学习之道:Java构造器和方法的区别

摘要 要学习Java,你必须理解构造器.因为构造器可以提供许多特殊的方法,这个对于初学者经常混淆.但是,构造器和方法又有很多重要的区别. 原作者:Robert Nielsen 原站:www.javaworld.com 我们说构造器是一种方法,就象讲澳大利亚的鸭嘴兽是一种哺育动物.(按:老外喜欢打比喻,我也就照着翻译).要理解鸭嘴兽,那么先必须理解它和其他哺育动物的区别.同样地,要理解构造器,那么就要了解构造器和方法的区别.所有学习java的人,尤其是对那些要认证考试的,理解构造器是非常重要的.下

Java学习之道:详解Java解析XML的四种方法

XML现在已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便.对于XML本身的语法知识与技术细节,需要阅读相关的技术文献,这里面包括的内容有DOM(Document Object Model),DTD(Document Type Definition),SAX(Simple API for XML),XSD(Xml Schema Definition),XSLT(Extensible Stylesheet Language Transform

Java学习之道:Java中十个常见的违规编码

最近,我给Java项目做了一次代码清理工作.经过清理后,我发现一组常见的违规代码(指不规范的代码并不表示代码错误)重复出现在代码中.因此,我把常见的这些违规编码总结成一份列表,分享给大家以帮助Java爱好者提高代码的质量和可维护性. 这份列表没有依据任何规则或顺序,所有的这些都是通过代码质量工具包括CheckStyle,FindBugs和PMD检查出.一起来看下: 一.Eclipse编译器提供源代码格式输入 Eclipse提供自动源码格式选项,并且组织输入(删除未使用的代码).你可以使用下面的这

Java学习之道:ArrayList的使用方法

1.什么是ArrayList     ArrayList就是传说中的动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了如下一些好处: 动态的增加和减少元素 实现了ICollection和IList接口 灵活的设置数组的大小 2.如何使用ArrayList     最简单的例子: ArrayList List = new ArrayList(); for( int i=0;i<10;i++ ) //给数组增加10个Int元素 List.Add(i); //..程序做一些处理 List

Java学习之道:使用JAXP进行DOM解析( DocumentBuilderFactory、DocumentBuilder、Document)

1.javax.xml.parsers 包中的DocumentBuilderFactory用于创建DOM模式的解析器对象 , DocumentBuilderFactory是一个抽象工厂类,它不能直接实例化,但该类提供了一个newInstance方法 ,这个方法会根据本地平台默认安装的解析器,自动创建一个工厂的对象并返回 2.调用 DocumentBuilderFactory.newInstance() 方法得到创建 DOM 解析器的工厂. 3.调用工厂对象的 newDocumentBuilder

Java学习之道:jdk环境变量配置方法

JDK(Java Development Kit)是整个Java的核心,包括了Java运行环境.Java工具和Java基础类库.JDK作为JAVA开发的环境,不管是做JAVA开发还是做安卓开发,都必须在电脑上安装JDK. 64位下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html jdk环境变量配置方法: 在安装完jdk后,还需要对jdk的环境变量进行配置才能正常使用,下面教大家如何配置jdk环境变量: 1

java学习笔记07--日期操作类

java学习笔记07--日期操作类 一.Date类 在java.util包中定义了Date类,Date类本身使用非常简单,直接输出其实例化对象即可. [java] view plaincopy public class T { public static void main(String[] args) { Date date  = new Date(); System.out.println("当前日期:"+date); //当前日期:Thu May 16 23:00:57 CST