JExcelApi(JXL)学习笔记

在公司的项目中,有excel生成、导出的需求,因此学习了用JXL读写excel,做个简单的笔记,以供参考。
实现用java操作excel的工具,一般用的有两个:一个是JXL,另一个是apache的POI。JXL的功能不如POI强大,但是对中文的支持性好,因此在中文项目中用JXL的比较多。
[size=large]源代码介绍[/size]
JXL的源代码有11个包:
[img]http://dl.iteye.com/upload/attachment/509420/5cde8631-0b27-3487-89d3-f925551fa522.png[/img]
biff是binary interchange file format(二进制转换文件格式)的缩写,在源代码中,JXL中有好几个带有biff的包,我们在日常应用中要用到的是API中介绍的四个包:jxl,jxl.demo,jxl.format,jxl.write。还有两个包:jxl.common,jxl.common.logger,这两个也是jxl内部使用的包括Assert(断言,测试一个条件并可能是程序终止)、LengthConvert(单元格等的长度转换)、Logger(写日志)等通用的功能。
[size=large]JXL具体用法[/size]
其实,在jxl.demo包中已经很详尽地列举了JXL的基本用法,这里做个简单的记录,以供学习参考。
[b]创建一个工作簿:[/b]
如果只是读文件而不需要写操作:
Workbook wb = Workbook.getWorkbook(file path);
可读写操作:
WritableWorkbook wwb = Workbook.creatWorkbook();
[b]创建工作表:[/b]
WritableSheet sh = wwb.creatSheet("sheet name","sheet index");
[b]jxl.demo.CSV[/b]:类CSV是一个简单的演示类,它使用JXL的api来展示excel 97电子表格所包含的内容,需要传入参数workbook和outputstream等。

public class TestDemo {
public static String path = System.getProperty("user.dir");

@Test
public void testCsv() {
try {
File file = new File(path + "\\outDoc.xls");
Workbook wb = Workbook.getWorkbook(file);
OutputStream os = System.out;
CSV csv = new CSV(wb, os, "UTF-8", true);
} catch (Exception e) {}
}
}
[code]
控制台输出(每个单元格的内容用","隔开):
*** 集团 ****
test1,test2,test3

[b]jxl.demo.Demo[/b]:这是主要的演示类,解释了命令行开关用于决定如何调用演示程序。
[size=medium]jxl.demo.Escher/EscherDrawingGroup[/size]:如何展示图层数据的演示类。Escher:the Office Drawing Layer.
[b]jxl.demo.Features:[/b]输出单元格的特征。
(jxl.CellFeatures)cf.getComment():获取单元格的批注; cf.getDataValidationList():获取单元格的数据有效性特征。
控制台输出:
Cell A3 contents: 类别 comment: author:
test,test valadation: 0.0 <= x <= 100.0; x strlen
[b]jxl.demo.Formulas:[/b]输出单元格的公式。
(jxl.FormulaCell) fc.getFormula():获取单元格的公式。
控制台输出:
Formula in C40 value: 0 formula: C1+C2
[b]jxl.demo.ReadWrite[/b]
[b]jxl.demo.Write[/b]
[b]jxl.demo.XML[/b]

[b](1)添加的字体样式[/b]
jxl.write.WritableFont wf = new jxl.write.WritableFont(WritableFont.TIMES, 18, WritableFont.BOLD, true);
WritableFont()方法里参数说明:
这个方法算是一个容器,可以放进去好多属性
第一个:字体 ,WritableFont.TIMES
第二个:大小,18
第三个: 是否为粗体,WritableFont.BOLD 或WritableFont.NO_BOLD
第四个: 判断是否为斜体,选择true时为斜体
第五个: 样式,UnderlineStyle.NO_UNDERLINE 下划线
第六个: 颜色,jxl.format.Colour.RED 字体颜色是红色的
jxl.write.WritableCellFormat wcfF = new jxl.write.WritableCellFormat(wf);
jxl.write.Label labelC = new jxl.write.Label(0, 0, "This is a Label cell",wcfF);
ws.addCell(labelC);
在Label()方法里面有三个参数
第一个是代表列数,
第二是代表行数,
第三个代表要写入的内容
第四个是可选项,是输入这个label里面的样式
然后通过写sheet的方法addCell()把内容写进sheet里面。

