jxl操作excel表格

来源:互联网 发布:郭天祥单片机教材下载 编辑:程序博客网 时间:2024/09/21 09:20

基础内容来自http://blog.csdn.net/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);





有时间再扯。。。

0 0
原创粉丝点击