前面引用一段摘抄下来的关于jxl的介绍:
Java Excel是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容、创建新的Excel文件、更新已经存在的Excel文件。使用该 API非Windows操作系统也可以通过纯Java应用来处理Excel数据表。因为是使用Java编写的,所以我们在Web应用中可以通过JSP、 Servlet来调用API实现对Excel数据表的访问。
以下是我根据网上和api写的一个简单的例子:
packageexcel;

importjava.io.*;

importjxl.*;
importjxl.write.*;
importjxl.format.*;


/***//**
*实现对Excel报表的操作.调用了开源框架jxl.
*@authorshengyan
*@since
*@version0.0.0.1
*/

publicclassExcelHandle...{


/***//**
*实现对excel报表的读取.
*@paramsourcefile<code>String<code>parsepathoffile
*/

publicvoidreadExcel(Stringsourcefile)...{

try...{
//构建Workbook对象,只读Workbook对象
//直接从本地文件创建Workbook
//从输入流创建Workbook
InputStreamis=newFileInputStream(sourcefile);
//获得workbook工作薄
Workbookrwb=Workbook.getWorkbook(is);
//Workbookrwb=Workbook.getWorkbook(newFile(sourcefile));
//获取第一张Sheet工作表
Sheetrs=rwb.getSheet(0);
//获取第一行,第一列的值
Cellc00=rs.getCell(0,0);
Stringstrc00=c00.getContents();
//获取第一行,第二列的值
Cellc10=rs.getCell(1,0);
Stringstrc10=c10.getContents();
//获取第二行,第二列的值
Cellc11=rs.getCell(1,1);
Stringstrc11=c11.getContents();
//获得cell具体类型值的方式

if(c00.getType()==CellType.LABEL)...{
LabelCelllabelc00=(LabelCell)c00;
System.out.println(labelc00.getString());
}
System.out.println("Cell(0,0)"+"value:"+strc00
+";type:"+c00.getType());
System.out.println("Cell(1,0)"+"value:"+strc10
+";type:"+c10.getType());
System.out.println("Cell(1,1)"+"value:"+strc11
+";type:"+c11.getType());
rwb.close();
is.close();

}catch(Exceptione)...{
e.printStackTrace();
}

}


/***//**
*实现写Excel报表
*@paramsourcefile<code>String<code>parsepathoffile
*/

publicvoidwriteExcel(Stringsourcefile)...{

try...{
Filefile=newFile(sourcefile);
file.createNewFile();
OutputStreamos=newFileOutputStream(file);
//获得workbook
WritableWorkbookwwb=Workbook.createWorkbook(os);
//WritableWorkbookwwb=Workbook.createWorkbook(newFile(sourcefile));
//获得sheet1.名字,2.下标(从0开始)
WritableSheetws=wwb.createSheet("TestSheet1",0);

//行高和列宽
//将第一行的高度设为200
ws.setRowView(0,200);
//将第一列的宽度设为30
ws.setColumnView(0,30);

//1.添加的字体样式

/**//*
*获得字体
*第一个:TIMES是字体大小,他写的是18
*第二个:BOLD是判断是否为斜体,选择true时为斜体
*第三个:ARIAL
*第四个:UnderlineStyle.NO_UNDERLINE下划线
*第五个:jxl.format.Colour.RED字体颜色是红色的
*/
WritableFontwf=newWritableFont(WritableFont.TIMES,18,
WritableFont.BOLD,true);
WritableCellFormatwcfF=newWritableCellFormat(wf);

/**//*
*在Label()方法里面有三个参数
*第一个是代表列数,
*第二是代表行数,
*第三个代表要写入的内容
*第四个是可选项,是输入这个label里面的样式
*/
LabellabelC=newLabel(1,0,"ThisisaLabelcell",wcfF);
//把内容写进sheet里面
ws.addCell(labelC);

//合并cell单元格
Rangerang=ws.mergeCells(0,6,2,7);
WritableCellFormatccf=newWritableCellFormat();
//把水平对齐方式指定为居中
ccf.setAlignment(jxl.format.Alignment.CENTRE);
//设置自动换行
ccf.setWrap(true);
Labellabelz=newLabel(0,6,"mergelabel",ccf);
//Cellcell=rang.getTopLeft();
ws.addCell(labelz);

//3.添加Number对象
//3.1显示number对象数据的格式
//带有formatting的Number对象
NumberFormatnf=newjxl.write.NumberFormat("#.##");
WritableCellFormatwcfN=newjxl.write.WritableCellFormat(nf);

/**//*
*Number()方法参数说明:
*前两上表示输入的位置
*第三个表示输入的内容
*/
jxl.write.NumberlabelNF=newjxl.write.Number(1,1,3.1415926,wcfN);
ws.addCell(labelNF);

//4.添加Boolean对象
jxl.write.BooleanlabelB=newjxl.write.Boolean(0,2,false);
ws.addCell(labelB);

//5.添加DateTime对象

/**//*
*DateTime()方法的参数说明
*前两个表示输入的位置
*第三个表示输入的当前时间
*/
jxl.write.DateTimelabelDT=newjxl.write.DateTime(0,3,newjava.util.Date());
ws.addCell(labelDT);

//6.添加带有formatting的DateFormat对象
jxl.write.DateFormatdf=newjxl.write.DateFormat("ddMMyyyyhh:mm:ss");
jxl.write.WritableCellFormatwcfDF=newjxl.write.WritableCellFormat(df);
jxl.write.DateTimelabelDTF=newjxl.write.DateTime(1,3,newjava.util.Date(),wcfDF);
ws.addCell(labelDTF);

//7.添加带有字体颜色Formatting的对象
jxl.write.WritableFontwfc=newjxl.write.WritableFont(WritableFont.ARIAL,10,WritableFont.NO_BOLD,false,UnderlineStyle.NO_UNDERLINE,jxl.format.Colour.RED);
jxl.write.WritableCellFormatwcfFC=newjxl.write.WritableCellFormat(wfc);

//8.设置单元格样式
wcfFC.setBackground(jxl.format.Colour.RED);//设置单元格的颜色为红色
ws.addCell(newjxl.write.Label(6,0,"ilovechina",wcfFC));

//9.添加图片对象,jxl只支持png格式图片*pV)-s
Fileimage=newFile("c:/2.png");
WritableImagewimage=newWritableImage(0,1,2,2,image);
ws.addImage(wimage);

//写入excel
wwb.write();
wwb.close();
os.close();

}catch(Exceptione)...{
e.printStackTrace();
}
}


publicstaticvoidmain(String[]args)...{
ExcelHandlere=newExcelHandle();
Stringsourcefile="c:/Book1.xls";
Stringtagfile="c:/Book1.xls";
re.writeExcel(sourcefile);
re.readExcel(tagfile);
}

}
在jsp中做相关测试,创建一个writeExcel.jsp
<%
response.reset();//清除Buffer
response.setContentType("application/vnd.ms-excel");
File fileWrite = new File("f:/testWrite.xls");
fileWrite.createNewFile();
new FileOutputStream(fileWrite);
ExcelHandle.writeExcel(new FileOutputStream(fileWrite));
%>
在IE中浏览writeExcel.jsp就可以动态生成Excel文档了,其中response.setContentType ("application/vnd.ms-excel");语句必须要,才能确保不乱码,在jsp中输入<%@page contentType="application/vnd.ms-excel;charset=GBK"%>不行。
下面是jxl中经常使用的几个类或接口的中文注释.
Workbook类提供的方法
1. int getNumberOfSheets()
获得工作薄(Workbook)中工作表(Sheet)的个数,示例:
jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));
int sheets = rwb.getNumberOfSheets();
2. Sheet[] getSheets()
返回工作薄(Workbook)中工作表(Sheet)对象数组,示例:
jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));
Sheet[] sheets = rwb.getSheets();
3. String getVersion()
返回正在使用的API的版本号,好像是没什么太大的作用。
jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));
String apiVersion = rwb.getVersion();
Sheet接口提供的方法
1) String getName()
获取Sheet的名称,示例:
jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));
jxl.Sheet rs = rwb.getSheet(0);
String sheetName = rs.getName();
2) int getColumns()
获取Sheet表中所包含的总列数,示例:
jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));
jxl.Sheet rs = rwb.getSheet(0);
int rsColumns = rs.getColumns();
3) Cell[] getColumn(int column)
获取某一列的所有单元格,返回的是单元格对象数组,示例:
jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));
jxl.Sheet rs = rwb.getSheet(0);
Cell[] cell = rs.getColumn(0);
4) int getRows()
获取Sheet表中所包含的总行数,示例:
jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));
jxl.Sheet rs = rwb.getSheet(0);
int rsRows = rs.getRows();
5) Cell[] getRow(int row)
获取某一行的所有单元格,返回的是单元格对象数组,示例:
jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));
jxl.Sheet rs = rwb.getSheet(0);
Cell[] cell = rs.getRow(0);
6) Cell getCell(int column, int row)
获取指定单元格的对象引用,需要注意的是它的两个参数,第一个是列数,第二个是行数,这与通常的行、列组合有些不同。
jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));
jxl.Sheet rs = rwb.getSheet(0);
Cell cell = rs.getCell(0, 0);
Java Excel是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容、创建新的Excel文件、更新已经存在的Excel文件。使用该 API非Windows操作系统也可以通过纯Java应用来处理Excel数据表。因为是使用Java编写的,所以我们在Web应用中可以通过JSP、 Servlet来调用API实现对Excel数据表的访问。
以下是我根据网上和api写的一个简单的例子:
packageexcel;
importjava.io.*;
importjxl.*;
importjxl.write.*;
importjxl.format.*;

