jxl操作excel表格

基础内容来自http://blog.youkuaiyun.com/z562743237/article/details/8592012

项目中我们经常会遇到表格的操作,目前用的比较多的是jxl和poi两种方式操作表格。以下是用jxl读取表格和生成表格的方法。

下面是个完整的程序,只需要jxl.jar包就可以运行。

package com.sunyard.iccs.report.util;

import java.io.File;
import java.io.IOException;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;
public class Test {
 //测试方法
 public static void main(String[] args) {
  //保存在工程目录下
//  writeExcel("aaa.xls");
  //保存在D盘目录下
//  writeExcel("d:\\aaa.xls");
//  readExcel(new File("aaa.xls"));
	 
	 
//	 readExcel(new File("d:\\aaa.xls"));
 }
 /**
  * 创建一个excel表格,可以传入一个地址,自动在所给地址中创建一个excel并在里面写入内容。
  */
 public static void writeExcel(String fileName){
  //创建一个可写的工作薄
  WritableWorkbook wwb = null;
  try{
   //首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象
   wwb = Workbook.createWorkbook(new File(fileName));
  } catch(IOException e) {
   e.printStackTrace();
  }
  //判断工作薄是否为空
  if(wwb != null) {
   //创建一个可写的工作表
   //Workbook的createSheet方法有两个参数,第一个是工作表的名称,第二个是工作表在工作薄中的位置
   WritableSheet ws = wwb.createSheet("工作表名称", 1);
   //下面开始添加单元格
   for(int i=0;i<10;i++) {
    for(int j=0;j<5;j++) {
     //创建一个单元格
     //这里需要注意的是,在Excel中,第一个参数表示列,第二个表示行
     Label label = new Label(j, i, "这是第"+(i+1)+"行,第"+(j+1)+"列");
     try{
      //将单元格添加到工作表中
      ws.addCell(label);
     } catch(RowsExceededException e) {
      e.printStackTrace();
     } catch(WriteException e) {
      e.printStackTrace();
     }
    }
   }
   try {
    //将工作表写入工作薄中,不能写在for循环里,否则会报java.lang.NullPointerException异常
    wwb.write();
    System.out.println("Excel创建成功");
   } catch (IOException e) {
    e.printStackTrace();
   } finally {
    try {
     //关闭工作薄,释放资源
     wwb.close();
    } catch (WriteException e) {
     e.printStackTrace();
    } catch (IOException e) {
     e.printStackTrace();
    }
   }
  }
 }
 /**
  * 传入一个File类型的地址,能读取所给地址中文件的内容
  */
 public static void readExcel(File file) {
  //用来接受读取到的字符串
  StringBuffer sb = new StringBuffer();
  //定义一个工作薄
  Workbook wwb = null;
  try{
   //获取目标Excel表格
   wwb = Workbook.getWorkbook(file);
  } catch(BiffException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }
  //Excel表格中的所有工作表
  Sheet[] sheets = wwb.getSheets();
  if(sheets!=null&&sheets.length>0) {
   for(int i=0;i<sheets.length;i++) {
    //工作表中的所有行
    int rowNum = sheets[i].getRows();
    if(rowNum>0) {
     for(int j=0;j<rowNum;j++) {
      //每一行中的所有单元格
      Cell[] cells = sheets[i].getRow(j);
      if(cells!=null&&cells.length>0) {
       for(int k=0;k<cells.length;k++) {
        //将单元格中的内容拼接到sb中
        sb.append(cells[k].getContents());
        sb.append("\n");
       }
      }
     }
    }
   }
  }
  System.out.println(sb.toString());
  wwb.close();
 }
}

*********************************************************************************************************************************

下面三块内容的结果显示在下面的excel截图中。

以下是对单元格的格式(内容)进行操作。

            //输入数字,在excel中显示是常规
            jxl.write.Number number=new jxl.write.Number(0,0,2500.00);
            ws.addCell(number);
            //输入的是自定义的数字,在excel中显示是自定义
            jxl.write.NumberFormat numberFormat=new jxl.write.NumberFormat("#0.##");
            jxl.write.WritableCellFormat writableCellFormat=new WritableCellFormat(numberFormat);
            jxl.write.Number number1=new Number(1,1,0.2323,writableCellFormat);
            ws.addCell(number1);
            //输入的是日期,在excel中显示是常规
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
            String newdate = sdf.format(new Date());
            Label label = new Label(2, 2, newdate);
            ws.addCell(label);
            //输入的是文本,在excel中显示的是常规
            Label label1 = new Label(3, 3, "周星驰");
            ws.addCell(label1);
            //输入的是布尔值,在excel中显示是常规
            jxl.write.Boolean bool = new jxl.write.Boolean(4, 1, true);
            ws.addCell(bool);
以下是对单元格的属性进行操作。

            //合并单元格
            ws.mergeCells(0, 6, 3, 8);
            label = new Label(0, 6, "合并了12个单元格");//在合并的单元格中输入文字
            ws.addCell(label);
            //主要是改变单元格背景、字体、颜色等等
            WritableCellFormat wc = new WritableCellFormat();
            //设置字体居中
            wc.setAlignment(Alignment.CENTRE);
            //设置边框和边框线
            wc.setBorder(Border.ALL, BorderLineStyle.HAIR);
            //设置边框的颜色
            wc.setBackground(jxl.format.Colour.RED);
            Label label2 = new Label(0, 9, "字体", wc);
            ws.addCell(label2);

以下是对字体的相关操作。

           //设置字体的属性
            jxl.write.WritableFont wfont = new jxl.write.WritableFont(WritableFont.createFont("楷书"), 20);
            WritableCellFormat font = new WritableCellFormat(wfont);
            Label label3 = new Label(0, 10, "这是楷书字体", font);
            ws.addCell(label3);

以下是获取单元格的相关属性。(内容是上面的,输出结果在下面的截图中)

           /**
             * 获取单元格的属性
             */
            //获取所有的工作表
            jxl.write.WritableSheet[] sheetList = wwb.getSheets();
            //获取第1列所有的单元格
            jxl.Cell[] cellc = ws.getColumn(0);
            System.out.println(cellc.length);
            //获取第1行所有的单元格
            jxl.Cell[] cellr = ws.getRow(0);
            System.out.println(cellr.length);
            //获取第1行第1列的单元格
            Cell c = ws.getCell(0, 0);
            String value = c.getContents();
            System.out.println(value);





有时间再扯。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值