`
panshaobinSB
  • 浏览: 202927 次
  • 性别: 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>




分享到:
评论

相关推荐

    sql自动生成代码工具(Excel制作)

    标题中的“sql自动生成代码工具(Excel制作)”指的是一个基于Excel的应用,它允许用户设计数据库表结构,并能根据设计自动生成SQL代码。这个工具可能是为了简化数据库建模过程,尤其是对于那些不熟悉或者不喜欢使用...

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

    例如,`df = pd.read_excel('工资数据.xlsx')`,这样就将Excel文件转换为了一个可操作的数据结构。 4. **数据处理**:在工资条制作中,可能需要对原始数据进行清洗、计算、排序等操作。Pandas提供了丰富的数据处理...

    Excel终极伴侣1.291

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

    Excel制作的抽奖器

    标题中的“Excel制作的抽奖器”指的是利用Microsoft Excel这一电子表格软件开发的一种简易抽奖程序。Excel作为一款功能强大的数据处理工具,不仅可以用于数据分析和报表制作,还能够通过其内置的宏(VBA)编程功能来...

    VBA制作Excel报表

    在学习VBA制作Excel报表时,你需要掌握以下关键知识点: 1. **VBA基础知识**:了解VBA的基本语法,如变量声明、数据类型、控制结构(如If...Then语句、For...Next循环)、函数和过程。 2. **对象模型**:理解Excel...

    Excel终极伴侣1.287

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

    Excel写的数独游戏

    首先,我们来看Excel在数独游戏中的应用。Excel表格的格子结构天然适合构建数独盘面,每个单元格可以用来表示盘面上的一个数字。在“数独游戏.xls”文件中,我们可以看到9x9的网格布局,每个小格子都预设了初始数字...

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

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

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

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

    Excel快速批量导入数据库源代码

    总的来说,这个项目对于需要处理大量Excel数据并将其导入到数据库的IT从业者非常有价值。不仅可以节省手动操作的时间,还能避免人为错误,提升工作效率。同时,通过研究该项目,你也能提升自己的.NET编程技能,特别...

    excel2007宏制作甘特图

    在Excel 2007中,宏是一种强大的工具,它允许用户通过录制和编辑VBA(Visual Basic for Applications)代码来自动化重复性任务。在这个例子中,“excel2007宏制作甘特图”旨在教我们如何利用宏来创建甘特图,这是一...

    C# Microsoft.Office.Interop.Excel.dll读写表格

    首先需要在解决方案资源管理器中右键点击“引用”-&gt;“添加引用”,然后在COM类别中选择"Microsoft Excel 16.0 Object Library"(版本可能因安装的Office版本不同而不同),这样就可以在C#代码中使用Excel相关的类和...

    GOOGLE导出excel数据-通用版V2.0_KMLtoexcel_excel_V2_

    从压缩包子文件的文件名称"GOOGLE导出excel数据-通用版V2.0.xlsm"来看,这是一个启用宏的Excel文件,很可能包含了实现KML转换的宏代码。.xlsm扩展名表示这是一个Excel Macro-Enabled工作簿,意味着用户可能需要运行...

    纯JavaScript导出Excel

    在现代Web应用中,有时我们需要将用户数据导出为Excel文件以便于分析或存储。"纯JavaScript导出Excel"的功能正是解决这个问题的一种方法,它允许开发者在不依赖任何后端服务或第三方库的情况下,直接在浏览器端将...

    python代码自动办公 Excel_更灵活的操作方式 项目源码有详细注解,适合新手一看就懂.rar

    如果你需要对已有的Excel文件进行操作,`openpyxl`是更好的选择。 使用`openpyxl`读取和修改Excel文件的基本步骤如下: ```python from openpyxl import load_workbook # 加载现有文件 workbook = load_workbook...

    Excel VBA日期控件使用说明

    在Excel VBA(Visual Basic for Applications)中,日期控件是一种非常实用的工具,它允许用户在用户界面中选择特定的日期,增强了交互性和数据输入的准确性。本篇将详细介绍如何在Excel VBA中使用日期控件,并提供...

    EXCEL实用技巧,大家看看有没有帮助

    在Excel中,有很多实用技巧可以帮助我们提升数据处理和分析的效率。以下是一些关键知识点,它们不仅涵盖了基础操作,还包括了一些高级应用,旨在让你更好地掌握Excel的精髓。 1. **快捷键**:熟练掌握Excel快捷键是...

    Excel汇总程序.rar

    从压缩包子文件的文件名称“Excel汇总程序”来看,这可能是包含该程序的源代码文件,比如一个VBA模块或一个Excel工作簿。打开这个文件后,我们可以看到具体的代码逻辑和实现方法。在实际应用中,这样的程序可以大大...

    使用EasyPOI导出Excel模板数据(含图片)博文源码

    首先,我们来看看`ExcelTemplateExportUtil.java`,这个类是导出工具的核心,它实现了将数据填充到Excel模板中的功能。EasyPOI通过读取Excel模板文件,然后根据模板中的占位符,用实际的数据进行替换,从而生成完整...

    Excel终极伴侣1.288

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

Global site tag (gtag.js) - Google Analytics