Java操作Excel编程接口

利用java操作Excel,有个开源的东东-jxl.jar,可以到 http://sourceforge.net/project/showfiles.php?group_id=79926下载。
下面列出他的一些编程接口:
作用
Workbook表示只读的Excel工作簿和构造Workbook的工厂类
WritableWorkbook可写的Excel工作簿
Sheet工作簿内的只读工作表
WritableSheet工作簿内的可写工作表
Cell单元格的接口,读出单元格的信息
WritableCell可写单元格的接口
Label内容为字符类型的Cell,可读可写
Number内容为数字类型的Cell,可读可写
DateTime内容为日期类型的Cell,可读可写
Boolean内容为布尔量的Cell,可读可写
Formula内容为公式类型的Cell,可读可写
CellFormat读出单元格格式化信息
WritableCellFormat设定单元格的格式化信息
Font字体的接口,读出字体的信息
WritableFont可以设定字体信息


一.读取Excel文件内容


  //获得了Workbook对象之后,就可以通过它得到Sheet(工作表)对象了
  Workbook wb = Workbook.getWorkbook(File file);
  // 获得第一个工作表对象
  Sheet sheet = book.getSheet(0);
  // 得到第一列第一行的单元格
  Cell cell1 = sheet.getCell(0 ,0);

  // 获得第所以工作表对象
  Sheet[] sheet = wb.getSheets();
  //得到当前工作表的行数
  int rowNum = sheet[0-sheet.length].getRows();
  //得到当前行的所有单元格
  Cell[] cells = sheet[0-sheet.length].getRow(0-rowNum);
  //读取当前单元格的值
  String cellValue = cells[0-cells.length].getContents();
 //最后关闭资源,释放内存
 wb.close();


二.写入Excel文件
提示

不仅可以将workbook写入到文件中,也可以将workbook写入到一个输出流中,这样就可以通过web方式来让用户下载Excel文件。写入到输出流,要调用工厂方法Workbook.createWorkbook(OutputStream os)

//首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象
WritableWorkbook wwb = Workbook.createWorkbook(new File(String fileName));
//创建一个可写入的工作表
//Workbook的createSheet方法有两个参数,第一个是工作表的名称,第二个是工作表在工
作薄中的位置
WritableSheet ws = wwb.createSheet("sheet1", 0);
//下面开始添加单元格
for(int i=0;i<10;i++){
    for(int j=0;j<5;j++){
        //这里需要注意的是,在Excel中,第一个参数表示列,第二个表示行
        Label labelC = new Label(j, i, "这是第"+(i+1)+"行,第"+(j+1)+"列");
        try {
            //将生成的单元格添加到工作表中
            ws.addCell(labelC);


try {
    //从内存中写入文件中
    wwb.write();
    //关闭资源,释放内存
    wwb.close();


三.修改文件
利用jExcelAPI可以修改已有的Excel文件,修改Excel文件的时候,除了打开文件的方式不同之外,
其他操作和创建Excel是一样的。下面的例子是在我们已经生成的Excel文件中添加一个工作表:

// Excel获得文件
Workbook wb = Workbook.getWorkbook( new File( " test.xls " ));
// 打开一个文件的副本,并且指定数据写回到原文件
WritableWorkbook book = Workbook.createWorkbook( new File( " test.xls " ), wb);
// 添加一个工作表
WritableSheet sheet = book.createSheet( " 第二页 " , 1 );
sheet.addCell( new Label( 0 , 0 , " 第二页的测试数据 " ));
book.write();
book.close();


四.添加页眉页脚

/**
     * 向Excel中加入页眉页脚
     *
     * @param dataSheet
     * 待加入页眉的工作表
     * @param left
     * @param center
     * @param right
     */

    public static void setHeader(WritableSheet dataSheet, String left,
            String center, String right)
    {
        HeaderFooter hf = new HeaderFooter();
        hf.getLeft().append(left);
        hf.getCentre().append(center);
        hf.getRight().append(right);
        // 加入页眉
        dataSheet.getSettings().setHeader(hf);
        // 加入页脚
        dataSheet.getSettings().setFooter(hf);
    }


五.往Excel中插入图片图标

/**
     * 往Excel中插入图片
     *
     * @param dataSheet
     * 待插入的工作表
     * @param col
     * 图片从该列开始
     * @param row
     * 图片从该行开始
     * @param width
     * 图片所占的列数
     * @param height
     * 图片所占的行数
     * @param imgFile
     * 要插入的图片文件
     */

    public static void insertImg(WritableSheet dataSheet, int col, int row,
            int width, int height, File imgFile)
    {
        WritableImage img = new WritableImage(col, row, width, height, imgFile);
        dataSheet.addImage(img);
    }


六.格式化

    //指定了字串格式:字体为TIMES,字号16,加粗显示。WritableFont有非常丰富的构造子,供不同情况下使用,jExcelAPI的java-doc中有详细列表,这里不再列出
    WritableFont font1 = new WritableFont(WritableFont.TIMES, 16,WritableFont.BOLD);

    //使用了WritableCellFormat类,这个类非常重要,通过它可以指定单元格的各种属性,后面的单元格格式化中会有更多描述
    WritableCellFormat format1 = new WritableCellFormat(font1);

    // 把水平对齐方式指定为居中
    format1.setAlignment(jxl.format.Alignment.CENTRE);  

    // 把垂直对齐方式指定为居中
    format1.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
  
    //使用了Label类的构造子,指定了字串被赋予那种格式
    Label label = new Label(0, 0, "data 4 test", format1);


    //合并单元格
    //(m,n)到(p,q)的单元格全部合并
    WritableSheet.mergeCells(int m,int n,int p,int q);

    //行高和列宽
    //指定第i+1行的高度
    WritableSheet.setRowView(int i,int height);
    //指定第i+1列的宽度
    WritableSheet.setColumnView(int i,int width);

    //格式化数字
    //NumberFormats表示数字格式,预定了几种格式,象NumberFormats.INTEGER表示取整,NumberFormats.FLOAT表示小数去两位。也可以自己定义数字格式。
    WritableCellFormat integerFormat = new WritableCellFormat (NumberFormats.INTEGER);
    Number number2 = new Number(0, 4, 3.141519, integerFormat);
    sheet.addCell(number2);

    WritableCellFormat floatFormat = new WritableCellFormat (NumberFormats.FLOAT);
    Number number3 = new Number(1, 4, 3.141519, floatFormat);
    sheet.addCell(number3);

    NumberFormat fivedps = new NumberFormat("#.#####");
    WritableCellFormat fivedpsFormat = new WritableCellFormat(fivedps);
    Number number4 = new Number(2, 4, 3.141519, fivedpsFormat);
    sheet.addCell(number4);

    //也可以定义具有某种字体的数值格式:
    WritableCellFormat fivedpsFontFormat = new WritableCellFormat(times16font, fivedps);
    Number number5 = new Number(3, 4, 3.141519, fivedpsFontFormat);
    sheet.addCell(number5);

    //格式化日期
    //DateFormat表示日期格式。
    Date now = Calendar.getInstance().getTime();
    DateFormat customDateFormat = new DateFormat ("dd MMM yyyy hh:mm:ss");
    WritableCellFormat dateFormat = new WritableCellFormat (customDateFormat);
    DateTime dateCell = new DateTime(0, 6, now, dateFormat);
    sheet.addCell(dateCell);

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值