使用该API非Windows操作系统也可以通过纯Java应用来处理Excel数据表。因为是使用 Java编写的,所以我们在Web应用中可以通过JSP、Servlet来调用API实现对Excel数据表的访问。

package com.yonyou.test;

import java.io.File;import java.io.IOException;

import jxl.Workbook;import jxl.format.Alignment;import jxl.format.Border;import jxl.format.BorderLineStyle;import jxl.format.Colour;import jxl.format.UnderlineStyle;import jxl.write.Label;import jxl.write.NumberFormats;import jxl.write.WritableCellFormat;import jxl.write.WritableFont;import jxl.write.WritableSheet;import jxl.write.WritableWorkbook;import jxl.write.WriteException;import jxl.write.biff.RowsExceededException;

public class JxlTable {

private final static JxlTable jxlTable = new JxlTable();

public static JxlTable getInstance() {  return jxlTable; }

public JxlTable() { }

public boolean createTable(String header, String[] body, String filePath) {  boolean createFlag = true;  WritableWorkbook book;  try {   // 根据路径生成excel文件   book = Workbook.createWorkbook(new File(filePath));   // 创建一个sheet名为"表格"   WritableSheet sheet = book.createSheet("表格", 0);   // 设置NO列宽度   sheet.setColumnView(1, 5);   // 去掉整个sheet中的网格线   sheet.getSettings().setShowGridLines(false);   Label tempLabel = null;   // 表头输出   String[] headerArr = header.split(",");   int headerLen = headerArr.length;   // 循环写入表头内容   for (int i = 0; i < headerLen; i++) {    tempLabel = new Label(1 + i, 1, headerArr[i],      getHeaderCellStyle());    sheet.addCell(tempLabel);   }   // 表体输出   int bodyLen = body.length;   // 循环写入表体内容   for (int j = 0; j < bodyLen; j++) {    String[] bodyTempArr = body[j].split(",");    for (int k = 0; k < bodyTempArr.length; k++) {     WritableCellFormat tempCellFormat = null;     tempCellFormat = getBodyCellStyle();     if (tempCellFormat != null) {      if (k == 0 || k == (bodyTempArr.length - 1)) {       tempCellFormat.setAlignment(Alignment.CENTRE);      }     }     tempLabel = new Label(1 + k, 2 + j, bodyTempArr[k],       tempCellFormat);     sheet.addCell(tempLabel);    }   }   book.write();   book.close();  } catch (IOException e) {   createFlag = false;   System.out.println("EXCEL创建失败!");   e.printStackTrace();  } catch (RowsExceededException e) {   createFlag = false;   System.out.println("EXCEL单元设置创建失败!");   e.printStackTrace();  } catch (WriteException e) {   createFlag = false;   System.out.println("EXCEL写入失败!");   e.printStackTrace();  }

return createFlag; }

public WritableCellFormat getHeaderCellStyle() {  WritableFont font = new WritableFont(WritableFont.createFont("宋体"), 10,    WritableFont.BOLD, false, UnderlineStyle.NO_UNDERLINE);  WritableCellFormat headerFormat = new WritableCellFormat(    NumberFormats.TEXT);  try {   // 添加字体设置   headerFormat.setFont(font);   // 设置单元格背景色:表头为黄色   headerFormat.setBackground(Colour.YELLOW);   // 设置表头表格边框样式   // 整个表格线为粗线、黑色   headerFormat.setBorder(Border.ALL, BorderLineStyle.THICK,     Colour.BLACK);   // 表头内容水平居中显示   headerFormat.setAlignment(Alignment.CENTRE);  } catch (WriteException e) {   System.out.println("表头单元格样式设置失败!");  }  return headerFormat; }

public WritableCellFormat getBodyCellStyle() {  WritableFont font = new WritableFont(WritableFont.createFont("宋体"), 10,    WritableFont.NO_BOLD, false, UnderlineStyle.NO_UNDERLINE);  WritableCellFormat bodyFormat = new WritableCellFormat(font);  try {   // 设置单元格背景色:表体为白色   bodyFormat.setBackground(Colour.WHITE);   // 设置表头表格边框样式   // 整个表格线为细线、黑色   bodyFormat     .setBorder(Border.ALL, BorderLineStyle.THIN, Colour.BLACK);  } catch (WriteException e) {   System.out.println("表体单元格样式设置失败!");  }  return bodyFormat; }

public static void main(String[] args) {  String header = "NO,姓名,性别,年龄";  String[] body = new String[4];  body[0] = "1,欧阳锋,男,68";  body[1] = "2,黄药师,男,67";  body[2] = "3,洪七公,男,70";  body[3] = "4,郭靖,男,32";  String filePath = "e:/test.xls";  JxlTable testJxl = JxlTable.getInstance();  boolean flag = testJxl.createTable(header, body, filePath);  if (flag) {   System.out.println("表格创建成功!!");  } }}

分步讲解:

读取excel文件

要读取excel文件首先应该建立一个wordbook:

Workbook wb=Workbook.getWorkbook(File file);

Workbook wb=Workbook.getWorkbook(InputStream is);

然后就可以获得它的工作表:

Sheet[] sheets=wb.getSheets();            //获得所有工作表

Sheet sheet=wb.getSheet(0);               //表示获得第一个工作表。

最后就可以获得对某工作表的某些单元格的值:

Cell cell=sheet.getCell(0,0);          //获得第一列 第一行的数据。第一个参数为列

String value=cell.getContents();    //获得该单元格的字符串形式的值

String type=cell.getType();           //获得该单元格的数据类型。

关闭workbook工作流:

当你完成对Excel电子表格数据的处理后,一定要使用close()方法来关闭先前创建的对象,以释放读取数据表的 过程中所占用的内存空间,在读取大量数据时显得尤为重要。参考如下代码片段:

wb.close();

注意:只有完成对该excel的操作后才可以关闭,关闭后在调用如Sheet s=wb.getSheet(0)会为null的。

常用的方法介绍:

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();

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)

java jxl使用_java创建excel示例(jxl使用方法)相关推荐

  1. java 雷达图_Java 创建Excel雷达图

    class="MsoNormal">本文介绍通过Java程序在Excel工作表中创建雷达图表的方法. 程序环境 Spire.Xls.jar 免费版本3.9.1 Jdk版本要求 ...

  2. java图表标题_Java 创建Excel图表

    import com.spire.xls.*; import com.spire.xls.charts.ChartSerie; import com.spire.xls.charts.ChartSer ...

  3. java 数据透视表 组件_Java创建Excel数据透视表

    正版现货excel效率手册早做完不锡 22.82元 包邮 (需用券) 去购买 > Excel 数据透视表具有强大的数据处理功能,能够使表格中的数据更加直观化.使用Excel 数据透视表,能方便用 ...

  4. Java学习笔记:创建线程的两种方法

    Java学习笔记:创建线程的两种方法 一.预备工作 1.创建Maven项目ThreadDemo 2.在pom.xml里添加依赖 二.继承Thread类创建子线程

  5. java jxl 写 excel_Java 操作Excel(jxl读和写)

    一.读操作: package com.jxl.opr; import java.io.FileInputStream; import java.io.FileNotFoundException; im ...

  6. java创建线程哪种方法最好_Java创建线程的三种方法比较

    一般有三种方法,Thread,Runnable,Callable. Runnable和Callable的区别 (1)Callable规定的方法是call(),Runnable规定的方法是run(). ...

  7. java 生成zip如法打开_Java创建ZIP压缩文件的方法

    本文实例讲述了Java创建ZIP压缩文件的方法.分享给大家供大家参考.具体如下: 这里注意:建议使用org.apache.tools.zip.*包下相关类,否则可能会出现中文乱码问题. /** * 压 ...

  8. java for循环创建线程_Java创建线程的两种方法

    大多数情况,通过实例化一个Thread对象来创建一个线程.Java定义了两种方式: 实现Runnable 接口: 可以继承Thread类. 下面的两小节依次介绍了每一种方式. 实现Runnable接口 ...

  9. python创建excel_python创建Excel文件数据的方法

    原博文 2018-12-07 18:41 − # -*- coding: utf-8 -*- # @Time : 2018/12/6 17:10 # @Author : suchao # @Disc: ...

最新文章

  1. 探测参考信号(Sounding Reference Signal)
  2. Codeforces Round #370 (Div. 2)
  3. 基础篇9-python基本数据结构-列表
  4. MVC中实现多按钮提交(转)
  5. 学了python能干啥-第9p,Python是什么?学了Python能干什么?
  6. springboot集成shiro无法加载样式status302
  7. 麻瓜编程python爬虫微专业_麻瓜编程 - 主页
  8. 面向对象的三特性(继承、多态、封装 )Python
  9. CC创作共用版权协议,要求署名+非商业+相同方式共享
  10. iptables应用
  11. mysql 客户端可以访问_Mysql客户端工具可以连接,但是代码访问就会报错
  12. 考研必备数学公式大全(数学二)(高等数学篇)
  13. Spring Cloud 系列之 Netflix Eureka 注册中心
  14. 颜色偏差裙子测试软件,蓝黑/白金裙子告诉你视觉误差到底有多大?——一条裙子引发的全民纠结...
  15. 韦恩图——你学会了吗?
  16. Ubuntu学习笔记6-ESP32接收并处理cmd_vel话题
  17. halcon在图片上画几何形状并保存
  18. 这款 SQL自动检查神器,吊炸天的功能,真TMD多!!
  19. 基于Html+Css+javascript的网页制作(旅游主题)
  20. HDU 1718 Rank counting sort解法

热门文章

  1. Missing script: “serve“ 解决办法
  2. 49岁周慧敏近照,使唤古天乐当佣人,丈夫抱怨不生孩子不是女人
  3. M608c M600i使用技巧
  4. YATE内部的消息机制
  5. 第七天;信息打点-资产泄漏CMS识别Git监控SVNDS_Store备份
  6. 电脑下载的qlv格式视频怎么转换成MP4
  7. 高纯度贵金属行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  8. 整理最新境外投资企业(机构)备案结果公开名录
  9. MySQL/ 第一章 MySQL数据库
  10. 数据体系建设-ODS|DW|TDM|ADS介绍