jxl 读写Excel实例

        本篇文章主要讲的是jxl 操作Excel的三个简单的实例,一个是读取Excel表格数据,一个是 写一个新的Excel表格,最后是更新现有的Excel表格。在开始全面学习 jxl 之前,我们先看几个例子,让大家大概整体的了解一下jxl 是怎么操作Excel表的,以使之后更有兴趣,更好地学习jxl。

        

        读Excel表格数据:

        

import java.io.File;
import java.io.IOException;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;

/**
 *
 * @author yrs
 */
public class TRead {
    
    public static void read (Workbook book) {
        int rows;
        //得到Excel中工作表数
        int sheetNumber = book.getNumberOfSheets();
        //得到每个表的名称
        String [] sheetNameList = book.getSheetNames();
        //得到每个工作表
        Sheet [] sheetList = book.getSheets();
        
        //遍历每个单元格,得到单元格的内容,并输出。注意得到单元格的内容是以字符串形式返回的。
        for(int i = 0;i < sheetNumber;i++) {
            System.out.println("############## " + sheetNameList[i] + " ##############");
            //得到该工作表中数据的行数
            rows = sheetList[i].getRows();
            for(int j = 0;j < rows;j++) {
                //得到每一行的单元格
                Cell [] cellList = sheetList[i].getRow(j);
                for (Cell cell : cellList) {
                    System.out.print(cell.getContents() + "  ");
                }
                System.out.println();
            }          
        }      
    }
    public static void main(String [] args) throws IOException, BiffException  {
        try {
            //文件D://JEtest//read.xls 要存在,并且含有数据。
            File file = new File("D://JEtest//read.xls");
            //得到工作簿
            Workbook book = Workbook.getWorkbook(file); 
            TRead.read(book);
            book.close();            
        }catch (IOException | BiffException e) {
            System.out.println("Exception:  " + e);
            throw e;
        }
    }  
}
      

        读Excel表格的步奏是:工作簿--》工作表--》单元格。 当然有时候对数据经行处理要知道数据的格式,这个要在取得单元格的时候对它进行数据类型的判断,然后再转化成相应的类型,从而得到原数据类型的值。关于数据类型会在之后的文章中介绍。

 

        生成一个新的Excel表格,并向里面写数据:


import java.io.File;
import java.io.IOException;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import jxl.write.Label;
import jxl.write.Number;
import jxl.write.Boolean;
import jxl.write.DateFormat;
import jxl.write.DateTime;
import jxl.write.NumberFormat;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;


/**
 *
 * @author yrs
 */
public class TWrite {
    
    public static void  write(WritableWorkbook wb) throws WriteException {
        WritableSheet wSheet = wb.createSheet("sheet1", 0);
        
        //添加Label对象 
        Label labelC = new Label(0, 0, "Label cell"); 
        wSheet.addCell(labelC);
        
        //添加Number对象 
        Number numberC = new Number(0, 1, 3.1415926); 
        wSheet.addCell(numberC); 
        
        // 3.添加Boolean对象 
        Boolean booleanC = new Boolean(0, 2, true); 
        wSheet.addCell(booleanC); 
        
        // 4.添加DateTime对象 
        DateTime dateTimeC = new DateTime(0, 3, new java.util.Date()); 
        wSheet.addCell(dateTimeC); 
        
        // 添加带有字型Formatting的对象 
        WritableFont wFont = new WritableFont( 
            WritableFont.TIMES, 18, WritableFont.BOLD, true); 
        WritableCellFormat wCellFormatC = new WritableCellFormat(wFont); 
        Label labelCF = new Label(1, 0, "Label Cell", wCellFormatC); 
        wSheet.addCell(labelCF); 
        
         // 添加带有formatting的Number对象 
        NumberFormat nFormat = new NumberFormat("#.##"); 
        WritableCellFormat wCellFormatN = new WritableCellFormat(nFormat);
        Number numberNF = new Number(1, 1, 3.1415926, wCellFormatN); 
        wSheet.addCell(numberNF); 
        
        // 添加带有formatting的DateFormat对象 
        DateFormat dFormat = new DateFormat( 
          "yyyy MM dd hh:mm:ss"); 
        WritableCellFormat wCellFormatD = new WritableCellFormat(dFormat); 
        DateTime dateTimeDF = new DateTime(1, 3, new java.util.Date(), wCellFormatD); 
        wSheet.addCell(dateTimeDF);
        
    }
    public static void main(String [] args) throws IOException, BiffException, WriteException  {
        try {
            
            //文件D://JEtest//read.xls 不存在,若存在数据将会丢失
            File file = new File("D://JEtest//write.xls");
            //创建一个新的可写工作簿
            WritableWorkbook wb = Workbook.createWorkbook(file); 
            TWrite.write(wb);
            
            // 写入Exel工作表 
            wb.write();
            // 关闭Excel工作薄对象 
            wb.close();            
        }catch (IOException | WriteException e) {
            System.out.println("Exception:  " + e);
            throw e;
        }
    }  
}

        生成一个新的Excel表格,并向里面写入数据的顺序也是 工作簿 -- 工作表 -- 单元格。但是写入数据的顺序是反过来的,先向单元格中添加数据,然后添加到工作表上,最后写入工作簿中。这里需要注意的是,以 WritableWorkbook wb = Workbook.createWorkbook(file);  方式创建工作簿是创建了一个新的工作簿,如果file文件原来存在,那么它的数据将会失去,下一个例子将会讲解怎样更新一个Excel表格。 还有就是在工作簿关闭之前要把数据写入工作簿中,也就是 wb.write();。


        更新Excel表格数据:


import java.io.File;
import java.io.IOException;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;

/**
 *
 * @author yrs
 */
public class TUpdate {
    
    public static void update (WritableWorkbook wb) throws WriteException {
        WritableSheet sheet = wb.createSheet("第二页", 1);
        sheet.addCell(new Label(0,0,"第二页更新数据"));
        
    }
    
    public static void main(String [] args) throws IOException, BiffException, WriteException  {
        try {
            //文件D://JEtest//read.xls 要存在,并且含有数据。
            File file = new File("D://JEtest//update.xls");
            //得到工作簿
            Workbook book = Workbook.getWorkbook(file); 
            //创建一个可写工作簿
            WritableWorkbook wb = Workbook.createWorkbook(file, book);
            TUpdate.update(wb);
            wb.write();
            wb.close();
            book.close();            
        }catch (IOException | BiffException | WriteException e) {
            System.out.println("Exception:  " + e);
            throw e;
        }
    }  
}

       这里需要注意的是,创建可写工作簿的方式,你也可以把 file 文件换成其他的,这样会实现复制的效果。可以自己实现一下。

 

      好了,有了这些例子大家是不是更有兴趣学习jxl了,那就让我们一起来学吧。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值