最简单的Java操作Excel方法

来源:互联网 发布:thinkphp D 源码 编辑:程序博客网 时间:2024/05/04 05:21

最简单的Java操作Excel方法

目前用Java操作Excel文件,有好几种方法:
1.用Excel另存为.html、.xml等存储格式,使用自己的程序来分析,用MIME值application/vnd.ms-excel指定Excel打开。
2.创建.csv文件作为操作格式,Excel能存储和读取,但是会损失信息。
3.使用开源的Java Excel API(http://www.andykhan.com/jexcelapi/),来操作Excel。

其中最简单是Java Excel API。 

import java.io.*;
import jxl.*;
import jxl.write.*;

//1.建立一个新Excel文件。
try{
    
//创建一个WritableWorkbook,输出目标d:/test.xsl。
    
//也可以直接输入ServletOutputStream中,由浏览器接受并调用Excel打开。
    
//如:"Workbook.createWorkbook(response.getOutputStream());"。
    jxl.write.WritableWorkbook book = Workbook.createWorkbook(new File("d:/test.xsl"));
    
//在位置0建立一个Sheet。
    jxl.write.WritableSheet sheet = book.createSheet("Sheet 1"0);
    
//在单元格坐标(0,0)添加一个LABEL。
    sheet.addCell(new jxl.write.Label(00"new Value"));
    
//LABEL可以被WritableCellFormat格式化。
    jxl.write.WritableCellFormat format = new jxl.write.WritableCellFormat(new jxl.write.WritableFont(WritableFont.ARIAL, 12, WritableFont.BOLD, false,Underlinestyle.NO_UNDERLINE, jxl.format.Colour.RED));
    sheet.addCell(
new jxl.write.Label(10"new Value", format));
    
//格式化输入一个NUMBER值。
    sheet.addCell(new jxl.write.Number(119.99new jxl.write.WritableCellFormat(new jxl.write.NumberFormat("#.#"))));
    
//格式化输入一个日期值。
    sheet.addCell(new jxl.write.DateTime(20new java.util.Date(), new jxl.write.WritableCellFormat(new jxl.write.DateFormat("yyyy-MM-dd hh:mm:ss"))));
    
//把内存中内容写入目标。
    book.write();
    
//关闭Workbook释放资源。
    book.close();}
catch(Exception e){
    e.printStackTrace();}


//2.读取一个已经存在的Excel文件。
try{
    
//创建一个只读的Workbook
    jxl.Workbook book = Workbook.getWorkbook(new FileInputStream("d:/test.xsl"));
    
//查看Sheet的数量是否大于0个。
    if(book.getNumberOfSheets()>0)
        
//取得第一个Sheet,这也可以传入Sheet的名字来取得。
        Sheet sheet = book.getSheet(0);
    
//输出Sheet的名称。
    System.out.println(sheet.getName());
    
//判断sheet的行数大于3。
    if(sheet.getRows()>3)
        
//判断sheet的列数至少有1列。
        if(sheet.getColumns()>1)
            
//取得第3行第1个Cell,每个Cell用坐标(列数,行数)来定位。
            Cell cell = rs.getCell(02);
    Cell[] cells
=null;
    
//以数组形式取得第1列所有单元格。
    cells=getColumn(0);
    
//判断下第3个单元格和cell是否相等。
    System.out.println(cells[2]==cell);
    
//以数组形式取得第3行所有单元格。
    cells=getRow(2);
    
//判断下第1个单元格和cell是否相等。
    System.out.println(cells[0]==cell);
    
//取得cell的值,作为字符串返回。
    String str = cell.getContents();
    
//如果要保留cell的类型
    
//常用的有LABEL(字符)、NUMBER(数字)、DATE(日期)
    if(cell.getType() == CellType.LABEL)
    
//返回字符串
        ((LabelCell)cell).getString();
    
else if(cell.getType() == CellType.NUMBER)
    
//返回数值
        ((NumberCell)cell).getValue();
    
else if(cell.getType() == CellType.NUMBER)
    
//返回日期
        ((DateCell)cell).getDate();


//3.更改Workbook的内容。
    
//上面的book是只读的,如果要更改Excel,还要生成一个WritableWorkbook。
    
//方法的第一个参数是写入目标,第二个参数是一个普通Workbook。
    jxl.write.WritableWorkbook wBook = Workbook.createWorkbook(new File("d:/test1.xsl"), book);
    
//取得WritableWorkbook中的Sheet,做为数组返回。
    Sheet[] sheets = wBook.getSheets();
    
//取数组中的第一个Sheet。
    jxl.write.WritableSheet wSheet = (WritableSheet)sheets[0];
    jxl.write.WritableCell wCell 
= wSheet.getWritableCell(02);
    
//判断Cell类型,写入数据
    if(wCell.getType() == CellType.LABEL)
        ((Label)wCell).setString(
"new Value!");
    
else if(wCell.getType() == CellType.NUMBER)
        ((NumberCell)wCell).setValue(
33.3);
    
//把内存中内容写入目标。
    wBook.write();
    
//关闭WritableWorkbook释放资源。
    wBook.close();}

    
//关闭Workbook释放资源。
        book.close();}
catch(Exception e){
    e.printStackTrace();}

原创粉丝点击