欢迎光临成都无标度网络科技有限公司!



java运用jExcelAPI操作excel

2012-10-10 06:08    编辑:蝙蝠    阅读: 8443

jxl是一个韩国人写的java操作excel的东西, 在开源国际中,有两套比拟有影响的API可供运用,一个是POI,一个是jExcelAPI。其间功用相对POI比拟弱一点。但jExcelAPI对中文撑持非常好,API是纯Java的, 并不依靠Windows体系,即便运行在Linux下,它相同能够正确的处置Excel文件。 别的需求阐明的是,这套API对图形和图表的撑持很有限,而且只是辨认PNG格局。

运用如下:

建立环境

 将下载后的文件解包,得到jxl.jar,放入classpath,装置就完成了。

 根本操作

 一、创立文件

 拟生成一个名为“test.xls”的Excel文件,其间榜首个作业表被命名为
 “榜首页”,大致作用如下:

package test;

//生成Excel的类
import java.io.File;

import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;

public class CreateExcel {
    public static void main(String args[]) {
        try {
            // 翻开文件
            WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));
            // 生成名为“榜首页”的作业表,参数0表明这是榜首页
            WritableSheet sheet = book.createSheet("榜首页", 0);
            // 在Label目标的结构子中指名单元格方位是榜首列榜首行(0,0)
            
// 以及单元格内容为test
            Label label = new Label(0, 0, "test");

            // 将界说好的单元格增加到作业表中
            sheet.addCell(label);

            /*
             * 生成一个保管数字的单元格 有必要运用Number的完整包途径,不然有语法歧义 单元格方位是第二列,榜首行,值为789.123
             
*/
            jxl.write.Number number = new jxl.write.Number(1, 0, 555.12541);
            sheet.addCell(number);

            // 写入数据并封闭文件
            book.write();
            book.close();

        } catch (Exception e) {
            System.out.println(e);
        }
    }
}

 

   编译履行后,会发生一个Excel文件。

 三、读取文件

 以方才咱们创立的Excel文件为例,做一个简略的读取操作,程序代码如下:

package test;

//读取Excel的类
import java.io.File;

import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;

public class ReadExcel {
    public static void main(String args[]) {
        try {
            Workbook book = Workbook.getWorkbook(new File("test.xls"));
            // 取得榜首个作业表目标
            Sheet sheet = book.getSheet(0);
            // 得到榜首列榜首行的单元格
            Cell cell1 = sheet.getCell(0, 0);
            String result = cell1.getContents();
            System.out.println(result);
            book.close();
        } catch (Exception e) {
            System.out.println(e);
        }
    }
}


  程序履行成果:test

 四、修正文件
 运用jExcelAPI能够修正已有的Excel文件,修正Excel文件的时分,除了翻开文件的办法不相同之外,
 其他操作和创立Excel是相同的。下面的比方是在咱们现已生成的Excel文件中增加一个作业表:

package test;

import java.io.File;

import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;

public class UpdateExcel {
    public static void main(String args[]) {
        try {
            // Excel取得文件
            Workbook wb = Workbook.getWorkbook(new File("test.xls"));
            // 翻开一个文件的副本,而且指定数据写回到原文件
            WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"),
                    wb);
            // 增加一个作业表
            WritableSheet sheet = book.createSheet("第二页", 1);
            sheet.addCell(new Label(0, 0, "第二页的测验数据"));
            book.write();
            book.close();
        } catch (Exception e) {
            System.out.println(e);
        }
    }
}


其他操作

 一、 数据格局化

 在Excel中不触及杂乱的数据类型,能够比拟好的处置字串、数字和日期现已能够满意通常的运用。

 1、 字串格局化

 字符串的格局化触及到的是字体、粗细、字号等元素,这些功用主要由WritableFont和
 WritableCellFormat类来担任。假定咱们在生成一个富含字串的单元格时,运用如下句子,
 为便利叙说,咱们为每一行指令加了编号:

WritableFont font1=
 new WritableFont(WritableFont.TIMES,16,WritableFont.BOLD); ①

 WritableCellFormat format1=new WritableCellFormat(font1); ②

 Label label=new Label(0,0,”data 4 test”,format1) ③

  其间①指定了字串格局:字体为TIMES,字号16,加粗显现。WritableFont有非常丰富的
 结构子,供不相同情况下运用,jExcelAPI的java-doc中有具体列表,这里不再列出。

 ②处代码运用了WritableCellFormat类,这个类非常重要,经过它能够指定单元格的各种
 特点,后面的单元格格局化中会有更多描绘。

 ③处运用了Label类的结构子,指定了字串被赋予那种格局。

 在WritableCellFormat类中,还有一个很重要的办法是指定数据的对齐办法,比方对于咱们
 上面的实例,能够指定:

 //把水平对齐办法指定为居中
 format1.setAlignment(jxl.format.Alignment.CENTRE);

 //把笔直对齐办法指定为居中
 format1.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);

二、单元格操作

 Excel中很重要的一部分是对单元格的操作,比方行高、列宽、单元格兼并等,所幸jExcelAPI
 供给了这些撑持。这些操作相对比拟简略,下面只分析一下关联的API。

 1、 兼并单元格

 WritableSheet.mergeCells(int m,int n,int p,int q); 

 //作用是从(m,n)到(p,q)的单元格悉数兼并,比方:
 WritableSheet sheet=book.createSheet(“榜首页”,0);

 //兼并榜首列榜首行到第六列榜首行的一切单元格
 sheet.mergeCells(0,0,5,0);

 兼并既能够是横向的,也能够是纵向的。兼并后的单元格不能再次进行兼并,不然会触发反常。

 2、 行高和列宽

 WritableSheet.setRowView(int i,int height);

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

 
//将榜首行的高度设为200
 sheet.setRowView(0,200);

 WritableSheet.setColumnView(int i,int width);

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

 
//将榜首列的宽度设为30
 sheet.setColumnView(0,30);

 jExcelAPI还有其他的一些功用,比方刺进图像等,这里就不再一一分析,读者能够个人探究。

其间:若是读一个excel,需求晓得它有多少行和多少列,如下操作:

Workbook book = Workbook.getWorkbook(new File("测验1.xls"));
        // 取得榜首个作业表目标
        Sheet sheet = book.getSheet(0);
        // 得到榜首列榜首行的单元格
        int columnum = sheet.getColumns();// 得到列数
        int rownum = sheet.getRows();// 得到行数
        System.out.println(columnum);
        System.out.println(rownum);
        for (int i = 0; i < rownum; i++)// 循环进行读写
        {
            for (int j = 0; j < columnum; j++) {
                Cell cell1 = sheet.getCell(j, i);
                String result = cell1.getContents();
                System.out.print(result);
                System.out.print("\t");
            }
            System.out.println();
        }
        book.close();