用Java创建Excel文件,Java Excel API的使用,C#也是一样

来源:互联网 发布:mac能下载office 编辑:程序博客网 时间:2024/04/28 19:47

最近项目里要导出一个Excel表格,一起的方法太老了找了个新的,还蛮好用

Java Excel API的使用 


Java Excel API(JXL)是一个成熟开源的Java类库,用来操作Excel电子表格,支持读取,修改,写入等操作。这个项目基于GPL发布,与poi比较,对中文有很好的支持。而且支持PNG格式图片以及各种数字类型。
当然poi除了可以生成excel格式文件外,还支持pdf、doc等。

该项目网址是http://www.andykhan.com/jexcelapi/,不过这个经常上不了,所以可以直接到sourceforge下载类库,地址为:

https://sourceforge.net/projects/jexcelapi/

我下载的是jexcelapi_2_6_10.zip   2009年5月28日发布的

下面以此为例进行简单说明。

一、 解压

  将下载后的文件(如jexcelapi_2_6_10.zip)解压,里面有好多目录,包括例子、文档和源码,其中对项目有用的只有jxl.jar,把它引入或放入项目的classpath目录。

二、新建测试类,创建excel文件

import java.io.*;
import jxl.*;
import jxl.write.*;

public class WriteExcel {

 /**
  * written by http://www.sunleap.com
  */
 public static void main(String[] args) {
  try
   {
   //下面创建Excel文件
   WritableWorkbook book=Workbook.createWorkbook(new File("c://test.xls"));

   //下面生成名为"第一页"的工作表Sheet,参数0表示这是第一页
   WritableSheet sheet=book.createSheet("第一页",0);  

   //下面使用Label对象在单元格第1行第1列(0,0)构造一个标签,内容为"网址"
   jxl.write.Label label1=new jxl.write.Label(0,0,"网址");
   //将定义好的单元格(0,0)添加到工作表中
   sheet.addCell(label1);

   //下面使用Label对象在单元格第1行第2列(1,0)构造一个标签,内容为"站长"
   jxl.write.Label label2=new jxl.write.Label(1,0,"站长");
   //将定义好的单元格(1,0)添加到工作表中
   sheet.addCell(label2);

   //下面使用Label对象在单元格第1行第3列(2,0)构造一个标签,内容为"访问量"
   jxl.write.Label label3=new jxl.write.Label(2,0,"访问量");
   //将定义好的单元格(2,0)添加到工作表中
   sheet.addCell(label3);
   
   //下面向文件中插入两行记录
   sheet.addCell(new jxl.write.Label(0,1,"http://www.sunleap.com"));
   sheet.addCell(new jxl.write.Label(1,1,"sunleap"));
   sheet.addCell(new jxl.write.Number(2,1,1000));

   sheet.addCell(new jxl.write.Label(0,2,"http://www.isosee.cn"));
   sheet.addCell(new jxl.write.Label(1,2,"isosee"));
   sheet.addCell(new jxl.write.Number(2,2,1189));

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

    }catch(Exception e)
    {
     System.out.println(e);
    }
    System.out.println("操作结束!");
 }

}
执行后,会在C盘生成一个名称为”test.xsl”的Excel文件。

三、读取文件

下面代码读取刚才生成的Excel文件,代码如下:
import java.io.*;
import jxl.*;

public class ReadExcel {

 /**
  * written by http://www.sunleap.com
  */
 public static void main(String[] args) {
  try{
   Workbook book=Workbook.getWorkbook(new File("c://test.xls"));   
   //获得第一个工作表对象
   Sheet sheet=book.getSheet(0);
   //得到第2行第1列的单元格
   Cell cell1=sheet.getCell(0,1);
   String result=cell1.getContents();
   System.out.println(result);
   book.close();
  }catch(Exception e){
   System.out.println(e);
  }
 }
}

程序执行结果:http://www.sunleap.com

四、修改文件

修改文件代码如下:

import java.io.*;
import jxl.*;
import jxl.write.*;

public class UpdateExcel {

 /**
  * written by http://www.sunleap.com
  */
 public static void main(String[] args) {
  try  {
   //获得Excel文件
   Workbook wb=Workbook.getWorkbook(new File("c://test.xls"));   
   //打开一个文件的副本,并且指定数据写回到原文件
   WritableWorkbook book=
   Workbook.createWorkbook(new File("c://test.xls"),wb);   
   //添加一个工作表eet,在第一行第一列填写内容
   WritableSheet sheet=book.createSheet("第二页",1);
   sheet.addCell(new Label(0,0,"http://www.sunleap.com"));   
   book.write();
   book.close();
  }catch(Exception e){
   System.out.println(e);
  }
  System.out.println("操作结束!");
  
 }
}

执行结果是在原有文件中加入了一个新的工作表


Excel文件往往有多行多列,可以进行循环读写,下面例子是循环读取excel文件的参考代码:
Workbook book=Workbook.getWorkbook(new File("c://test.xls"));   
//获得第一个工作表
Sheet sheet=book.getSheet(0);
//得到行列数
int columnum=sheet.getColumns();
int rownum=sheet.getRows();/
for(int i=0;i< rownum {
   for(int j=0;j<columnum{
     Cell cell1=sheet.getCell(j,i);
        String result=cell1.getContents();
        System.out.print(result);
        System.out.print("/t");
   }
   System.out.println();
}
book.close();

另外,j Excel API的其他功能,如格式化单元格、合并单元格、插入图片等参见帮助文件.

原创粉丝点击