您的位置:首页 > 编程语言 > Java开发

最简单的Java操作Excel方法

2007-12-25 15:45 597 查看
最简单的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(0, 0, "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(1, 0, "new Value", format));
//格式化输入一个NUMBER值。
sheet.addCell(new jxl.write.Number(1, 1, 9.99, new jxl.write.WritableCellFormat(new jxl.write.NumberFormat("#.#"))));
//格式化输入一个日期值。
sheet.addCell(new jxl.write.DateTime(2, 0, new 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(0, 2);
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(0, 2);
//判断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();}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: