`
java-mans
  • 浏览: 11421276 次
文章分类
社区版块
存档分类
最新评论

利用jxl实现excel操作

 
阅读更多
前面引用一段摘抄下来的关于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表格的工具类库jxl

     利用jExcelAPI可以修改已有的Excel文件,修改Excel文件的时候,除了打开文件的方式不同之外,其他操作和创建Excel是一样的。下面的例子是在我们已经生成的Excel文件中添加一个工作表:  //修改Excel的类,添加一...

    Excel数据操纵-jar包-jxl.jar

     利用jExcelAPI可以修改已有的Excel文件,修改Excel文件的时候,除了打开文件的方式不同之外,其他操作和创建Excel是一样的。下面的例子是在我们已经生成的Excel文件中添加一个工作表:  //修改Excel的类,添加一...

    使用POI和Excel VBA生成图表

    项目中想实现excel图表但POI不支持所以想到了这个方法。放上来抛砖引玉,感兴趣的欢迎大家交流 注:-------------------------------------------------------------------------- 其实现原理和利用JavaScript实现...

    Java_Web开发实战1200例第1卷.part2

    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 打印库存...

    Java_Web开发实战1200例第1卷.part3

    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 中间件

    SOAOffice 完全抛弃了传统利用Office服务器端自动化技术存取文档数据的种种弊端和缺陷,采用独创的专利技术构建了一个功能强大、简单易用的微软Office中间件平台,平台提供标准的.net和java组件接口,不但能够在线...

    Java EE数据初始化应用中的设计模式解决方案

    以高等院校目标考核管理系统的数据初始化操作为背景,通过JXL读取存储在Excel文件中的初始化数据作为具体建造者角色的实现逻辑,详细阐述了该方法的具体实现过程.通过测试与实践表明该数据初始化方法能够满足系统...

    ttshop-b-s-:ttshop bs 在线销售管理系统

    ttshop-b-s-ttshop b/s... 结合 jxl ,实现基本数据利用 excel导出数据和导入数据功能.10 . 系统中大量利用到 jquery ajax,实现极少页面跳转完成系统各种功能操作11. 产品图片的 html5 ajax上传 , 美图秀秀 web 插件进行

    java开发常用jar包

    一个语言转换工具, Hibernate利用它实现 HQL 到 SQL 的转换模板相关操作需要包 javassist-3.9.0.GA.jar 代码生成工具 Hibernate用它在运行时扩展 Java类和实现,同cglib包 slf4j-api-1.5.8.jar和slf4j-log4j12-...

    web开发常用jar

    一个语言转换工具, Hibernate利用它实现 HQL 到 SQL 的转换模板相关操作需要包 javassist-3.9.0.GA.jar 代码生成工具 Hibernate用它在运行时扩展 Java类和实现,同cglib包 slf4j-api-1.5.8.jar和slf4j-log4j12...

    web项目常用jar包及说明.zip

    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

Global site tag (gtag.js) - Google Analytics