前面引用一段摘抄下来的关于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);
分享到:
相关推荐
利用jExcelAPI可以修改已有的Excel文件,修改Excel文件的时候,除了打开文件的方式不同之外,其他操作和创建Excel是一样的。下面的例子是在我们已经生成的Excel文件中添加一个工作表: //修改Excel的类,添加一...
利用jExcelAPI可以修改已有的Excel文件,修改Excel文件的时候,除了打开文件的方式不同之外,其他操作和创建Excel是一样的。下面的例子是在我们已经生成的Excel文件中添加一个工作表: //修改Excel的类,添加一...
项目中想实现excel图表但POI不支持所以想到了这个方法。放上来抛砖引玉,感兴趣的欢迎大家交流 注:-------------------------------------------------------------------------- 其实现原理和利用JavaScript实现...
21.1 应用JXL组件操作Excel 776 21.2 应用POI组件操作Excel 807 第22章 报表与打印 829 22.1 Web打印 830 22.2 利用Word打印报表 833 22.3 利用Excel打印报表 838 22.4 应用WebBrowser+CSS套打邮寄 22.5 打印库存...
21.1 应用JXL组件操作Excel 776 21.2 应用POI组件操作Excel 807 第22章 报表与打印 829 22.1 Web打印 830 22.2 利用Word打印报表 833 22.3 利用Excel打印报表 838 22.4 应用WebBrowser+CSS套打邮寄 22.5 打印库存...
利用手机App实现记录家庭账务,可有效掌控家庭财务收支情况。...本代码主要使用第三方开源的jxl.jar完成对Excel文档的操作,包括可以在sd卡中查看Excel文档,也可以在项目中单击“导出帐单”查看记录。
SOAOffice 完全抛弃了传统利用Office服务器端自动化技术存取文档数据的种种弊端和缺陷,采用独创的专利技术构建了一个功能强大、简单易用的微软Office中间件平台,平台提供标准的.net和java组件接口,不但能够在线...
以高等院校目标考核管理系统的数据初始化操作为背景,通过JXL读取存储在Excel文件中的初始化数据作为具体建造者角色的实现逻辑,详细阐述了该方法的具体实现过程.通过测试与实践表明该数据初始化方法能够满足系统...
ttshop-b-s-ttshop b/s... 结合 jxl ,实现基本数据利用 excel导出数据和导入数据功能.10 . 系统中大量利用到 jquery ajax,实现极少页面跳转完成系统各种功能操作11. 产品图片的 html5 ajax上传 , 美图秀秀 web 插件进行
一个语言转换工具, Hibernate利用它实现 HQL 到 SQL 的转换模板相关操作需要包 javassist-3.9.0.GA.jar 代码生成工具 Hibernate用它在运行时扩展 Java类和实现,同cglib包 slf4j-api-1.5.8.jar和slf4j-log4j12-...
一个语言转换工具, Hibernate利用它实现 HQL 到 SQL 的转换模板相关操作需要包 javassist-3.9.0.GA.jar 代码生成工具 Hibernate用它在运行时扩展 Java类和实现,同cglib包 slf4j-api-1.5.8.jar和slf4j-log4j12...
Struts 2需要的jar包: 1.commons-fileupload.jar(commons项目中的关于文件上传的包, struts...excel表格:jxl.jar 操作pdf文件:iText-5.0.5.jar 统计图(JFreechart两个):jcommon-1.0.10.jar,jfreechart-1.0.6.jar