Java对Excel表格的操作.docx

上传人:b****8 文档编号:10293186 上传时间:2023-02-09 格式:DOCX 页数:18 大小:21.39KB
下载 相关 举报
Java对Excel表格的操作.docx_第1页
第1页 / 共18页
Java对Excel表格的操作.docx_第2页
第2页 / 共18页
Java对Excel表格的操作.docx_第3页
第3页 / 共18页
Java对Excel表格的操作.docx_第4页
第4页 / 共18页
Java对Excel表格的操作.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

Java对Excel表格的操作.docx

《Java对Excel表格的操作.docx》由会员分享,可在线阅读,更多相关《Java对Excel表格的操作.docx(18页珍藏版)》请在冰豆网上搜索。

Java对Excel表格的操作.docx

Java对Excel表格的操作

1.2JExcelAPi开发环境简单配置

JExcelAPi是一个开源的项目,可以在官方网站下载其最新版本。

在JExcelAPi的官方网站上提供各种版本的下载,例如要下载版本为2.4.2的JExcelApi,下载下来的文件为:

Jexcelapi-2-4-2.tar.gz,直接解压这个压轴文件即可。

其中docs目录下是类库参考档案。

Src目录下是整个JExcelAPi的源代码,在src目录下有demo子目录,里面是例子代码,demo中的源代码对初学者来说是最好的教材,参考其中的例程可以实现其绝大部分功能。

JExcelAPi这个目录下面可以看到jx1.jar文件,这个文件就是JExcelAPi打包的类库文件,如果要在项目中使用JExcelAPi只需要把jx1.jar文件的路径加入classpath中或项目lib目录下。

1.3JSP生成Excel报表

在接下讲解在JSP中使用JExcelApi生成不同格式的Excel文件.在WEB应用开发过程中,可能会遇到各种各样的报表需求,这些报表不仅布局格式复杂,而且至有些报表需要在指定的位置显示图片。

当这些报表需要导出为Excel的时候,相应的的问题就会出现,而接下来要阐述的内容就是怎样使用JExcelApi来解决这些问题。

解决任何问题的时候都是从简单到复杂,下面几个示例也是按照这个原则组织的。

在实际应用开发中,经常需要把指定的数据生成Excel文件,并且可以下载生成的Excel文件。

在本章的示例中。

利用JavaBean生成的Excel文件,在JSP页面上调用这个JavaBean生成的Excel文件,然后提供下载方式。

当访问这个JSP页面的时候可以直接下载生成的Excel文件。

1.JSP生成简单的Excel文件

假设下面这种情形,要把表中的内容导出为Excel文件。

学校

专业

专业竞争力

清华大学

计算机专业

北京大学

法律专业

北京理工大学

航空专业

在表中展示的内容格式全是字符串。

而且这个表格的格式也是相当简单,没有任何合并的单元格,也没有颜色的设置。

类似这种表格生成对应的Excel文件是非常容易的,实现这个功能的JavaBean代码如下所示。

packagebeans.excel;

importjava.io.IOException;

importjava.io.OutputStream;

importjxl.Workbook;

importjxl.write.Label;

importjxl.write.WritableCellFormat;

importjxl.write.WritableSheet;

importjxl.write.WritableWorkbook;

importjxl.write.WriteException;

importjxl.write.biff.RowsExceededException;

