在公司的项目中,有excel生成、导出的需求,因此学习了用JXL读写excel,做个简单的笔记,以供参考。 
    实现用java操作excel的工具,一般用的有两个:一个是JXL,另一个是apache的POI。JXL的功能不如POI强大,但是对中文的支持性好,因此在中文项目中用JXL的比较多。 
源代码介绍 
    JXL的源代码有11个包: 
 
    biff是binary interchange file format(二进制转换文件格式)的缩写,在源代码中,JXL中有好几个带有biff的包,我们在日常应用中要用到的是API中介绍的四个包:jxl,jxl.demo,jxl.format,jxl.write。还有两个包:jxl.common,jxl.common.logger,这两个也是jxl内部使用的包括Assert(断言,测试一个条件并可能是程序终止)、LengthConvert(单元格等的长度转换)、Logger(写日志)等通用的功能。 
JXL具体用法 
    其实,在jxl.demo包中已经很详尽地列举了JXL的基本用法,这里做个简单的记录,以供学习参考。 
创建一个工作簿: 
    如果只是读文件而不需要写操作: 
    Workbook wb = Workbook.getWorkbook(file path); 
    可读写操作: 
     WritableWorkbook wwb = Workbook.creatWorkbook(); 
创建工作表: 
     WritableSheet sh = wwb.creatSheet("sheet name","sheet index"); 
jxl.demo.CSV:类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) {} 

}

控制台输出(每个单元格的内容用","隔开): 
*** 集团 **** 
test1,test2,test3

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

(1)添加的字体样式 
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里面。

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

(3)添加Number对象 
(3.1)显示number对象数据的格式

  1. jxl.write.NumberFormat nf = new jxl.write.NumberFormat("#.##");
  2. jxl.write.WritableCellFormat wcfN = new jxl.write.WritableCellFormat(nf);
  3. , 1, 3.1415926, wcfN);
  4. ws.addCell(labelNF);

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

(4)添加Boolean对象

  1. , 2, false);
  2. ws.addCell(labelB);

(5)添加DateTime对象

  1. , 3, new java.util.Date());
  2. ws.addCell(labelDT);

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

(6)添加带有formatting的DateFormat对象 
这个显示当前时间的所有信息,包括年月日小时分秒

  1. jxl.write.DateFormat df = new jxl.write.DateFormat("dd MM yyyy hh:mm:ss");
  2. jxl.write.WritableCellFormat wcfDF = new jxl.write.WritableCellFormat(df);
  3. , 3, new java.util.Date(), wcfDF);
  4. ws.addCell(labelDTF);

(7)添加带有字体颜色Formatting的对象

  1. , WritableFont.NO_BOLD, false,UnderlineStyle.NO_UNDERLINE, jxl.format.Colour.RED);
  2. jxl.write.WritableCellFormat wcfFC = new jxl.write.WritableCellFormat(wfc);
  3. import jxl.format.*
  4. ,WritableFont.BOLD,false,UnderlineStyle.NO_UNDERLINE,jxl.format.Colour.GREEN);

(8)设置单元格样式

  1. jxl.write.WritableCellFormat wcfFC = new jxl.write.WritableCellFormat(wfc);
  2. wcfFc.setWrap(true);//需多行显示时,设置该属性,并在内容中加入换行符"\n"
  3. wcfFC.setBackGround(jxl.format.Colour.RED);//设置单元格的颜色为红色
  4. ,0,"i love china",wcfFC);
  5. , WritableFont.NO_BOLD, false,UnderlineStyle.NO_UNDERLINE, jxl.format.Colour.RED);
  6. jxl.write.WritableCellFormat wcfFC = new jxl.write.WritableCellFormat(wfc);
  7. import="jxl.format.*
  8. ,WritableFont.BOLD,false,UnderlineStyle.NO_UNDERLINE,jxl.format.Colour.GREEN);

 

