JAVA EXCEL 操所

所用java api: jxl.jar  (Jakarta 的 POI Project 也支持 excel 操作)

一.Jxl特征有如下描述:
 ● 支持Excel 95-2000的所有版本
 ● 生成Excel 2000标准格式
 ● 支持字体、数字、日期操作
 ● 能够修饰单元格属性
 ● 支持图像和图表

这套API对图形和图表的支持很有限,而且仅仅识别PNG格式。 

JXL在对资源回收利用方面做的还挺不错的。

速度效率 (来自网络) 

1.jxl插入数据比poi速度要快

2.jxl读取速度比poi速度要慢

二.开发说明 

 1. jxl操作excel包括对象WorkbookSheet Cell

    一个excel就对应一个Workbook对象,
    一个Workbook可以有多个Sheet对象
    一个Sheet对象可以有多个Cell对象

 2.读取数据

      选取 Excel 文件得到工作薄->选择工作表->选择Cell->读取信息     

     读取工作薄  Workbook workbook = Workbook.getWorkbook(new File("myfile.xls"));

   选择工作表 Sheet sheet = workbook.getSheet(0);

      选择单元格 Cell       Cell c2 = sheet.getCell(2,1);

   读取单元格信息     String stringc2 = c2.getContents();

3.Cell类

   getType() 能够返回单元格的类型,

   Cell的子类如 DateCell NumberCell LabelCell 来分别表示 日期,数字,字符类型的单元格

   eg:      if (c2.getType() == CellType.NUMBER)

            {
               NumberCell nc = (NumberCell) c2;
               double number b2 = nc.getValue();
             }

4.写数据

    创建工作薄->创建工作表->创建单元格

     创建工作薄 :WritableWorkbook wwb = Workbook.createWorkbook(new File(targetfile));

     (OutputStream os = new FileOutputStream(targetfile);  //直接把工作薄 与 输出流 对接

       WritableWorkbook wwb = Workbook.createWorkbook(os); )

     创建工作表 :WritableSheet ws = wwb.createSheet("通讯录", 0);//创建sheet

       创建单元格 :文本类单元格创建  Label labelC = new Label(0, 0, "This is a Label cell");

                            添加带有字型Formatting的对象

                      WritableFont wf = new WritableFont(WritableFont.TIMES, 18, WritableFont.BOLD, true);

                      WritableCellFormat wcfF = new WritableCellFormat(wf);
                      labelCF = new Label(1, 0, "This is a Label Cell", wcfF);
                      ws.addCell(labelCF);

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

               添加带有字体颜色Formatting的对象
                     WritableFont wfc = new WritableFont(WritableFont.ARIAL,10,WritableFont.NO_BOLD, false,
                     UnderlineStyle.NO_UNDERLINE, jxl.format.Colour.RED);
                     WritableCellFormat wcfFC = new WritableCellFormat(wfc);
     Label labelCFC = new Label(1, 0, "This is a Label Cell", wcfFC);
     ws.addCell(labelCF);
              添加Number对象
                     Number labelN = new jxl.write.Number(0, 1, 3.1415926);
     ws.addCell(labelN);
      添加带有formatting的Number对象
     NumberFormat nf = new NumberFormat("#.##");
     WritableCellFormat wcfN = new WritableCellFormat(nf);
     Number labelNF = new Number(1, 1, 3.1415926, wcfN);
     ws.addCell(labelNF);
      添加Boolean对象
     Boolean labelB = new jxl.write.Boolean(0, 2, false);
     ws.addCell(labelB);
       添加DateTime对象
     DateTime labelDT = new DateTime(0, 3, new java.util.Date());
     ws.addCell(labelDT);
     添加带有formatting的DateFormat对象
       DateFormat df = new DateFormat("dd MM yyyy hh:mm:ss");
     WritableCellFormat wcfDF = new WritableCellFormat(df);
     DateTime labelDTF = new DateTime(1, 3, new Date(), wcfDF);
     ws.addCell(labelDTF);
     添加公式单元格
     Fornual formual = new Formual(0,11,”Sum(A1:A9)”);
     wrb.addCell(formual);
      添加图像
     WritableImage wrimage=new WritableImage(1,5,10,10,new File(imageFilepath));
     wrb.addImage(wrimage);
     注意,API中注明只支持png文件。
      合并单元格
                     通过writablesheet.mergeCells(int x,int y,int m,int n);来实现的。
                     表示将从第x+1列,y+1行到m+1列,n+1行合并 (四个点定义了两个坐标,左上角和右下角)结果是合并了m-x+1行,n-y+1列,两者乘积就是合并的单元格

                     数量。
     sheet.mergeCells(0, 6, 3, 8);
     label = new Label(0, 6, "合并了12个单元格");
     sheet.addCell(label);


             添加单元格样式
                 主要是改变单元格背景、字体、颜色等等。
WritableCellFormat wc = new WritableCellFormat();
wc.setAlignment(Alignment.CENTRE); // 设置居中
wc.setBorder(Border.ALL, BorderLineStyle.THIN); // 设置边框线
wc.setBackground(jxl.format.Colour.RED); // 设置单元格的背景颜色
label = new Label(1, 5, "字体", wc);
sheet.addCell(label);
     设置单元格字体
WritableFont wfont =
new WritableFont(WritableFont.createFont("楷书"), 20);
WritableCellFormat font = new WritableCellFormat(wfont);
label = new Label(2, 6, "楷书", font);
sheet.addCell(label);
      写入到文件
wwb.write();// 写入数据
wwb.close();// 关闭文件
               

     拷贝、更新Excel工作薄
//创建只读的Excel工作薄的对象
jxl.Workbook rw = jxl.Workbook.getWorkbook(new File(sourcefile));
//创建可写入的Excel工作薄对象
WritableWorkbook wwb=Workbook.createWorkbook(new File(targetfile), rw);
//读取第一张工作表
jxl.write.WritableSheet ws = wwb.getSheet(0);
//获得第一个单元格对象
jxl.write.WritableCell wc = ws.getWritableCell(0, 0);
//判断单元格的类型做出相应的转化
if(wc.getType() == CellType.LABEL)
{
Label l = (Label)wc;
l.setString("The value has been modified.");
}
//写入Excel对象
wwb.write();
//关闭可写入的Excel对象
wwb.close();
//关闭只读的Excel对象
rw.close();


5.jxl.jar 常用API
   5.1 Workbook类提供的方法
int getNumberOfSheets() 获取工作表的总个数
Sheet[] getSheets() 获取数组型的工作表
Sheet getSheet(String name);//得到此对应名称的工作表
   5.2 Sheet接口提供的方法
String getName() 获取工作表的名称
int getColumns() 获取Sheet表中所包含的总列数
Cell[] getColumn(int column) 获取某一列的所有单元格,
返回的是单元格对象数组
int getRows() 获取Sheet表中所包含的总行数
Cell[] getRow(int row) 获取某一行的所有单元格,返回的是单元格对象数组
Cell getCell(int column, int row)获取指定单元格的对象引用,需要注意的是它的两个参数,第一个是列数,第二个是行数,这与通常的行、列组合有些不同
WritableSheet.setRowView(int i,int height); 指定第i+1行的高度
WritableSheet.setColumnView(int i,int width); 指定第i+1列的宽度 


   

     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值