需jxl.jar包
package com.dheaven.mip.item;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.format.UnderlineStyle;
import jxl.write.DateFormat;
import jxl.write.DateTime;
import jxl.write.Boolean;
import jxl.write.Label;
import jxl.write.Number;
import jxl.write.NumberFormat;
import jxl.write.WritableCell;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableImage;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
public class excelDemo {
/**
* Description: 读取excel文件内容
*
* Java Excel API既可以从本地文件系统的一个文件(.xls),也可以从输入流中读取Excel数据表。
读取Excel数据表的第一步是创建Workbook(术语:工作薄),下面的代码片段举例说明了应该如何操作:
一旦创建了Workbook,我们就可以通过它来访问Excel Sheet(术语:工作表)。
在得到Cell对象后,通过getType()方法可以获得该单元格的类型,然后与API提供的基本类型相匹配,强制转换成相应的类型,
最后调用相应的取值方法getXXX(),就可以得到确定类型的值。
*/
public static void readexcel(){
Workbook rwb = null;
try{
InputStream is=new FileInputStream("D:/testWrite.xls");
//Workbook rwb = Workbook.getWorkbook(new File(sourcefile));
//Sheet[] sheets = rwb.getSheets();返回工作薄(Workbook)中工作表(Sheet)对象数组
//声名一个工作薄
rwb= Workbook.getWorkbook(is);
//获得工作薄的个数
rwb.getNumberOfSheets();
//既可能通过Sheet的名称来访问它,也可以通过下标来访问它。如果通过下标来访问的话,要注意的一点是下标从0开始,就像数组一样。
Sheet st = rwb.getSheet(0);
//获取某一列的所有单元格,返回的是单元格对象数组
//Cell[] cell = rs.getColumn(0);
int rows=st.getRows();
int cols=st.getColumns();
System.out.println("当前工作表的名字:"+st.getName());
System.out.println("总行数:"+rows);
System.out.println("总列数:"+cols);
//通用的获取cell值的方式,getCell(int column, int row) 列和行,都从0开始
for(int i=0;i<rows;i++){
for(int j=0;j<cols;j++){
Cell c1=st.getCell(j,i);
System.out.println(" 内容:"+c1.getContents());
}
}
}
catch(Exception e)
{
e.printStackTrace();
System.out.println("出错了");
}finally{
rwb.close();
}
}
/**
* Description: 写入excel文件
*
*/
public static void writerexcel(){
try
{
/**
* 只能通过API提供的工厂方法来创建Workbook,而不能使用WritableWorkbook的构造函数,
* 因为类WritableWorkbook的构造函数为protected类型
* method(1)直接从目标文件中读取WritableWorkbook wwb = Workbook.createWorkbook(new File(targetfile));
* method(2)如下实例所示 将WritableWorkbook直接写入到输出流
*/
File fileWrite = new File("D:/testWrite.xls");
fileWrite.createNewFile();
OutputStream os = new FileOutputStream(fileWrite);
WritableWorkbook wwb = Workbook.createWorkbook(os);
//创建Excel工作表 指定名称和位置
WritableSheet ws = wwb.createSheet("数据表",0);
//**************往工作表中添加数据*****************
//1.添加Label(列,行,内容)对象 .列,行----都从0开始
Label label = new Label(0,0,"1-1");
ws.addCell(label);
//添加带有字型Formatting对象
WritableFont wf = new WritableFont(WritableFont.TIMES,12,WritableFont.BOLD,true);
WritableCellFormat wcf = new WritableCellFormat(wf);
Label labelcf = new Label(1,1,"陪儿棒",wcf);
ws.addCell(labelcf);
//添加带有字体颜色的Formatting对象
WritableFont wfc = new WritableFont(WritableFont.ARIAL,10,WritableFont.NO_BOLD,false,
UnderlineStyle.NO_UNDERLINE,jxl.format.Colour.RED);
WritableCellFormat wcfFC = new WritableCellFormat(wfc);
Label labelCF = new Label(2,2,"可好了!",wcfFC);
ws.addCell(labelCF);
//2.添加Number对象
Number labelN = new Number(0,3,520);
ws.addCell((WritableCell) labelN);
//添加带有formatting的Number对象
NumberFormat nf = new NumberFormat("#.##");
WritableCellFormat wcfN = new WritableCellFormat(nf);
Number labelNF = new Number(1,5,3.1415926,wcfN);
ws.addCell(labelNF);
//3.添加Boolean对象
Boolean labelB = new jxl.write.Boolean(0,6,false);
ws.addCell(labelB);
//4.添加DateTime对象
jxl.write.DateTime labelDT = new jxl.write.DateTime(0,2,new java.util.Date());
ws.addCell(labelDT);
//添加带有formatting的DateFormat对象
DateFormat df = new DateFormat("dd MM yyyy hh:mm:ss");
WritableCellFormat wcfDF = new WritableCellFormat(df);
DateTime labelDTF = new DateTime(1,4,new java.util.Date(),wcfDF);
ws.addCell(labelDTF);
//添加图片对象,jxl只支持png格式图片 WritableImage(列,行,宽,高,image);
File image = new File("D:\\images.png");
WritableImage wimage = new WritableImage(0,1,2,2,image);
ws.addImage(wimage);
//写入工作表
wwb.write();
wwb.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
public static void main(String[] args) {
//写入excel
writerexcel();
//读取excel
readexcel();
}
}