[b](2)添加带有formatting的Number对象 [/b]
//保留两位小数,如果小数位为0则不显示
jxl.write.NumberFormat nf = new jxl.write.NumberFormat("#.##");
//保留两位小数,如果小数位不足两位,用0填充
jxl.write.NumberFormat nf = new jxl.write.NumberFormat("#.00");

[b](3)添加Number对象 [/b]
(3.1)显示number对象数据的格式
[code="java"]jxl.write.NumberFormat nf = new jxl.write.NumberFormat("#.##");
jxl.write.WritableCellFormat wcfN = new jxl.write.WritableCellFormat(nf);

jxl.write.Number labelNF = new jxl.write.Number(1, 1, 3.1415926, wcfN);
ws.addCell(labelNF);

Number()方法参数说明:
前两上表示输入的位置
第三个表示输入的内容

[b](4)添加Boolean对象 [/b]
jxl.write.Boolean labelB = new jxl.write.Boolean(0, 2, false); 
ws.addCell(labelB);


[b](5)添加DateTime对象 [/b]
jxl.write.DateTime labelDT = new jxl.write.DateTime(0, 3, new java.util.Date()); 
ws.addCell(labelDT);

DateTime()方法的参数说明
前两个表示输入的位置
第三个表示输入的当前时间

[b](6)添加带有formatting的DateFormat对象 [/b]
这个显示当前时间的所有信息,包括年月日小时分秒
jxl.write.DateFormat df = new jxl.write.DateFormat("dd MM yyyy hh:mm:ss"); 
jxl.write.WritableCellFormat wcfDF = new jxl.write.WritableCellFormat(df);
jxl.write.DateTime labelDTF = new jxl.write.DateTime(1, 3, new java.util.Date(), wcfDF);
ws.addCell(labelDTF);


[b](7)添加带有字体颜色Formatting的对象 [/b]
jxl.write.WritableFont wfc = new jxl.write.WritableFont(WritableFont.ARIAL, 10, WritableFont.NO_BOLD, false,UnderlineStyle.NO_UNDERLINE, jxl.format.Colour.RED); 
jxl.write.WritableCellFormat wcfFC = new jxl.write.WritableCellFormat(wfc);

import jxl.format.*
jxl.write.WritableFont wfc = new jxl.write.WritableFont(WritableFont.ARIAL,20,WritableFont.BOLD,false,UnderlineStyle.NO_UNDERLINE,jxl.format.Colour.GREEN);


(8)设置单元格样式

jxl.write.WritableCellFormat wcfFC = new jxl.write.WritableCellFormat(wfc);
wcfFc.setWrap(true);//需多行显示时,设置该属性,并在内容中加入换行符"\n"
wcfFC.setBackGround(jxl.format.Colour.RED);//设置单元格的颜色为红色
wcfFC = new jxl.write.Label(6,0,"i love china",wcfFC);

jxl.write.WritableFont wfc = new jxl.write.WritableFont(WritableFont.ARIAL, 10, WritableFont.NO_BOLD, false,UnderlineStyle.NO_UNDERLINE, jxl.format.Colour.RED);
jxl.write.WritableCellFormat wcfFC = new jxl.write.WritableCellFormat(wfc);

import="jxl.format.*
jxl.write.WritableFont wfc = new jxl.write.WritableFont(WritableFont.ARIAL,20,WritableFont.BOLD,false,UnderlineStyle.NO_UNDERLINE,jxl.format.Colour.GREEN);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值