Java对Excel表格的操作.docx
- 文档编号:4019679
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:18
- 大小:21.39KB
Java对Excel表格的操作.docx
《Java对Excel表格的操作.docx》由会员分享,可在线阅读,更多相关《Java对Excel表格的操作.docx(18页珍藏版)》请在冰点文库上搜索。
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java Excel 表格 操作