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菜单栏工具代码,个人学习心得,有想学习的朋友可以看看,参考msdn写的一个实例
python代码自动办公excel处理实例(工资条制作) 项目源码有详细注解,适合新手一看就懂
当我们需要临时离开电脑而又不想关闭Excel文档时(并不局限于Excel文档,也可以是其它,但前提是要运行Excel),可以启动这个功能,这样其他人就不可能看到您不希望他们看到的东西。 15、尝试打开忘记密码的文件。...
如果你是高手,我是菜鸟,你有不使用本源码的权利,请不要随意谩骂;欢迎给予意见和建议。 源码名称:网客库存管理系统(在线excel编辑) 版本号:V1.0 作者:CHN网客www.chnetter.com 下载地址:...
最新公司给了好多EXCEL的复习题库,让我们去复习考试,一个一个去看实在有点枯燥,记忆起来比较困难就想在网上找一下有没有通过导入EXCEL题库,自己复习的软件,然后找了半天不是运行不了就是要收费之类的,总是找不...
如何使用Excel进行工资条的制作,也许有些网友使用已经很长时间了,但如何更快更好的做出漂亮的工资条,看看作者的方法吧。 “小问题难倒老财务”,也许你已经在财务口上工作多年,也许你天天都要面对Excel那张...
当我们需要临时离开电脑而又不想关闭Excel文档时(并不局限于Excel文档,也可以是其它,但前提是要运行Excel),可以启动这个功能,这样其他人就不可能看到您不希望他们看到的东西。 15、尝试打开忘记密码的文件。...
当我们需要临时离开电脑而又不想关闭Excel文档时(并不局限于Excel文档,也可以是其它,但前提是要运行Excel),可以启动这个功能,这样其他人就不可能看到您不希望他们看到的东西。 15、尝试打开忘记密码的文件。...
5.在发给客户和他人之前,请将Sheet1复制到新的Excel文件中,用新的文件发给他人,这样新文件中就不会含有宏代码,以免别人误认为你的文件有病毒。 6.如果插入较多的图片,可能导致Excel文件很大!您可以在Excel中按...
当我们需要临时离开电脑而又不想关闭Excel文档时(并不局限于Excel文档,也可以是其它,但前提是要运行Excel),可以启动这个功能,这样其他人就不可能看到您不希望他们看到的东西。 15、尝试打开忘记密码的文件。...
你注意到的第一件事可能就是它新外观,沿用多年的菜单与工具栏的用户界面已被抛弃了,取而代之的是选项卡和功能区的新界面,现在我们一步步来制作一个自己的选项卡(首先申明,有些代码和方法来自ExcelHome论坛和...
可利用foxe_CHS.exe制作word,excel文件模板,利用FreeMarker技术动态生成我们想要的word,excel文档,可用在很多地方,比如,代码自动生成(不需要使用word,excel格式)、设计文档生成、excel报表生成等等,就看你怎么...
还可以下载本人制作的EXCEL必备工具箱(原名“excel取数助手”, 下载地址:http://blog.sina.com.cn/s/blog_5488e3a901000ayc.html),截至今天, 仅在天空软件站的下载量就突破1.5万次,并以每天几百次的速度增长...
而这里我们就将借助海尔公司的出货表爬取对应图片信息,并重新排版成为更加合理的Excel布局。 而今天我们这个项目是来自于实际生活中真实存在的处理事件。海尔在国外的员工常常要处理一些进出货的表格统计,但是由于...
当我们需要临时离开电脑而又不想关闭Excel文档时(并不局限于Excel文档,也可以是其它,但前提是要运行Excel),可以启动这个功能,这样其他人就不可能看到您不希望他们看到的东西。 15、尝试打开忘记密码的文件。...
当然啦,也可以用显式声明的方法调用,详细的参数下面有说明,或者看看 MenuBarFunction.h 文件,里面都有注释的了。 所有功能均封装在一个标准DLL里面,导出函数体如下(详情可见 MenuBarFunction.h 文件): 1、...
如果看了心动的话,就接着往下看吧。 本次的这个设计需要用到几个插件:jquery.js、xlsx.js、echarts.js,大家需要提前进行下载,之后新建demo.html,demo.js,style.css文件,然后新建一个你想要操作的EXCEL文件,...
删除与标注重复行、特殊数据行操作代码用字典法编写,比Excel公式与高级筛选提速几十倍。 1、重名查找与姓名美化:本软件不仅能查找同字重名,还能查找同音重名。执行此命令能够为某一列的重复数据(包含汉字同音)...
这是一套广告灯箱制作预算表excel模版下载,喜欢的人都来下载吧。该文档为广告灯箱制作预算表excel模版下载,是一份很不错的参考资料,具有较高参考价值,感兴趣的可以下载看看
平时,利用 Excel 或者 Google Docs 都可以很方便的作出饼状图,当然还有很多专业软件来制作饼状图,3D pie 属于超轻量级,易于使用及分享,创建饼状图后复制代码即可分享到自己的 blog 里,这样我们就可以轻易创造出...