欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java操作Excel之jxl

程序员文章站 2024-02-24 13:31:58
...

前言:
很多时候我们的程序都有操作Excel的需求,如自动报表,将查询结果写入Excel等等需求。其实java操作Excel有三个第三方库可以用,Apache的POI,jxls,以及本文的jxl。
jxls其实是封装了POI,但是他和POI,jxl不同的是它提出了一个非常有趣的概念,基于模板操作Excel数据的写入,节省了大量的java代码来操作绘制Excel样式。
jxl和POI相比,POI的功能更多一点,同时支持Excel2007的格式。如果数据量超过65560那就使用POI因为2007版支持一百万行+的数据量。
那么jxl的优点呢,个认为轻量jar包只有几百kb,同时功能强大基本可以满足各种需求,同时它完全用代码控制excel对表格把控更强同时性能也比POI更好一点。什么场景使用比较合适,数据量不是很大而且样式比较复杂Excel需求。缺点就是代码量大,尤其是模板代码。
闲话不多说开始上代码说明:

package com.kk.jxl;

import java.io.File;
import java.io.IOException;
import java.util.Date;

import jxl.Workbook;
import jxl.format.Alignment;
import jxl.format.Border;
import jxl.format.BorderLineStyle;
import jxl.format.Colour;
import jxl.format.UnderlineStyle;
import jxl.write.DateTime;
import jxl.write.Label;
import jxl.write.Number;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;

public class jxlTest {
    public static  void main(String[] args) throws IOException, RowsExceededException, WriteException{
    //创建一个Excel文件
    WritableWorkbook book = Workbook.createWorkbook(new File("D://img//测试表1.xls"));

    /*
     *创建excel中的页面,设置页面名称,页面号有零开始,页面会按页面号从小到大的顺序
     * 在excel中从左向右排
     */
     WritableSheet sheet1 = book.createSheet("第一个工作簿", 0);
     WritableSheet sheet2 = book.createSheet("第二个工作簿", 1);

    //设置单元格的样式
    WritableCellFormat cellFormat = new WritableCellFormat();
    //设置水平居中
    cellFormat.setAlignment(jxl.format.Alignment.CENTRE);
    //设置自动换行
    cellFormat.setWrap(true);

    //设置显示的字体样式,字体,字号,是否粗体,字体颜色
    cellFormat.setFont(new WritableFont(WritableFont.createFont("楷体  _GB2312"),12,WritableFont.NO_BOLD,false,
                            UnderlineStyle.NO_UNDERLINE,Colour.RED)
                );
    //设置单元格背景色
    cellFormat.setBackground(jxl.format.Colour.BROWN);
    //设置单元格内容居中
    cellFormat.setAlignment(Alignment.CENTRE);
    //设置边框
    cellFormat.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THIN
                        ,jxl.format.Colour.BLACK);
    //想要全部加上边框线 用循环控制
    for (int j = 0; j < 25; j++) {
        for (int i = 0; i < 25; i++) {
        sheet1.addCell(new Label(i,j,"",cellFormat));
            } 
         }

    //创建一个单元格,并按行列坐标进行指定的内容写入     (注:0,0,"Excel"零代表坐标位置)
    Label label1 = new Label(0,0,"Excel",cellFormat);
    sheet1.addCell(new Label(0,1,"初始登记",cellFormat));
    sheet1.addCell(new Label(1,1,"dcp输出【看",cellFormat));
    sheet1.addCell(new Label(2,2,"dcp输出【看",cellFormat));
    Label ladel2 = new Label(0,0,"test3614");
    //将行列的值写入里面
    sheet1.addCell(label1);

    //插入图片
    File file = new File("D:\\img\\未标志3.png");
    /*
     * 设置图片位置,前两个参数为插入图片的单元格坐标,后面设置从插入的单元格开始横向和纵向
     * 分别要占用的单元格个数。最后传入图片文件
     */
     jxl.write.WritableImage image=new jxl.write.WritableImage(6, 0, 3, 3, file);
     //将图片插入页面
     sheet1.addImage(image);

     //创建数字类型的行列值
     Number number1 = new Number(4,0,789.123);
     Number number2 = new Number(4,0,789.12345678910);
     //将数字类型的行列值插入指定的页面   (addCell:添加单元格内容)
     sheet1.addCell(number1);
     sheet2.addCell(number2);

     //创建日期类型数据,并添加
     DateTime dateTime = new DateTime(5,0 ,new Date() );
     sheet1.addCell(dateTime);

     //开始执行写入操作
     book.write();
     //关闭流
     book.close();









  }
}
相关标签: Java操作Excel