java创建excel示例(jxl使用方法)
使用该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)
上一篇: 链接(一)
下一篇: 使用SQL实现小计,合计以及排序
推荐阅读