当前位置: 移动技术网 > IT编程>开发语言>Java > java创建excel示例(jxl使用方法)

java创建excel示例(jxl使用方法)

2019年07月22日  | 移动技术网IT编程  | 我要评论

使用该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)

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网