`
panshaobinSB
  • 浏览: 198435 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

excel制作的标准代码,有需要的就看看哈

    博客分类:
  • java
 
阅读更多
package excel;

import java.io.File;
import java.io.IOException;

import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;

public class TestExcel {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		writeExcel("e:/test/a.xls");
	}

	/**
	 * 生成一个Excel文件
	 * 
	 * @param fileName
	 *            要生成的Excel文件名
	 */
	public static void writeExcel(String fileName) {
		WritableWorkbook wwb = null;
		WritableCellFormat wcf = new WritableCellFormat();
		try {
			// 首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象
			wwb = Workbook.createWorkbook(new File(fileName));
		} catch (IOException e) {
			e.printStackTrace();
		}
		if (wwb != null) {
			// 创建一个可写入的工作表
			// Workbook的createSheet方法有两个参数,第一个是工作表的名称,第二个是工作表在工作薄中的位置
			WritableSheet ws = wwb.createSheet("sheet1", 0);
			try {
				//设置边框
				wcf.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THIN);
				// 把水平对齐方式指定为居中
				wcf.setAlignment(jxl.format.Alignment.CENTRE);
				// 把垂直对齐方式指定为居中
				wcf.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
				
				// 下面开始添加单元格
				for (int i = 0; i < 10; i++) {
					for (int j = 0; j < 5; j++) {
						
						// 这里需要注意的是,在Excel中,第一个参数表示列,第二个表示行
						Label labelC = new Label(j, i, "第" + (i + 1) + "行,第" + (j + 1) + "列", wcf);
						/*
						 * WritableFont font1=new
						 * WritableFont(WritableFont.TIMES
						 * ,16,WritableFont.BOLD); ① WritableCellFormat
						 * format1=new WritableCellFormat(font1); ② Label
						 * label=new Label(0,0,”data 4 test”,format1) ③
						 * 其中①指定了字串格式
						 * :字体为TIMES,字号16,加粗显示。WritableFont有非常丰富的构造子,供不同情况下使用
						 * ,jExcelAPI的java-doc中有详细列表,这里不再列出。
						 * ②处代码使用了WritableCellFormat类
						 * ,这个类非常重要,通过它可以指定单元格的各种属性,后面的单元格格式化中会有更多描述。
						 * ③处使用了Label类的构造子,指定了字串被赋予那种格式。
						 */

						// 将生成的单元格添加到工作表中
						ws.addCell(labelC);

					}
				}

				// 合并单元格
				ws.mergeCells(0, 0, 2, 3);// 最小列,最小行,最大列,最大行 从0开始
				// 将第一行的高度设为400
				ws.setRowView(0, 400);
				// 设置第一行列宽为40
				ws.setColumnView(0, 40);

			} catch (RowsExceededException e1) {
				e1.printStackTrace();
			} catch (WriteException e1) {
				e1.printStackTrace();
			}

			try {
				// 从内存中写入文件中
				wwb.write();
				// 关闭资源,释放内存
				wwb.close();
			} catch (IOException e) {
				e.printStackTrace();
			} catch (WriteException e) {
				e.printStackTrace();
			}
		}
	}
}



上面的是一个纯的java类,输出本地文件,如果要放在服务器上来实时生成的话就要用到下面的:
这个是写在action里面的方法:
public String downExcel() {
		boolean flag = true;
		HttpServletResponse response = ServletActionContext.getResponse();
		String fname = "中文的";
		try {
			fname=new String(fname.getBytes("GBK"),"ISO-8859-1");
		} catch (UnsupportedEncodingException e2) {
			e2.printStackTrace();
		}//解决文件中文名称问题
		response.setHeader("Content-disposition", "attachment; filename="
				+ fname + ".xls");// 设定输出文件头	
		response.setContentType("text/html;charset=GBK");
		response.setContentType("application/vnd.ms-excel;charset=GBK");
		response.setContentType("application/octet-stream;charset=GBK");
		OutputStream os = null;
		WritableCellFormat wcf = null;
		jxl.write.WritableWorkbook wwb = null;
		try {
			os = response.getOutputStream();
			wcf = new WritableCellFormat();
			wwb = Workbook.createWorkbook(os);
		} catch (Exception e) {
			flag = false;
		}
		if (wwb != null) {
			WritableSheet ws = wwb.createSheet("sheet1", 0);
			try {
				wcf.setBorder(jxl.format.Border.ALL,
						jxl.format.BorderLineStyle.THIN);
				wcf.setAlignment(jxl.format.Alignment.CENTRE);
				wcf.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
				for (int i = 0; i < 10; i++) {
					for (int j = 0; j < 5; j++) {
						Label labelC = new Label(j, i, "第" + (i + 1) + "行,第"
								+ (j + 1) + "列", wcf);
						ws.addCell(labelC);
					}
				}
				ws.mergeCells(0, 0, 2, 3);
				ws.setRowView(0, 400);
				ws.setColumnView(0, 40);
			} catch (RowsExceededException e1) {
				flag = false;
				e1.printStackTrace();
			} catch (WriteException e1) {
				flag = false;
				e1.printStackTrace();
			}

			try {
				wwb.write();
				wwb.close();
				os.flush();  
				os.close();  
				os=null;  
				response.flushBuffer();  
			} catch (IOException e) {
				flag = false;
				e.printStackTrace();
			} catch (WriteException e) {
				flag = false;
				e.printStackTrace();
			}
		}

		if (flag) {
			return SUCCESS;
		} else {
			return ERROR;
		}
	}


要注意的是:还有一个步骤要注意,就是要在目标页面的最后面上写上下面的内容
不然会出现:getOutputStream() has already been called for this response
具体原因如下:
http://qify.iteye.com/blog/747842
意思是:在释放jsp中使用的对象,会调用response.getWriter(),因为这个方法是和response.getOutputStream()相冲突的!所以会出现以上这个异常

	<%
    out.clear();
    out=pageContext.pushBody();
	%>


<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ include file="/common/contextPath.jsp"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">    
  <title>下载成功成功</title>      
</head>   

<body>
	<h1>下载成功</h1>
	<%
    out.clear();
    out=pageContext.pushBody();
	%>
</body>
</html>




分享到:
评论

相关推荐

    vs2005 excel菜单栏工具代码

    vs2005 excel菜单栏工具代码,个人学习心得,有想学习的朋友可以看看,参考msdn写的一个实例

    python代码自动办公excel处理实例(工资条制作) 项目源码有详细注解,适合新手一看就懂.rar

    python代码自动办公excel处理实例(工资条制作) 项目源码有详细注解,适合新手一看就懂

    Excel终极伴侣1.291

    当我们需要临时离开电脑而又不想关闭Excel文档时(并不局限于Excel文档,也可以是其它,但前提是要运行Excel),可以启动这个功能,这样其他人就不可能看到您不希望他们看到的东西。 15、尝试打开忘记密码的文件。...

    网客库存管理系统|在线excel编辑|在线office

    如果你是高手,我是菜鸟,你有不使用本源码的权利,请不要随意谩骂;欢迎给予意见和建议。 源码名称:网客库存管理系统(在线excel编辑) 版本号:V1.0 作者:CHN网客www.chnetter.com 下载地址:...

    javascript编写的考试复习工具、刷题神器,支持导入excel题库

    最新公司给了好多EXCEL的复习题库,让我们去复习考试,一个一个去看实在有点枯燥,记忆起来比较困难就想在网上找一下有没有通过导入EXCEL题库,自己复习的软件,然后找了半天不是运行不了就是要收费之类的,总是找不...

    用_Excel_制作漂亮的工资条的方法.doc

     如何使用Excel进行工资条的制作,也许有些网友使用已经很长时间了,但如何更快更好的做出漂亮的工资条,看看作者的方法吧。  “小问题难倒老财务”,也许你已经在财务口上工作多年,也许你天天都要面对Excel那张...

    Excel终极伴侣1.288

    当我们需要临时离开电脑而又不想关闭Excel文档时(并不局限于Excel文档,也可以是其它,但前提是要运行Excel),可以启动这个功能,这样其他人就不可能看到您不希望他们看到的东西。 15、尝试打开忘记密码的文件。...

    Excel终极伴侣1.286

    当我们需要临时离开电脑而又不想关闭Excel文档时(并不局限于Excel文档,也可以是其它,但前提是要运行Excel),可以启动这个功能,这样其他人就不可能看到您不希望他们看到的东西。 15、尝试打开忘记密码的文件。...

    Excel自动插入图片

    5.在发给客户和他人之前,请将Sheet1复制到新的Excel文件中,用新的文件发给他人,这样新文件中就不会含有宏代码,以免别人误认为你的文件有病毒。 6.如果插入较多的图片,可能导致Excel文件很大!您可以在Excel中按...

    Excel终极伴侣1.287

    当我们需要临时离开电脑而又不想关闭Excel文档时(并不局限于Excel文档,也可以是其它,但前提是要运行Excel),可以启动这个功能,这样其他人就不可能看到您不希望他们看到的东西。 15、尝试打开忘记密码的文件。...

    VB6.0封装EXCEL2010功能区菜单

    你注意到的第一件事可能就是它新外观,沿用多年的菜单与工具栏的用户界面已被抛弃了,取而代之的是选项卡和功能区的新界面,现在我们一步步来制作一个自己的选项卡(首先申明,有些代码和方法来自ExcelHome论坛和...

    FreeMarker文档(word,excel)生成器

    可利用foxe_CHS.exe制作word,excel文件模板,利用FreeMarker技术动态生成我们想要的word,excel文档,可用在很多地方,比如,代码自动生成(不需要使用word,excel格式)、设计文档生成、excel报表生成等等,就看你怎么...

    EXCEL格式工资管理系统3.2版.rar

    还可以下载本人制作的EXCEL必备工具箱(原名“excel取数助手”, 下载地址:http://blog.sina.com.cn/s/blog_5488e3a901000ayc.html),截至今天, 仅在天空软件站的下载量就突破1.5万次,并以每天几百次的速度增长...

    爬虫-生成标准格式word源代码-python

    而这里我们就将借助海尔公司的出货表爬取对应图片信息,并重新排版成为更加合理的Excel布局。 而今天我们这个项目是来自于实际生活中真实存在的处理事件。海尔在国外的员工常常要处理一些进出货的表格统计,但是由于...

    Excel终极伴侣1.290

    当我们需要临时离开电脑而又不想关闭Excel文档时(并不局限于Excel文档,也可以是其它,但前提是要运行Excel),可以启动这个功能,这样其他人就不可能看到您不希望他们看到的东西。 15、尝试打开忘记密码的文件。...

    工具栏制作菜单(DLL模块)

    当然啦,也可以用显式声明的方法调用,详细的参数下面有说明,或者看看 MenuBarFunction.h 文件,里面都有注释的了。 所有功能均封装在一个标准DLL里面,导出函数体如下(详情可见 MenuBarFunction.h 文件): 1、...

    Javascript 实现 Excel 导入生成图表功能

    如果看了心动的话,就接着往下看吧。 本次的这个设计需要用到几个插件:jquery.js、xlsx.js、echarts.js,大家需要提前进行下载,之后新建demo.html,demo.js,style.css文件,然后新建一个你想要操作的EXCEL文件,...

    Excel新增工具集

    删除与标注重复行、特殊数据行操作代码用字典法编写,比Excel公式与高级筛选提速几十倍。 1、重名查找与姓名美化:本软件不仅能查找同字重名,还能查找同音重名。执行此命令能够为某一列的重复数据(包含汉字同音)...

    广告灯箱制作预算表excel模版下载

    这是一套广告灯箱制作预算表excel模版下载,喜欢的人都来下载吧。该文档为广告灯箱制作预算表excel模版下载,是一份很不错的参考资料,具有较高参考价值,感兴趣的可以下载看看

    3D 饼状图制作软件

    平时,利用 Excel 或者 Google Docs 都可以很方便的作出饼状图,当然还有很多专业软件来制作饼状图,3D pie 属于超轻量级,易于使用及分享,创建饼状图后复制代码即可分享到自己的 blog 里,这样我们就可以轻易创造出...

Global site tag (gtag.js) - Google Analytics