1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > java excel导出 jxl_java使用JXL导出Excel及合并单元格

java excel导出 jxl_java使用JXL导出Excel及合并单元格

时间:2018-08-24 22:46:20

相关推荐

java excel导出 jxl_java使用JXL导出Excel及合并单元格

jxl是一个韩国人写的java操作excel的工具,在开源世界中,有两套比较有影响的API可供使用,一个是POI,一个是jExcelAPI。其中功能相对POI比较弱一点。但jExcelAPI对中文支持非常好,API是纯Java的,并不依赖Windows系统,即使运行在Linux下,它同样能够正确的处理Excel文件。另外需要说明的是,这套API对图形和图表的支持很有限,而且仅仅识别PNG格式。

要使用jxl,需要到jxl官网地址下载jxl的jar包,现在的jxl最新版是2.6.12,下载地址:

一、写excel

拟生成一个名为"jxl.xls"的Excel文件,其中第一个工作表被命名为"sheet1",大致效果如下:

package com.jxl;

//生成Excel的类

import java.io.File;

import jxl.Cell;

import jxl.CellType;

import jxl.LabelCell;

import jxl.NumberCell;

import jxl.Sheet;

import jxl.Workbook;

import jxl.write.Label;

import jxl.write.Number;

import jxl.write.WritableSheet;

import jxl.write.WritableWorkbook;

public class JxlWriteExcel {

public static void main(String args[]) {

writeExcel();

}

public static void writeExcel(){

try {

// 打开文件

WritableWorkbook workbook = Workbook.createWorkbook(

new File("e:/jxl.xls"));

// 生成名为"sheet1"的工作表,参数0表示这是第一页

WritableSheet sheet = workbook.createSheet("sheet1", 0);

// 在Label对象的构造子中指名单元格位置是第一列第一行(0,0)

// 以及单元格内容为jxl第一个标签第一行第一列

Label label = new Label(0, 0, "jxl第一个标签第一行第一列");

// 将定义好的单元格添加到工作表中

sheet.addCell(label);

// 使用 jxl.write.Number输出数字

// 否则有语法歧义单元格位置是第二列,第一行,值为07.12

Number number = new Number(1, 0,07.12);

sheet.addCell(number);

// 写入数据并关闭文件

workbook.write();

workbook.close();

} catch (Exception ex) {

ex.printStackTrace();

}

}

}

二、读取excel文件

用刚才我们创建的Excel文件为例,做一个简单的读取操作,程序代码如下:

package com.jxl;

import java.io.File;

import jxl.Cell;

import jxl.CellType;

import jxl.LabelCell;

import jxl.NumberCell;

import jxl.Sheet;

import jxl.Workbook;

import jxl.write.Label;

import jxl.write.Number;

import jxl.write.WritableSheet;

import jxl.write.WritableWorkbook;

public class JxlReadExcel {

public static void main(String args[]) {

readExcel();

}

public static void readExcel(){

try{

Workbook book=Workbook.getWorkbook(new File("e:/jxl.xls"));

//获得第一个工作表对象

Sheet sheet=book.getSheet(0);

//得到列数

int colNum=sheet.getColumns();

//得到行数

int rowNum=sheet.getRows();

//得到第一列第一行的单元格

Cell cell1=sheet.getCell(0,0);

String result=cell1.getContents();

System.out.println(result);

cell1=sheet.getCell(1,0);

double numberb2 = 0;

if (cell1.getType() == CellType.LABEL)

{

LabelCell lc = (LabelCell) cell1;

result = lc.getString();

}

if (cell1.getType() == CellType.NUMBER)

{

NumberCell nc = (NumberCell) cell1;

numberb2 = nc.getValue();

}

System.out.println(numberb2);

book.close();

}catch (Exception ex) {

ex.printStackTrace();

}

}

}

三、字串格式化,设置字体、粗细、字号

字符串的格式化涉及到的是字体、粗细、字号等元素,这些功能主要由WritableFont和WritableCellFormat类来负责。假设我们在生成一个含有字串的单元格时,使用如下语句, 为方便叙述,我们为每一行命令加了编号:

//指定了字串格式:字体为ARIAL,字号12,正常显示

WritableFont font1=new WritableFont(WritableFont.ARIAL,

12,WritableFont.NO_BOLD);

WritableCellFormat format1=new WritableCellFormat(font1);

Label label = new Label(0, 0, "jxl第一个标签第一行第一列",format1);

在WritableCellFormat类中,还有一个很重要的方法是指定数据的对齐方式,比如针对我们上面的实例,可以指定:

//把水平对齐方式指定为居中

format1.setAlignment(jxl.format.Alignment.CENTRE);

//把垂直对齐方式指定为居中

format1.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);

二、单元格操作,设置行高,列宽,合并单元格

Excel中很重要的一部分是对单元格的操作,比如行高、列宽、单元格合并等,所幸jExcelAPI提供了这些支持。这些操作相对比较简单,下面只介绍一下相关的API。

1、合并单元格

WritableSheet.mergeCells(intm,intn,intp,intq);

//作用是从(m,n)到(p,q)的单元格全部合并,比如:

WritableSheetsheet=book.createSheet("第一页",0);

//合并第一列第一行到第六列第一行的所有单元格

sheet.mergeCells(0,0,5,0);

合并既可以是横向的,也可以是纵向的。合并后的单元格不能再次进行合并,否则会触发异常。

2、行高和列宽

WritableSheet.setRowView(int i,int height);

//作用是指定第i+1行的高度,比如:

//将第一行的高度设为100

sheet.setRowView(0,100);

WritableSheet.setColumnView(int i,int width);

//作用是指定第i+1列的宽度,比如:

//将第一列的宽度设为20

sheet.setColumnView(0,30);

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。