• 【转载】JExcelApi(JXL)学习笔记


    在公司的项目中,有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对象数据的格式 
    Java代码  收藏代码
    1. jxl.write.NumberFormat nf = new jxl.write.NumberFormat("#.##");   
    2. jxl.write.WritableCellFormat wcfN = new jxl.write.WritableCellFormat(nf);   
    3.   
    4. jxl.write.Number labelNF = new jxl.write.Number(113.1415926, wcfN);   
    5. ws.addCell(labelNF);   

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

    (4)添加Boolean对象
    Java代码  收藏代码
    1. jxl.write.Boolean labelB = new jxl.write.Boolean(02false);   
    2. ws.addCell(labelB);   


    (5)添加DateTime对象
    Java代码  收藏代码
    1. jxl.write.DateTime labelDT = new jxl.write.DateTime(03new java.util.Date());   
    2. ws.addCell(labelDT);   

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

    (6)添加带有formatting的DateFormat对象 
    这个显示当前时间的所有信息,包括年月日小时分秒
    Java代码  收藏代码
    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. jxl.write.DateTime labelDTF = new jxl.write.DateTime(13new java.util.Date(), wcfDF);   
    4. ws.addCell(labelDTF);   


    (7)添加带有字体颜色Formatting的对象
    Java代码  收藏代码
    1. jxl.write.WritableFont wfc = new jxl.write.WritableFont(WritableFont.ARIAL, 10, WritableFont.NO_BOLD, false,UnderlineStyle.NO_UNDERLINE, jxl.format.Colour.RED);   
    2. jxl.write.WritableCellFormat wcfFC = new jxl.write.WritableCellFormat(wfc);   
    3.   
    4. import jxl.format.*   
    5. jxl.write.WritableFont wfc = new jxl.write.WritableFont(WritableFont.ARIAL,20,WritableFont.BOLD,false,UnderlineStyle.NO_UNDERLINE,jxl.format.Colour.GREEN);   


    (8)设置单元格样式 

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



     





  • 相关阅读:
    DSYMTools App Bug 分析工具
    Xcode dSYM 文件
    sqlserver数据库18456错误怎么解决?
    C#两个DataTable拷贝问题:该行已经属于另一个表的解决方法
    SNF微信公众号客户端演示-微信开发客户端能干什么
    sqlserver中创建链接服务器图解教程
    C#日期格式转换大全
    C#-MVC开发微信应用(8)--菜单管理的实现
    C#-MVC开发微信应用(7)--在管理系统中同步微信用户分组信息
    C#-MVC开发微信应用(6)--用户分组信息管理
  • 原文地址:https://www.cnblogs.com/feiqihang/p/3557855.html
Copyright © 2020-2023  润新知