`

<摘自>飞:jxl简析2 [ http://www.emlog.net/fei ]

阅读更多

[<摘自>飞:jxl简析:http://www.emlog.net/fei]

(二)应用

       在进行实践前 , 我们需要对 excel 有一个大致的了解 ,excel 文件由一个工作簿 (Workbook) 组成 , 工作簿由工作表 (sheet) 组成 , 每个工作表又由很多单元格 (cell) 组成 . 工作簿有自己的特征 , 同样工作表 , 单元格也一样 . 从大局上了解了 excel 文件 , 对于我们更好的使用 jxl 是有一定的帮助的 . 具体请查看(一) API

  jxl 中其大概的层次是这样的  

名称

属性

Workbook

WorkbookSettings

Sheet

SheetSettings

Cell

CeLlFormat CellFeatures CellView CellType


Jxl excel

得到工作簿的方法主要有四个 :

       getWorkbook(File file)

       getWorkbook(File file,WorkSettings ws)

       getWorkbook(InputStream is)

       getWorkbook(InputStream is,WorkSettings ws)

参数有两个 :

第一个参数是必须的 : 文件或输入流 ,

第二个参数 : 工作簿 ws 是作为读出来的 excel 的一些约定 , 如地区 , 编码等 .

如果文件错误或格式错误 , 将会抛出 BiffException IOException.

  代码段 :  

Workbook wb=null;

try

{

wb = Workbook.getWorkbook(excelFile);

wb.close();

}

catch(BiffException ex){

       // 转换错误

}catch(IOException ex){

       //IO 错误

}

以上如果一切正常的话 , 将得到此 excel 文件的工作簿 . 接下来我们就可以通过此文件簿得到其他的东西了 . 以下是得到工作表有关的方法

  int getNumberOfSheets()// 工作表个数

Sheet getSheet(String  name);// 得到此对应名称的工作表

Sheet getSheet(int index);// 得到此序列号的工作表

Sheet[] getSheets();// 得到工作表数组

String[] getSheetNames();// 得到工作表名称数组

  示例代码如下:

Sheet sheet;

if(wb.getNumberOfSheets()>0)

{

       sheet = wb.getSheet(0);

}

以下的方法除非特别目的,否则用到的地方不多.

Range[] finaName(String name);// 得到此名称的表格区

Cell findCellByName(String name);// 得到此名称的 Cell

Cell getCell(String loc)

String[] getRangeNames();

与文件是否可写有关的

boolean isProected();

  得到了工作簿文件的某个工作表时.

对于工作表而言其主要的内容就是单元格了.

// 根据内容查看

Cell findCell(Pattern pattern,int firstCol,int firstRow,int lastCol,int lastRow,Boolean reverse)

Cell findCell(String content)

Cell findCell(String content,omt forstCol,int firstRow,int lastCol,int lastRow,Boolean reverse)

LabelCell findLabelCell(String contents)

  // 根据位置得到

Cell getCell(int col,int row)

Cell getCell(String loc)//loc 的格式为 A3/B1/C3 其相同于

getCell(CellReferenceHelper.getColumn(loc0,CellReferenceHelper.getRow(loc)), 所以相对而言其性能没有 Cell getCell(int col,int row)

  // 单元格数组

Cell[] getRows(int row)// 当前行单元格数组

Cell[] getCols(int col)// 当前列单元格数组

  // 特殊单元格数组

// 超链接表格

Hyperlink[] getHyperlinks();// 超链接数组

// 区域表格

Range[] getMergedCells();// 区域单元格数组

// 图像表格

Int getNumberOfImages()// 拥有图片数

Image getDrawing(int index)// 对应序号的图片

  // 工作表或多个表格一些自我属性

String getName()// 工作表名

int getRows()// 行数

int getCols()// 列数

SheetSettings getSettings()// 工作表设置

CellView getColumnView(int col)// 此列的表格视图

CellView getRowView(int row)// 此行的表格视图

  以下是与单元格有关的一些操作:

CellFeatures getCellFeatures()// 主要是与表格内容有关的一些性质如验证等

CellFormat getCellFormat()// 主要是表格外在表现格式有关的一些性质.

int getColumn()// 所在列

int getRow()// 所在行

String getContents();// 内容

boolean  isHidden();// 可见否

CellType getType();// 表格类型 如果不确定表格如果转换则可以使用此方法来确定表格类型.

  以下我们讲述如何写 excel 文件.

写文件分为两种情况 一种是新建一种则是更新.

新建 excel 文件

新建 excel 文件很简单:

// 文件

WritableWorkbook createWorkbook(File file) // 无形式的创建一个 excel 文件

WritableWorkbook createWorkbook(File file Workbook in)

// in 一样的格式创建一个 excel 文件,其初始内容与 in 文件相同 ( 更新文件可以用到此方法 )

WriteableWorkbook createWorkbook(File file,WorkSetting ws)// ws 的设定创建文件

WritableWorkbook createWorkbook(File file,Workbook in,WorkSetting ws)

// ws 的设定创建一个与 in 文件相同的文件

  //

WritableWorkbook createWorkbook(OutputStream os)

WritableWorkbook createWorkbook(OutputStream os Workbook in)

WriteableWorkbook createWorkbook(OutputStream os,WorkSetting ws)

WritableWorkbook createWorkbook(OutputStream os,Workbook in,WorkSetting ws)

 

代码示例:

WritableWorkbook wrb;

WriteableWorkbook wrbin;

try

{

wrb =  Workbook.createWorkbook(targetfile);

wrbin = Workbook.createWorkbook(targetfile,wb);

}

catch (IOexception e)

{

//IO 错误

}

当创建好工作簿时,我们就需要新建工作表了

WritableSheet createSheet(String name,int index);

WritableSheet wrs  = wrb.createSheet(“demo”,0);

// 创建一个名为 demo 的工作表,其为工作簿的第一个工作表.

接下来我们就可以进行其他操作了

 

添加文本类单元格:

Label   label = new Label(0,0,””);

wrb.addCell (label);

// 添加数据单元格

Number number = new Number(0,3,1234);

wrb.addCell (number);

// 添加时间单元格

DateTime dt = new DateTime(0,4,new Date());

Wrb.addCell (dt);

// 添加公式单元格

Fornual formual = new Formual(0,11,”Sum(A1:A9)”);

wrb.addCell (formual);

 

添加超链接类单元格

WirtableHyperlink wrlink =

  new WritableHyperlink(0,1,0,1,new URL(“www.emlog.net/fei”),”emlog”);

wrb.addHyperlink (wrlink);

 

// 添加图像

WritableImage wrimage=new WritableImage(1,5,10,10,new File(imageFilepath));

wrb.addImage (wrimage);

// 注意, API 中注明只支持 png 文件,然而我用其他格式的图片,通过将其后缘改为 png 也能放到 excel 文件中.果然,在查看其具体源代码时,发现作者只是检测了文件的后缀名,如果不对 给出警告,并没有从图像文件的具体格式进行检测.

      当然,表格中的数据算是表格的核心部分,但是同时 API 也提供了大量的其他方法来丰富表格的显示.在此,大家具体在使用过程中进行运用就行.

// 最后,写完表格后,不要忘记进行写操作,也就是常说的保存

wrb.write()

wrb.close(); 保存完后关闭相应资源是一个合格的程序员应该做的.

 

接下来,我们就来讲述写文件的另一方面:更新文件.有时候,并不仅仅只是需要新写文件,可能需要对已有文件进行更新.这时候我们可以这么来实现.

Workbook wb= Workbook.getWorkbook(modifyFile);

WritableWorkbook wrb = Workbook.createWorkbook(modifyFile, wb);

  以上就实现了得到一个已存在的文件的可修改副本.

// 得到第一个工作表

WritableSheet wrs = wrb.getSheet(0);

// 得到 A0 单元格

Cell cell = Wrs.getCell(0,0);

// 对单元格格式进行判断

If (cell.getType()==CellType.LABEL){

       Label label=(Label) cell;

       label.setString(“u r modified.”);

}//modify end

  //save excel

wrb.write();

wb.close();

wrb.close();

    以上就简单的完成了一次 excel 文件的修改. API 中还提供了复制工作表,复制单元格等操作,大家可以通过查询 API 来了解其具体的用法. 我们可以从作者提供的包中得到很多关于如何使用API的示例.此处不献丑了jxl官文网站:http://www.andykhan.com/jexcelapi/index.html

分享到:
评论

相关推荐

    NoClassDefFoundError: jxl/WorkbookSettings

    确保你的构建工具(如Maven或Gradle)的配置正确,或者手动将jxl.jar添加到项目的lib目录,并将其加入到类路径。 2. **版本冲突**:如果你的项目同时依赖了多个版本的JExcelApi,可能会导致类加载混乱。检查并确保...

    jxl读取Excel文件

    &lt;artifactId&gt;jxl&lt;/artifactId&gt; &lt;version&gt;2.6.12&lt;/version&gt; &lt;/dependency&gt; ``` 接下来,我们将详细讲解如何使用JXL库读取Excel文件。读取Excel文件的基本步骤如下: 1. **创建Workbook对象**:这是读取Excel文件...

    iText-2.0.8.jar/jxl.jar/core-renderer.jar/iTextAsian.jar

    iText-2.0.8.jar/jxl.jar/core-renderer.jar/iTextAsian.jariText-2.0.8.jar/jxl.jar/core-renderer.jar/iTextAsian.jariText-2.0.8.jar/jxl.jar/core-renderer.jar/iTextAsian.jariText-2.0.8.jar/jxl.jar/core-...

    jxl导入导出

    描述中提到的"jar包和实例简单粗暴,包你看的懂,学得会"意味着这个压缩包包含了jxl.jar文件,这是JExcelAPI的核心库,以及可能的依赖库如commons-io-2.4.jar和commons-fileupload-1.3.1.jar。这两个依赖库分别是...

    java如何读取excel文件

    import jxl.read.biff.BiffException; import java.io.File; import java.io.IOException; public class JExcelReader { public static void main(String[] args) { try { Workbook workbook = Workbook....

    spring-hibernate-dwr实例

    webmvc.jar&lt;br&gt;spring-portlet.jar&lt;br&gt;struts.jar&lt;br&gt;commons-fileupload.jar&lt;br&gt;commons-httpclient.jar&lt;br&gt;freemarker.jar&lt;br&gt;jasperreports-1.3.3.jar&lt;br&gt;commons-io.jar&lt;br&gt;portlet-api.jar&lt;br&gt;jxl.jar&lt;br&gt;itext...

    JAVA WEB典型模块与项目实战大全.part1(第一卷)

    &lt;&lt;Java Web典型模型与项目实战大全&gt;&gt; 出版社: 清华大学出版社; 第1版 (2011年1月1日) 平装: 922页 由于上传限制共分成4卷 下面是其它三卷的链接 第二卷: http://download.csdn.net/detail/jincheng52rmb/5349256 ...

    spring+struts+hibernate+dwr+jstl做的实例

    api.jar&lt;br&gt;jxl.jar&lt;br&gt;itext-1.3.jar&lt;br&gt;poi-2.5.1.jar&lt;br&gt;cos.jar&lt;br&gt;velocity-1.5.jar&lt;br&gt;velocity-tools-view-1.3.jar&lt;br&gt;commons-codec.jar&lt;br&gt;antlr.jar&lt;br&gt;commons-beanutils.jar&lt;br&gt;commons-digester.jar&lt;br...

    JXL2.6:解决JXL的IndexOutOfBoundsException getSheet问题

    NULL 博文链接:https://liuzidong.iteye.com/blog/1071677

    javaScript导入excel(jxl)

    - `&lt;%@page import="jxl.format.*"%&gt;`:导入jxl.format包中的所有类,用于设置Excel文件中的格式。 3. **读取Excel文件**: - `Workbook book = Workbook.getWorkbook(new File("c:/1.xls"));`:使用`Workbook....

    java后台jxl将excel数据导入到MYSQL中

    List&lt;String[]&gt; excelData = new ArrayList&lt;&gt;(); ExcelReader.readExcelAndInsertDB("path_to_your_excel_file.xls", excelData); MySQLHandler.insertIntoDatabase(excelData); } ``` 以上代码只是一个基础示例...

    jxljar.zipjar包修改名称所需资料和示例

    若要更改jar文件名,你需要将本地仓库中的"jxl.jar"重命名为"new-jxl.jar",并相应地更新pom.xml中的`&lt;classifier&gt;`元素: ```xml &lt;dependency&gt; &lt;groupId&gt;net.sourceforge.jexcelapi&lt;/groupId&gt; &lt;artifactId&gt;jxl&lt;/...

    privateprivateprivateprivate

    &lt;%@ page import="jxl.Workbook"%&gt; &lt;%@ page import="jxl.write.*"%&gt; &lt;%@ page import="javax.servlet.http.HttpServletRequest"%&gt; &lt;%@ page import="java.text.SimpleDateFormat"%&gt; &lt;%@ page import="java.util....

    Anroid开发所需poi_jar包

    开发中经常会设计到excel的处理,如导出Excel,导入Excel到数据库中,操作Excel目前有两个框架,一...jxl 由于其小巧 易用的特点, 逐渐已经取代了 POI-excel的地位, 成为了越来越多的java开发人员生成excel文件的首选。

    jxl.jar帮助文档(2.6.4API)

    jxl.jar帮助文档(2.6.4API) jxl.mht 非.chm格式; 也可以下载jxl资源包(包括源码,文档,jar) http://www.andykhan.com/jexcelapi/download.html

    private2private2private2

    &lt;%@ page import="jxl.Workbook"%&gt; &lt;%@ page import="jxl.write.*"%&gt; &lt;%@ page import="javax.servlet.http.HttpServletRequest"%&gt; &lt;%@ page import="java.text.SimpleDateFormat"%&gt; &lt;%@ page import="java.util....

    JXL写入Excel (包括样式、列宽、列高特殊格式、剧中、字体等操作)

    cellFormat.setDataFormat(jxl.format.DataFormat.getDateFormat("yyyy-MM-dd")); ``` 然后,你可以创建一个`Date`对象并将其转换为`WritableCell`: ```java Date date = new Date(); DateCell dateCell = new ...

    java操作excel——jxl和poi比较

    &lt;groupId&gt;org.apache.poi&lt;/groupId&gt; &lt;artifactId&gt;poi&lt;/artifactId&gt; &lt;version&gt;4.1.2&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.poi&lt;/groupId&gt; &lt;artifactId&gt;poi-ooxml&lt;/artifactId&gt; &lt;version&gt;...

    Java生成Excel实例

    List&lt;CityInfo&gt; cityList = new ArrayList&lt;&gt;(); // 假设CityInfo为存储城市信息的类 // 填充cityList... request.setAttribute("create_list", cityList); ``` 这样,当用户点击“导出”按钮时,DisplayTag会自动将...

Global site tag (gtag.js) - Google Analytics