// 构建Workbook对象, 只读Workbook对象
// 直接从本地文档创建Workbook
// 从输入流创建Workbook
Workbook workbook = null;
try {
workbook = Workbook.getWorkbook(new File("D://output.xls"));
} catch (Exception e) {
e.printStackTrace();
}
//返回正在使用的API的版本号,似乎是没什么太大的作用。
String apiVersion = workbook.getVersion();
System.out.println(apiVersion);
// 获得工作薄(Workbook)中工作表(Sheet)的个数
int sheets = workbook.getNumberOfSheets();
System.out.println(sheets);
//返回工作薄(Workbook)中工作表(Sheet)对象数组
Sheet[] sheetStringArr = workbook.getSheets();
for(int i=0;i<sheetStringArr.length;i++){
System.out.println(sheetStringArr[i].getName()); //返回Sheet标题
System.out.println(sheetStringArr[i].getColumns());//Sheet页的总列数
System.out.println(sheetStringArr[i].getColumn(0));//Sheet页的某一列的数组
System.out.println(sheetStringArr[i].getRows());//Sheet页的总行数
System.out.println(sheetStringArr[i].getRow(0));//Sheet页的某一行的数组
}
//获取第一张Sheet表 (术语:工作表) ,两种方法
Sheet sheet = workbook.getSheet(0); //用下标获得第一页
Sheet sheet = workbook.getSheet("TestCreateExcel"); //用名称获得第一页
// 返回第一行,第一列的值 (0 (第一个代表列) ,0 (第二个代表行))
Cell cell00=sheet.getCell(0, 0);
System.out.println(cell00.getType()); //获得代表类的类型 (返回类的类型)
System.out.println(cell00.getContents());//获得代表类的类型 (返回string)
//判断返回值类型
if(CellType.DATE==cell00.getType()){
System.out.print("是日期类"+cell00.getType());//Date()
}
if(CellType.LABEL==cell00.getType()){
System.out.print("是标签类"+cell00.getType());//Lable()
}
if(CellType.NUMBER==cell00.getType()){
System.out.print("是日期类"+cell00.getType());//Number()
}
//关闭对象
workbook.close();
===============================================================
和读取Excel工作表相似,首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象,这里要注意的是,只能通过API提供的工厂方法来创建Workbook,而不能使用WritableWorkbook的构造函数,因为类WritableWorkbook的构造函数为protected类型。
// 构建Workbook对象, 只读Workbook对象
// Method 1:创建可写入的Excel工作薄
File tempFile=new File("d:/output.xls");
WritableWorkbook workbook = Workbook.createWorkbook(tempFile);
// 创建Excel工作表 (名称,位置) ,该方法需要两个参数,一个是工作表的名称,另一个是工作表在工作薄中的位
//置
WritableSheet sheet = workbook.createSheet("TestCreateExcel", 0);
//1.添加带有字型Formatting的对象
WritableFont headerFont = new WritableFont(WritableFont.ARIAL, 12, WritableFont.BOLD, false, UnderlineStyle.NO_UNDERLINE, jxl.format.Colour.BLUE); //字体
//2.Format
WritableCellFormat headerFormat = new WritableCellFormat (headerFont); //Format 一下
//3.加入标签 (列,行,"内容",字体)
jxl.write.Label labelCF = new jxl.write.Label(1, 0, "This is a Label Cell", headerFormat );
//4.加入工作表
sheet.addCell(labelCF );
//设置列的宽度 (那列,宽度数字)
sheet.setColumnView(1,20);
//写入Exel工作表
wwb.write();
//关闭Excel工作薄对象
wwb.close();
=================================================================================
3、拷贝、更新Excel工作薄
接下来简要介绍一下如何更新一个已存在的工作薄,主要是下面二步操作,第一步是构造只读的Excel工作薄,第二步是利用已创建的Excel工作薄创建新的可写入的Excel工作薄,参考下面的代码片段:(完整代码见ExcelModifying.java)
//创建只读的Excel工作薄的对象
jxl.Workbook rw = jxl.Workbook.getWorkbook(new File(sourcefile));
//创建可写入的Excel工作薄对象
jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(new File(targetfile), rw);
//读取第一张工作表
jxl.write.WritableSheet ws = wwb.getSheet(0); //获得第一页
//获得第一个单元格对象
jxl.write.WritableCell wc = ws.getWritableCell(0, 0); //获得第一列,第一行
//判断单元格的类型, 做出相应的转化
if(wc.getType() == CellType.LABEL)
{
Label l = (Label)wc; //(强转)得到单元格的Label()对象
l.setString("The value has been modified."); //重新设置值
}
//写入Excel对象
wwb.write();
//关闭可写入的Excel对象
wwb.close();
//关闭只读的Excel对象
rw.close();