【转载】JExcelApi(JXL)学习笔记的更多相关文章

  1. 【转载】Java学习笔记

    转载:博主主页 博主的其他笔记汇总 : 学习数据结构与算法,学习笔记会持续更新: <恋上数据结构与算法> 学习Java虚拟机,学习笔记会持续更新: <Java虚拟机> 学习Ja ...

  2. 【转载】TensorFlow学习笔记:共享变量

    原文链接:http://jermmy.xyz/2017/08/25/2017-8-25-learn-tensorflow-shared-variables/ 本文是根据 TensorFlow 官方教程 ...

  3. (转载)西门子PLC学习笔记十五-(数据块及数据访问方式)

    一.数据块 数据块是在S7 CPU的存储器中定义的,用户可以定义多了数据块,但是CPU对数据块数量及数据总量是有限制的. 数据块与临时数据不同,当逻辑块执行结束或数据块关闭,数据块中的数据是会保留住的 ...

  4. 【转载】SpringMVC学习笔记

    转载于:SpringMVC笔记 SpringMVC 1.SpringMVC概述 MVC: Model(模型): 数据模型,提供要展示的数据,:Value Object(数据Dao) 和 服务层(行为S ...

  5. 转载的C#学习笔记

    转载地址:http://www.cnblogs.com/renyanlei/p/4075065.html 最近在一个培训机构里面教授Net知识.每天都会带领学生学习c#知识.我希望把每天学习的笔记记录 ...

  6. 【转载】javadoc学习笔记和可能的注意细节

    转载自:http://www.cnblogs.com/xt0810/p/3630996.html [前面的话] 这次开发项目使用jenkins做持续集成,PMD检查代码,Junit做单元测试,还会自动 ...

  7. 转载: GMM-HMM学习笔记

    转载地址:http://blog.csdn.net/davidie/article/details/46929269 最近几天钻研了语音处理中的GMM-HMM模型,阅读了一些技术博客和学术论文,总算是 ...

  8. 【转载】MQTT学习笔记——MQTT协议体验 Mosquitto安装和使用

    http://blog.csdn.net/xukai871105/article/details/39252653 0 前言     MQTT是IBM开发的一个即时通讯协议.MQTT是面向M2M和物联 ...

  9. (转载)设计模式学习笔记(十一)——Facade外观模式

    (转载)http://www.cnblogs.com/kid-li/archive/2006/07/10/446904.html Facade外观模式,是一种结构型模式,它主要解决的问题是:组件的客户 ...

随机推荐

  1. kibana5.6 源码分析以--环境搭建&技术准备

    Kibana是一个开源的分析与可视化平台,设计出来用于和Elasticsearch一起使用的.你可以用kibana搜索.查看.交互存放在Elasticsearch索引里的数据,使用各种不同的图表.表格 ...

  2. 查看环境变量CLASSPATH, PATH ,JAVA_HOME-------->mac

    终端(命令行)操作 推荐两篇博客:http://elf8848.iteye.com/blog/1582137 http://blog.csdn.net/done58/article/details/5 ...

  3. 报错分析---->jsp自定义标签:Unable to load tag handler class

    Unable to load tag handler class 无法加载标签处理程序类 处理自定义标签的类中如下: 调用自定义标签的jsp中如下:

  4. C/C++编译过程

    C/C++编译过程 C/C++编译过程主要分为4个过程 1) 编译预处理 2) 编译.优化阶段 3) 汇编过程 4) 链接程序 一.编译预处理 (1)宏定义指令,如#define Name Token ...

  5. 苏宁易购微信端 wx ios android other 通过js来控制样式

    <!DOCTYPE HTML><html><head><meta charset="UTF-8"><meta name=&qu ...

  6. LMAX Disruptor 原理

    http://mechanitis.blogspot.com/search/label/disruptor http://ifeve.com/disruptor/, 并发框架Disruptor译文 h ...

  7. app瘦身和包压缩技术有什么区别?

    APP瘦身 针对app文件中的文件进行优化,利用素材的拉伸,祛除不必要的文件,优化png, jpg素材,压缩音视频素材等方式实现app文件的减小. 包压缩技术 所谓包压缩,顾名思义就是将手游的安装包体 ...

  8. 【使用时发生的意外】HDFS 分布式写入问题 AlreadyBeingCreatedException

    进行追加文件时出现AlreadyBeingCreatedException错误 堆栈信息大致如下: org.apache.hadoop.ipc.RemoteException(org.apache.h ...

  9. Redis在实际项目中的一应用场景

    1.在游戏的等级排名,可以将用户信息放入到redis的有序集合中,然后取得相应的排名,不用自己写代码去排序. 2.利用rediss的数据特性的自增,自减属性,可以将项目中的一些列入阅读数,点赞数放入到 ...

  10. PushState+Ajax实现简单的单页面应用SPA

    http://www.helloweba.com/view-blog-386.html 单页面应用(Single Page Application)简称SPA,使用SPA构建的应用优点有用户体验好.速 ...