/***//**
*实现对Excel报表的操作.调用了开源框架jxl.
*@authorshengyan
*@since
*@version0.0.0.1
*/
publicclassExcelHandle...{

/***//**
*实现对excel报表的读取.
*@paramsourcefile<code>String<code>parsepathoffile
*/
publicvoidreadExcel(Stringsourcefile)...{
try...{
//构建Workbook对象,只读Workbook对象
//直接从本地文件创建Workbook
//从输入流创建Workbook
InputStreamis=newFileInputStream(sourcefile);
//获得workbook工作薄
Workbookrwb=Workbook.getWorkbook(is);
//Workbookrwb=Workbook.getWorkbook(newFile(sourcefile));
//获取第一张Sheet工作表
Sheetrs=rwb.getSheet(0);
//获取第一行,第一列的值
Cellc00=rs.getCell(0,0);
Stringstrc00=c00.getContents();
//获取第一行,第二列的值
Cellc10=rs.getCell(1,0);
Stringstrc10=c10.getContents();
//获取第二行,第二列的值
Cellc11=rs.getCell(1,1);
Stringstrc11=c11.getContents();
//获得cell具体类型值的方式
if(c00.getType()==CellType.LABEL)...{
LabelCelllabelc00=(LabelCell)c00;
System.out.println(labelc00.getString());
}
System.out.println("Cell(0,0)"+"value:"+strc00
+";type:"+c00.getType());
System.out.println("Cell(1,0)"+"value:"+strc10
+";type:"+c10.getType());
System.out.println("Cell(1,1)"+"value:"+strc11
+";type:"+c11.getType());
rwb.close();
is.close();
}catch(Exceptione)...{
e.printStackTrace();
}
}

/***//**
*实现写Excel报表
*@paramsourcefile<code>String<code>parsepathoffile
*/
publicvoidwriteExcel(Stringsourcefile)...{
try...{
Filefile=newFile(sourcefile);
file.createNewFile();
OutputStreamos=newFileOutputStream(file);
//获得workbook
WritableWorkbookwwb=Workbook.createWorkbook(os);
//WritableWorkbookwwb=Workbook.createWorkbook(newFile(sourcefile));
//获得sheet1.名字,2.下标(从0开始)
WritableSheetws=wwb.createSheet("TestSheet1",0);
//行高和列宽
//将第一行的高度设为200
ws.setRowView(0,200);
//将第一列的宽度设为30
ws.setColumnView(0,30);
//1.添加的字体样式
/**//*
*获得字体
*第一个:TIMES是字体大小,他写的是18
*第二个:BOLD是判断是否为斜体,选择true时为斜体
*第三个:ARIAL
*第四个:UnderlineStyle.NO_UNDERLINE下划线
*第五个:jxl.format.Colour.RED字体颜色是红色的
*/
WritableFontwf=newWritableFont(WritableFont.TIMES,18,
WritableFont.BOLD,true);
WritableCellFormatwcfF=newWritableCellFormat(wf);
/**//*
*在Label()方法里面有三个参数
*第一个是代表列数,
*第二是代表行数,
*第三个代表要写入的内容
*第四个是可选项,是输入这个label里面的样式
*/
LabellabelC=newLabel(1,0,"ThisisaLabelcell",wcfF);
//把内容写进sheet里面
ws.addCell(labelC);
//合并cell单元格
Rangerang=ws.mergeCells(0,6,2,7);
WritableCellFormatccf=newWritableCellFormat();
//把水平对齐方式指定为居中
ccf.setAlignment(jxl.format.Alignment.CENTRE);
//设置自动换行
ccf.setWrap(true);
Labellabelz=newLabel(0,6,"mergelabel",ccf);
//Cellcell=rang.getTopLeft();
ws.addCell(labelz);
//3.添加Number对象
//3.1显示number对象数据的格式
//带有formatting的Number对象
NumberFormatnf=newjxl.write.NumberFormat("#.##");
WritableCellFormatwcfN=newjxl.write.WritableCellFormat(nf);
/**//*
*Number()方法参数说明:
*前两上表示输入的位置
*第三个表示输入的内容
*/
jxl.write.NumberlabelNF=newjxl.write.Number(1,1,3.1415926,wcfN);
ws.addCell(labelNF);
//4.添加Boolean对象
jxl.write.BooleanlabelB=newjxl.write.Boolean(0,2,false);
ws.addCell(labelB);
//5.添加DateTime对象
/**//*
*DateTime()方法的参数说明
*前两个表示输入的位置
*第三个表示输入的当前时间
*/
jxl.write.DateTimelabelDT=newjxl.write.DateTime(0,3,newjava.util.Date());
ws.addCell(labelDT);
//6.添加带有formatting的DateFormat对象
jxl.write.DateFormatdf=newjxl.write.DateFormat("ddMMyyyyhh:mm:ss");
jxl.write.WritableCellFormatwcfDF=newjxl.write.WritableCellFormat(df);
jxl.write.DateTimelabelDTF=newjxl.write.DateTime(1,3,newjava.util.Date(),wcfDF);
ws.addCell(labelDTF);
//7.添加带有字体颜色Formatting的对象
jxl.write.WritableFontwfc=newjxl.write.WritableFont(WritableFont.ARIAL,10,WritableFont.NO_BOLD,false,UnderlineStyle.NO_UNDERLINE,jxl.format.Colour.RED);
jxl.write.WritableCellFormatwcfFC=newjxl.write.WritableCellFormat(wfc);
//8.设置单元格样式
wcfFC.setBackground(jxl.format.Colour.RED);//设置单元格的颜色为红色
ws.addCell(newjxl.write.Label(6,0,"ilovechina",wcfFC));
//9.添加图片对象,jxl只支持png格式图片*pV)-s
Fileimage=newFile("c:/2.png");
WritableImagewimage=newWritableImage(0,1,2,2,image);
ws.addImage(wimage);
//写入excel
wwb.write();
wwb.close();
os.close();
}catch(Exceptione)...{
e.printStackTrace();
}
}

publicstaticvoidmain(String[]args)...{
ExcelHandlere=newExcelHandle();
Stringsourcefile="c:/Book1.xls";
Stringtagfile="c:/Book1.xls";
re.writeExcel(sourcefile);
re.readExcel(tagfile);
}
}在jsp中做相关测试,创建一个writeExcel.jsp
<%
response.reset();//清除Buffer
response.setContentType("application/vnd.ms-excel");
File fileWrite = new File("f:/testWrite.xls");
fileWrite.createNewFile();
new FileOutputStream(fileWrite);
ExcelHandle.writeExcel(new FileOutputStream(fileWrite));
%>
在IE中浏览writeExcel.jsp就可以动态生成Excel文档了,其中response.setContentType ("application/vnd.ms-excel");语句必须要,才能确保不乱码,在jsp中输入<%@page contentType="application/vnd.ms-excel;charset=GBK"%>不行。
下面是jxl中经常使用的几个类或接口的中文注释.
Workbook类提供的方法
1. int getNumberOfSheets()
获得工作薄(Workbook)中工作表(Sheet)的个数,示例:
jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));
int sheets = rwb.getNumberOfSheets();
2. Sheet[] getSheets()
返回工作薄(Workbook)中工作表(Sheet)对象数组,示例:
jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));
Sheet[] sheets = rwb.getSheets();
3. String getVersion()
返回正在使用的API的版本号,好像是没什么太大的作用。
jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));
String apiVersion = rwb.getVersion();
Sheet接口提供的方法
1) String getName()
获取Sheet的名称,示例:
jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));
jxl.Sheet rs = rwb.getSheet(0);
String sheetName = rs.getName();
2) int getColumns()
获取Sheet表中所包含的总列数,示例:
jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));
jxl.Sheet rs = rwb.getSheet(0);
int rsColumns = rs.getColumns();
3) Cell[] getColumn(int column)
获取某一列的所有单元格,返回的是单元格对象数组,示例:
jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));
jxl.Sheet rs = rwb.getSheet(0);
Cell[] cell = rs.getColumn(0);
4) int getRows()
获取Sheet表中所包含的总行数,示例:
jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));
jxl.Sheet rs = rwb.getSheet(0);
int rsRows = rs.getRows();
5) Cell[] getRow(int row)
获取某一行的所有单元格,返回的是单元格对象数组,示例:
jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));
jxl.Sheet rs = rwb.getSheet(0);
Cell[] cell = rs.getRow(0);
6) Cell getCell(int column, int row)
获取指定单元格的对象引用,需要注意的是它的两个参数,第一个是列数,第二个是行数,这与通常的行、列组合有些不同。
jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));
jxl.Sheet rs = rwb.getSheet(0);
Cell cell = rs.getCell(0, 0);
本文详细介绍了JavaExcel jxl框架的功能与使用方法,包括如何读取Excel文件内容、创建及更新Excel文件等操作。此外还提供了具体的代码示例,帮助读者更好地理解和运用jxl框架。
3万+

被折叠的 条评论
为什么被折叠?



