最简单的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();}
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();}