在实际WEB项目开发过程中,常常需要我们开发WEB报表的功能,下面我们就学习一下两种常用的处理Excel表格的开源解决方案:Apache POI和JExcelApi(Jxl)的基本应用。
首先我们学习Jxl的用法:
1.jExcelApi开发环境的基本配置
首先从网站上下载jExcelApi,可以从这个下载地址:http://sourceforge.net/projects/jexcelapi/files/jexcelapi/下载。例如下载版本为2.6.12的JExcelApi,下载下来的文件为:jexcelapi_2_6_12.zip,解压后文件目录如下图:
其中docs目录下是API参考文档,src目录下是整个JExcelAPi的源代码,jx1.jar这个文件就是JExcelAPi打包的类库文件,如果要在项目中使用JExcelAPi只需要把jx1.jar文件的路径加入classpath中或项目lib目录下,对jxl更详细的分析请见:
http://www.cnblogs.com/xd502djj/archive/2011/08/15/2139394.html。
2. JXL特点:
1) 读取Excel95,97,2000,2003的数据;
2) 读取和写入Excel97及以后版本的公式;
3) 生成Excel2000,2003格式的电子表格;
4) 支持对字体,数字,日期的格式化;
5) 支持对单元格加阴影和加色彩;
6) 修改存在的工作表;
7) 支持图片的创建;
8) 日志记录可以定制;
3.Jxl 局限性:
JExcelApi不能够生成和读取图表的信息;
这个信息当图表被拷贝的时候仍然保存;
当增加一个图片到表中,仅仅PNG格式被支持。
4.生成简单的Excel文件的示例:
- public static void createExcel(OutputStream os) throws IOException,
- RowsExceededException, WriteException
- {
- // 创建工作区
- WritableWorkbook workbook = Workbook.createWorkbook(os);
- // 创建新的一页,sheet只能在工作簿中使用
- WritableSheet sheet = workbook.createSheet("test sheet1", 0);
- // 通过函数WritableFont()设置字体样式
- // 第一个参数表示所选字体
- // 第二个参数表示字体大小
- // 第三个参数表示粗体样式,有BOLD和NORMAL两种样式
- // 第四个参数表示是否斜体,此处true表示为斜体
- // 第五个参数表示下划线样式
- // 第六个参数表示颜色样式,此处为Red
- WritableFont wf = new WritableFont(WritableFont.TIMES, 18,
- WritableFont.BOLD, true, UnderlineStyle.NO_UNDERLINE,
- Colour.RED);
- CellFormat cf = new WritableCellFormat(wf);
- // 创建单元格即具体要显示的内容,new Label(0,0,"用户") 第一个参数是column 第二个参数是row
- // 第三个参数是content,第四个参数是可选项,为Label添加字体样式
- WritableCell employee = new Label(0, 0, "雇员", cf);
- // 通过sheet的addCell方法添加Label,注意一个cell/label只能使用一次addCell
- sheet.addCell(employee);
- WritableCell sex = new Label(1, 0, "性别");
- sheet.addCell(sex);
- // 将内容写到输出流中,然后关闭工作区,最后关闭输出流
- <span style="color: #ff0000;">workbook.write();
- workbook.close();</span>
- os.close();
- }
其中红色部分非常重要,write()方法是用于生成一个Excel文档,close()方法则用于使生成的Excel文档有效,否则不调用close()的话将会导致生成的Excel文档在打开时提示“文件的格式与扩展名指定的格式不一致”,如下图: