本篇文章主要讲jxl 中非常重要的一个抽象类Workbook,该类是一切操作Excel表格的开始。可以通过该类得到工作簿,也可以创建一个新的可写工作簿。下面就让我们一起来看看怎样使用该类。

得到已存在Excel表格的工作簿  Workbook.getWorkbook:

import java.io.*;
import jxl.Workbook;
import jxl.WorkbookSettings;
import jxl.read.biff.BiffException;public class Tgetworkbook {public static void main(String args[])  {try {//文件已经存在,得到工作簿File file = new File("D://JEtest/测试.xls");Workbook book1 = Workbook.getWorkbook(file);System.out.println("sheet's number: " + book1.getNumberOfSheets());book1.close();//WorkbookSettings 是使应用程序可以使用各种高级工作簿属性设置,若不使用则相关属性会是默认值WorkbookSettings ws = new WorkbookSettings();Workbook book2 = Workbook.getWorkbook(file,ws);System.out.println("sheet's number: " + book2.getNumberOfSheets());book2.close();//以输入流的方式得到工作簿InputStream is = new FileInputStream(file);Workbook book3 = Workbook.getWorkbook(is);System.out.println("sheet's number: " + book3.getNumberOfSheets());book3.close();is.close();//输入流和WorkbookSettings 相结合InputStream is2 = new FileInputStream(file);Workbook book4 = Workbook.getWorkbook(is2, ws);System.out.println("sheet's number: " + book4.getNumberOfSheets());book4.close();is2.close();}catch (IOException | BiffException e) {System.out.println("Exception: " + e);}}}

以这种方式得到的工作簿的前题是Excel表格已存在。其中有一个WorkbookSettings 类,该类是设置工作簿相关的高级属性,包括工作簿的字符集、字符编码等属性,有一个方法   public void setGCDisabled (boolean disabled)   在Web相关工作时,可能回影响效率,需要把垃圾回收属性设置为禁止,true 为禁止垃圾回收。有兴趣可以看看API 了解更多设置。

创建可写工作簿 Workbook.createWorkbook :

import java.io.*;
import jxl.*;
import jxl.read.biff.BiffException;
import jxl.write.*;public class TCreateWorkbook2 {public static void main(String args[]) throws IOException, WriteException, BiffException {try {File file = new File("D://JEtest/测试1.xls");//创建一个可写的工作簿//若文件 测试1.xls 存在,则以这种方式创建,原文件的数据将会失去。WritableWorkbook wb1 = Workbook.createWorkbook(file);           System.out.println("sheet numbers: " + wb1.getNumberOfSheets());WritableSheet wsheet1 = wb1.createSheet("sheet1", 0);System.out.println("sheet numbers: " + wb1.getNumberOfSheets());//注意一定要用write()函数写回去wb1.write();wb1.close();//文件存在,更新源文件,或者复制源文件到另一个文件中,在进行修改。//测试2.xls 文件是存在的。//得到的wb2 是对book 的复制File file2 = new File("D://JEtest/测试2.xls");//更新 测试2.xlsWorkbook book = Workbook.getWorkbook(file2);WritableWorkbook wb2 = Workbook.createWorkbook(file2, book);//这种方式是把file2 的数据复制到file3里//File file3 = new File("D://JEtest/测试3.xls");//WritableWorkbook wb3 = Workbook.createWorkbook(file3, book);System.out.println("sheet numbers: " + wb2.getNumberOfSheets());//注意一定要用write()函数写回去wb2.write();      wb2.close();//创建带有WorkbookSettings 高级设置的可写工作簿File file4 = new File("D://JEtest/测试4.xls");WorkbookSettings ws = new WorkbookSettings();     WritableWorkbook wb4 = Workbook.createWorkbook(file4, ws);WritableSheet wsheet4 = wb4.createSheet("sheet2", 0);System.out.println("sheet2 numbers: " + wb4.getNumberOfSheets());wb4.write();wb4.close();//public static WritableWorkbook createWorkbook(java.io.File file,Workbook in,WorkbookSettings ws)WritableWorkbook wb5 = Workbook.createWorkbook(file2, book, ws);wb5.write();wb5.close();        }catch (IOException | WriteException | BiffException e) {System.out.println("Exception: " + e);throw e;}}}

也可以以输出流的方式创建:

public static WritableWorkbook createWorkbook(java.io.OutputStream os)
public static WritableWorkbook createWorkbook(java.io.OutputStream os, WorkbookSettings ws)
public static WritableWorkbook createWorkbook(java.io.OutputStream os, Workbook in)
public static WritableWorkbook createWorkbook(java.io.OutputStream os, Workbook in, WorkbookSettings ws)

这里需要注意的是以  public static WritableWorkbook createWorkbook(java.io.OutputStream os, Workbook in)   方式创建可写工作簿,在写入时一直报错,目前没有搞明白是什么原因。希望大神能留言告诉我。

Workbook其他的方法:

import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import jxl.Workbook;
import jxl.Sheet;
import jxl.Cell;
import jxl.Range;
import jxl.read.biff.BiffException;public class Tworkbook {public static void main(String args[]) throws IOException, BiffException {try {//文件 测试.xls 存在File file = new File("D://JEtest/测试.xls");Workbook wb = Workbook.getWorkbook(file);//判断表是否受到保护System.out.println("Is the sheet protect?   result: " + wb.isProtected());//在Excel表中可以选定多个单元格,给他们起一个名字,这里的range就代表的是一个你选定命名的那些单元格。//!!!!!!!!!!!!!!!!//注意不要用wps 操作选定一部分单元格给其命名,这样jxl用该函数会出现错误,返回的结果不正确。//!!!!!!!!!!!!!!!!//该方法返回所有你命名range的名字的字符串数组String [] rangeNameList = wb.getRangeNames();System.out.println("the range[]: " + Arrays.toString(rangeNameList));//有参数名,得到range[] 数组。    ????range的名字是唯一的,为什么返回是数组呢????Range[]  ranges;ranges = wb.findByName("name");System.out.println("the ranges[] length: " + ranges.length);   //该方法返回名为"name" 的cell或range 的左上单元格。Cell cell = wb.findCellByName("name");System.out.println("cell 或 range的左上单元格的内容: " + cell.getContents());//获取指定单元格, 参数格式为"sheet1!A1"Cell cellA1 = wb.getCell("第一页!A3");System.out.println("第一页里A1的内容: " + cellA1.getContents());//返回工作簿中工作表个数int sheetnumber = wb.getNumberOfSheets();System.out.println("工作表个数为: " + sheetnumber);//得到指定的表,根据索引值,从零开始。  不要做不必要的调用,因为每次调用都要重读工作表, //此外客户端也不要持有不必要的表的引用,这回阻止垃圾回收器释放内存。Sheet sheet0 = wb.getSheet(0);System.out.println("第一个表的名字是: " + sheet0.getName());//这种方式是根据工作表的名称来得到工作表的。Sheet sheet1 = wb.getSheet("第一页");//得到工作表数组Sheet [] sheetlist;sheetlist = wb.getSheets();System.out.println("工作表个数为: " + sheetlist.length);//得到工作簿中所有的工作表名称,以字符串数组存储。String [] sheetnamelist = wb.getSheetNames();System.out.println("工作表个数:" + sheetnamelist.length + " 工作表名称: " + Arrays.toString(sheetnamelist));//得到jxl版本号String version = wb.getVersion();System.out.println(version);wb.close();}catch (IOException | BiffException | IndexOutOfBoundsException e) {System.out.println("Exception: " + e);throw e;}}}

以上就是类Workbook 的所有方法,下一篇将会一起来学Sheet 的相关方法。

jxl 操作Excel表格之Workbook相关推荐

  1. android jxl.jar 使用,使用jxl.jar在Android中操作Excel表格——重中之重——对隐藏表的处理...

    曾简单了解过C#,将Excel(数据库表)表中的数据导入到C#中,使用C#制作的图形化界面进行对Excel表中数据进行操作. 今天想试试,在Android中导入Excel表格进行操作.在网上查阅资料, ...

  2. Java 操作excel表格 - JXL(Java excel api)

    Java 操作excel表格 Java 操作 Excel 最常用的就是JXL(Java excel api)和POI,用起来挺简单的,不过相应的其功能也并非很强大,够用就行! 首先,下载jxl.jar ...

  3. Python操作Excel表格(二)

    Python操作Excel表格第二弹 本博客在前一篇博客基础上增加了若干函数,如按列寻找值,查重和增强型查重.数据写入等相关代码.实现了类似Sql的查询(注解中的SQL语句仅做参考,并非可执行SQL) ...

  4. python openpyxl操作Excel表格

    原创:未经允许不得转载,转载需标明出处 打算分为两个部分: 第一部分为:操作Excel表格 第二部分为:操作Excel图表 现在发布为第一部分内容 在最近的项目中的使用到了提取Android帧率日志, ...

  5. java使用jxl生成excel表格,jsp使用js下载excel文件xls

    java使用jxl生成excel表格,jsp使用js下载excel文件 后端代码 maven jar包 主体代码逻辑 引入的jar包 具体代码段 重点详解 表头和表格内容两种格式 直接将 HttpSe ...

  6. C#操作Excel表格,不积硅步无以至千里

    本文主要介绍一下c#来操作excel表格,主要介绍我使用的,我是使用第三方提供的函数库(NPOI)来进行excel的操作,而NPOI库函数在其官网下,我这里就不拿出来了. 1:NPOI库函数 NPOI ...

  7. VC操作excel表格

    VC操作excel表格(一) 1.The require files When you start to program in VC, you must have the lib files of E ...

  8. Java 通过POI 操作excel表格:读取、写入

    Java操作excel表格是很常见的,在下面的例子中我将展示使用Java如何对excel进行读取和写入操作.(我是在ssm中实现的) 一.导入依赖 (如果是在普通Java项目中需要导入相应jar包) ...

  9. java excel 边框_【web开发】☆★之利用POI操作Excel表格系列教程【9】单元格边框处理...

    [web开发]☆★之利用POI操作Excel表格系列教程[9]单元格边框处理 package csg.xiaoye.poidemo; import java.io.FileOutputStream; ...

最新文章

  1. SIPp工具Linux下安装
  2. python的所有数据类型都可以相互转化吗_Python中如何进行数据类型转换?
  3. Java Date与SimpleDateFormat
  4. 数据膨胀了?你的数仓又没有空间了?
  5. centos 安装 freeswitch,开启与关闭
  6. 数据结构上机实践第八周项目6- 猴子选大王(数组版)
  7. 嵌入式系统开发之根文件系统
  8. as工程放到源码编译_「Do.016」AndroidStudio不用编译,阅读Android源码
  9. 最新Everest 企业版(AIDA64)使用SQL保存数据的方法介绍
  10. 20个BT下载网站,BT种子网站
  11. python中文件分类_利用Python将文件进行分类整理
  12. 一个07年毕业研究生的坎坷经历(上)
  13. 27个最佳Beaver Builder主题和模板(2020)
  14. HGOI 20190821 慈溪一中互测
  15. 荒野行动为什么不能获取服务器信息,荒野行动卡在获取服务器信息上了怎么办?(附解决方法)...
  16. 大数据运作原理是什么?
  17. 使用cmake构建工程
  18. ROS wiki系列|ROS入门基础概念讲解
  19. Unity材质球个人学习笔记
  20. visio方向键不能移动对象

热门文章

  1. 恒星绕太阳转css,地球绕着太阳转,太阳绕着什么转?
  2. Redis中如何批量删除key
  3. 产品经理/互联网非技术岗如何写一份好的简历?
  4. update (SELECT /*+BYPASS_UJVC*/
  5. Python 入门之类的基础语法
  6. 【Pytorch】Tensor基本操作
  7. Object.assign()是深拷贝还是浅拷贝?
  8. 使用okhttp请求聚合数据之星座运势
  9. AD --旋钮开关(2刀4档)PCB封装制作
  10. 《趣学CCNA——路由与交换》——2.3节网络层协议概述