publicclassSimpleExcelWrite{

publicvoidcreateExcel(OutputStreamos)throwsWriteException,IOException

{

//创建工作薄

WritableWorkbookworkbook=Workbook.createWorkbook(os);

//创建新的一页

WritableSheetsheet=workbook.createSheet("FirstSheet",0);

//创建要显示的具体内容

Labelxuexiao=newLabel(0,0,"学校");

sheet.addCell(xuexiao);

Labelzhuanye=newLabel(1,0,"专业");

sheet.addCell(zhuanye);

Labeljingzhengli=newLabel(2,0,"专业竞争力");

sheet.addCell(jingzhengli);

Labelqinghua=newLabel(0,1,"清华大学");

sheet.addCell(qinghua);

Labeljisuanji=newLabel(1,1,"计算机专业");

sheet.addCell(jisuanji);

Labelgao=newLabel(2,1,"高");

sheet.addCell(gao);

Labelbeida=newLabel(0,2,"北京大学");

sheet.addCell(beida);

Labelfalv=newLabel(1,2,"法律专业");

sheet.addCell(falv);

Labelzhong=newLabel(2,2,"中");

sheet.addCell(zhong);

Labelligong=newLabel(0,3,"北京理工大学");

sheet.addCell(ligong);

Labelhangkong=newLabel(1,3,"航空专业");

sheet.addCell(hangkong);

Labeldi=newLabel(2,3,"低");

sheet.addCell(di);

//把创建的内容写入到输出流中,并关闭输出流

workbook.write();

workbook.close();

}

}

 

上面这个JavaBean中的主要代码解释如下。

WritableWorkbookworkbook=Workbook.createWorkbook(os);

上面这行代码创建一个Excel工作区(WorkBook)。

在Excel中,所有的页(Sheet)只能在工作区(WorkBook)中创建。

WritableSheetsheet=workbook.createSheet("FirstSheet",0);

上面这行代码在工作区(WorkBook)中创建新的一页(Sheeet)其中新建的页(Sheet)名称为“Firstsheet”。

这一页的属性是可以进行写操作的。

在JExcelAPi中也可以创建只读的页。

Labelxuexiao=newLabel(0,0,"学校");

sheet.addCell(xuexiao);

上面这段代码创建了一个单元格,并把这个单元格添加到指定的页中,其中这个单元格的内容是“学校”位置在第一行第一列,其中第1个参数是列坐标,第2个参数是行坐标,而且两个坐标都是从0开始计算。

workbook.write();

workbook.close();

os.close();

这3行代码执行的操作是把工作区中的内容写到输出流中,然后关闭工作区,最后关闭输出流。

下面来看如何在JSP页面上调用这个JavaBean,并且实现下载的功能。

具体的JSP代码如下所示。

<%@pagelanguage="java"import="java.util.*"pageEncoding="gb2312"%>

<%@pageimport="java.io.*"%>

<%@pageimport="beans.excel.*"%>

<%

Stringfname="学校专业竞争力情况";

OutputStreamos=response.getOutputStream();//取得输出流

response.reset();//清空输出流

//下面是对中文文件名的处理

response.setCharacterEncoding("UTF-8");

fname=.URLEncoder.encode(fname,"UTF-8");

response.setHeader("Content-Disposition","attachment;filename="+newString(fname.getBytes("UTF-8"),"GBK")+".xls");

response.setContentType("application/msexcel");//定义输出类型

SimpleExcelWritesw=newSimpleExcelWrite();

sw.createExcel(os);

%>

 

上面这个JSP页面实现的功能是调用JavaBean生成的Excel文件,并且提供下载。

Stringfname="学校专业竞争力情况";

上面这行设置生成Excel文件的文件名。

OutputStreamos=response.getOutputStream();//取得输出流

response.reset();//清空输出流

上面两行代码取得输出流,并且清空输出流的男内容。

提供给后面生成的Excel文件使用。

response.setCharacterEncoding("UTF-8");

fname=.URLEncoder.encode(fname,"UTF-8");

上面两行代码进行的操作是中文显示的处理,上面一行设置整个Excel的编码格式,下面一行设置Excel文件名的编码格式。

这两处编码格式如果不进行设置就会出现中文乱码的情况。

response.setHeader("Content-Disposition","attachment;filename="+newString(fname.getBytes("UTF-8"),"GBK")+".xls");

response.setContentType("application/msexcel");//定义输出类型

上面这段代码实现了下载的功能。

SimpleExcelWritesw=newSimpleExcelWrite();

sw.createExcel(os);

上面这段代码调用SimpleExcelWrite这个JavaBean生成Excel文件,这里之所以没有使用〈jsp:

useBean〉标签是因为在这个JavaBean中并没有需要设置的属性和用来获取的属性,所以用调用一般类的方法也是可以的,同样可以调用到JavaBean中的方法。

2.JSP生成各种复杂数据格式的Excel文件

在上面的示例程序中,数据格式是非常简单的,仅仅只有字符串这一种格式,下面考虑这样的情形,现在需要把表11.2中的数据导出为Excel文件

JExcelApi支持数据格式列表

数据格式

浮点型

整型

布尔型

日期格式

数据示例

3.1415926535

15042699

true

2007-7-15

实现这个操作比前一个例子中的要稍微麻烦一些,需要对各种数据类型进行单独的设置,不同的数据类型需要用不同的单元格的构造方式。

生成这个Excel的JavaBean具体代码如下所示。

packagebeans.excel;

importjava.io.IOException;

importjava.io.OutputStream;

importjava.text.SimpleDateFormat;

importjava.util.Calendar;

importjava.util.Date;

importjxl.Workbook;

importjxl.format.Colour;

importjxl.write.DateFormats;

importjxl.write.Label;

importjxl.write.NumberFormats;

importjxl.write.WritableCellFormat;

importjxl.write.WritableSheet;

importjxl.write.WritableWorkbook;

importjxl.write.WriteException;

importjxl.write.Number;

importjxl.write.Boolean;

importjxl.write.DateTime;

publicclassComplexDataExcelWrite{

publicvoidcreateExcel(OutputStreamos)throwsWriteException,IOException{

//创建工作薄

WritableWorkbookworkbook=Workbook.createWorkbook(os);

//创建新的一页

WritableSheetsheet=workbook.createSheet("FirstSheet",0);

//创建要显示的具体内容

Labelformate=newLabel(0,0,"数据格式");

sheet.addCell(formate);

Labelfloats=newLabel(1,0,"浮点型");

sheet.addCell(floats);

Labelintegers=newLabel(2,0,"整型");

sheet.addCell(integers);

Labelbooleans=newLabel(3,0,"布尔型");

sheet.addCell(booleans);

Labeldates=newLabel(4,0,"日期格式");

sheet.addCell(dates);

Labelexample=newLabel(0,1,"数据示例");

sheet.addCell(example);

//浮点数据

Numbernumber=newNumber(1,1,3.1415926535);

sheet.addCell(number);

//整型数据

Numberints=newNumber(2,1,15042699);

sheet.addCell(ints);

//布尔型数据

Booleanbools=newBoolean(3,1,true);

sheet.addCell(bools);

//日期型数据

Calendarc=Calendar.getInstance();

Datedate=c.getTime();

WritableCellFormatcf1=newWritableCellFormat(DateFormats.FORMAT1);

DateTimedt=newDateTime(4,1,date,cf1);

sheet.addCell(dt);

//把创建的内容写入到输出流中,并关闭输出流

workbook.write();

workbook.close();

os.close();

}

}

 

这个程序的思路和前一个例子基本一样,不同之处在于各种数据类型单元格的处理,这个在程序的注释中已经写得很清楚了。

具体不同数据类型的处理请参考上面的程序代码。

这个JavaBean的调用方法和上一个例子一样,只需要稍微改动一下上一个例子中的JSP文件(SimpleExcelWrite.jsp)即可,所需改动的仅仅有下面两个地方:

Stringfname="学校专业竞争力情况";

把上面这句中的“学校专业竞争力情况”改为“JExcelApi支持数据格式列表”。

SimpleExcelWritesw=newSimpleExcelWrite();

把上面这行代码改为ComplexDataExcelWritesw=newComplexDataExcelWrite()即可。

经过这样的改动,就可以调用上面这个JavaBean。

3.JSP生成复杂布局和样式的Excel文件

上面的示例程序只是展示了JExcelApi支持的各种数据类型,接下来将要展示JExcelApi对复杂的布局和样式的支持。

假设要把表中的数据导出为Excel文件

JExcelApi支持数据类型详细说明

JExcelApi支持数据类型详细说明

数据格式

浮点型

整型

布尔型

日期格式

数据示例

3.1415926535

15042699

true

2007-7-15

在表中,表格的布局发生了变化,表头占了5列,高度也明显大于其他各行,同时各单元格的样式也有了变化,采用了不同的字体类型、背景颜色。

针对这样的表格,在生成Excel文件的时候就要设置其布局和显示的属性。

下面就是这个JavaBean的具体实现代码。

packagebeans.excel;

importjava.io.IOException;

importjava.io.OutputStream;

importjava.text.SimpleDateFormat;

importjava.util.Calendar;

importjava.util.Date;

importjxl.Workbook;

importjxl.format.Colour;

importjxl.format.UnderlineStyle;

importjxl.write.DateFormats;

importjxl.write.Label;

importjxl.write.NumberFormats;

importjxl.write.WritableCellFormat;

importjxl.write.WritableFont;

importjxl.write.WritableSheet;

importjxl.write.WritableWorkbook;

importjxl.write.WriteException;

importjxl.write.Number;

importjxl.write.Boolean;

importjxl.write.DateTime;

publicclassMutiStyleExcelWrite{

publicvoidcreateExcel(OutputStreamos)throwsWriteException,IOException{

//创建工作薄

WritableWorkbookworkbook=Workbook.createWorkbook(os);

//创建新的一页

WritableSheetsheet=workbook.createSheet("FirstSheet",0);

//构造表头

sheet.mergeCells(0,0,4,0);//添加合并单元格

WritableFontbold=newWritableFont(WritableFont.ARIAL,10,WritableFont.BOLD);//设置字体种类和黑体显示

WritableCellFormattitleFormate=newWritableCellFormat(bold);

titleFormate.setAlignment(jxl.format.Alignment.CENTRE);//单元格中的内容水平方向居中

titleFormate.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);//单元格中的内容垂直方向居中

Labeltitle=newLabel(0,0,"JExcelApi支持数据类型详细说明",titleFormate);

sheet.setRowView(0,600,false);//设置第一行的高度

sheet.addCell(title);

//创建要显示的具体内容

WritableFontcolor=newWritableFont(WritableFont.ARIAL);//选择字体

color.setColour(Colour.GOLD);//设置字体颜色为金黄色

WritableCellFormatcolorFormat=newWritableCellFormat(color);

Labelformate=newLabel(0,1,"数据格式",colorFormat);

sheet.addCell(formate);

Labelfloats=newLabel(1,1,"浮点型");

sheet.addCell(floats);

Labelintegers=newLabel(2,1,"整型");

sheet.addCell(integers);

Labelbooleans=newLabel(3,1,"布尔型");

sheet.addCell(booleans);

Labeldates=newLabel(4,1,"日期格式");

sheet.addCell(dates);

Labelexample=newLabel(0,2,"数据示例",colorFormat);

sheet.addCell(example);

//浮点数据

WritableFontunderline=newWritableFont(WritableFont.ARIAL,WritableFont.DEFAULT_POINT_SIZE,

WritableFont.NO_BOLD,false,UnderlineStyle.SINGLE);//设置下划线

WritableCellFormatgreyBackground=newWritableCellFormat(underline);

greyBackground.setBackground(Colour.GRAY_25);//设置背景颜色为灰色

Numbernumber=newNumber(1,2,3.1415926535,greyBackground);

sheet.addCell(number);

//整型数据

WritableFontboldNumber=newWritableFont(WritableFont.ARIAL,10,WritableFont.BOLD);//设置黑体

WritableCellFormatboldNumberFomate=newWritableCellFormat(boldNu

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1