Java操作Excel文件基础--Java Excel API

        Java Excel API是一个成熟的、开源的Java API,主页地址:http://jexcelapi.sourceforge.net/,通过它开发人员可以动态地读取、写入或者修改Excel文件。利用这些APIJava开发人员,可以非常轻松地完成Excel读取、写入和修改,并且可以把改动写入到任何输出流中(如磁盘、HTTP、socket和数据库等等)。由于Java Excel API是完全由Java编写的,所以它可以运行在任何可以运行Java虚拟机的操作系统上。它主要的特性包括:
    1、读取操作支持的Excel版本包括95、97、2000、XP和2003 
    2、公式的读取和编写(支持97及以后版本)
    3、支持字体、数字和日期的格式化
    4、图形复制
    5、支持单元格的阴影、边框和颜色的设置
    6、国际化
    7、支持图片的插入和复制
    ……
    上面的列举的只是一部分功能,更多的介绍可以参考其主页上的说明。
    下面通过一个示例介绍读、写和合并单元格的基本操作:

import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;

import jxl.Workbook;
import jxl.format.Alignment;
import jxl.format.VerticalAlignment;
import jxl.write.Label;
import jxl.write.Number;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;

public class ExcelHandler ...{
    private OutputStream reportOS;
    //表头的字体格式,字体、大小和样式
    private final static WritableFont HEADER_FONT_STYLE = new WritableFont(
            WritableFont.TIMES, 12, WritableFont.BOLD);
    //内容的字体格式
    private final static WritableCellFormat BODY_FONT_STYLE = new WritableCellFormat(
            new WritableFont(WritableFont.TIMES,
                    WritableFont.DEFAULT_POINT_SIZE));

    public ExcelHandler(String filePath) ...{
        try ...{
            File file = new File(filePath);
            if (!file.exists()) ...{
                file.createNewFile();
            }
            this.reportOS = new FileOutputStream(filePath);
        } catch (Exception e) ...{

        }
    }

    public void getExcelReport() ...{
        try ...{
            //创建WorkBook
            WritableWorkbook workBook = Workbook.createWorkbook(this.reportOS);
            //创建Sheet(工作表)
            WritableSheet sheet = workBook.createSheet("report", 0);

            // 写表头
            writeReportHeader(sheet);
            // 写内容
            writeReportBody(sheet);
            
            //写入内容
            workBook.write();
            //关闭
            workBook.close();

            reportOS.close();
        } catch (Exception e) ...{
            e.printStackTrace();
        }
    }

    private void writeReportHeader(WritableSheet sheet) ...{
        try ...{
            //创建表头的单元格格式
            WritableCellFormat headerFormat = new WritableCellFormat(
                    HEADER_FONT_STYLE);
            //水平居中对齐
            headerFormat.setAlignment(Alignment.CENTRE);
            //竖直方向居中对齐
            headerFormat.setVerticalAlignment(VerticalAlignment.CENTRE);
            
            //建立标签,参数依次为:列索引、行索引、内容、格式
            Label seqLabel = new Label(0, 0, "序号", headerFormat);
            //增加单元格
            sheet.addCell(seqLabel);
            //合并单元格,参数依次为:列索引、行索引、列索引+需要合并的列的个数、行索引+需要合并的行的个数
            sheet.mergeCells(0, 0, 0, 1);
            //设置单元格宽度,以字符为单位
            sheet.setColumnView(0, "序号".length() + 10);

            Label basicInfoLabel = new Label(1, 0, "基本信息", headerFormat);
            sheet.addCell(basicInfoLabel);
            sheet.mergeCells(1, 0, 3, 0);

            Label nameLabel = new Label(1, 1, "姓名", headerFormat);
            sheet.addCell(nameLabel);
            sheet.setColumnView(0, "姓名".length() + 10);

            Label ageLabel = new Label(2, 1, "年龄", headerFormat);
            sheet.addCell(ageLabel);
            sheet.setColumnView(0, "年龄".length() + 10);

            Label heightLabel = new Label(3, 1, "身高", headerFormat);
            sheet.addCell(heightLabel);
            sheet.setColumnView(0, "身高".length() + 10);
            
            
        } catch (Exception e) ...{
            e.printStackTrace();
        }
    }

    private void writeReportBody(WritableSheet sheet) ...{
        try ...{
            //单元格内容位数字
            Number seq = new Number(0, 2, Double
                    .parseDouble("0"));
            sheet.addCell(seq);

            Label label = new Label(1, 2, "张三", BODY_FONT_STYLE);
            sheet.addCell(label);
            
            Number age = new Number(2, 2, Double
                    .parseDouble("18"));
            sheet.addCell(age);
            
            Number height = new Number(3, 2, Double
                    .parseDouble("183"));
            sheet.addCell(height);

        } catch (Exception e) ...{
            e.printStackTrace();
        }
    }

    public static void main(String[] args) ...{
        ExcelHandler handler = new ExcelHandler("c:/test.xls");
        handler.getExcelReport();
    }

}

下面是运行结果:

时间: 2024-11-08 18:10:08

Java操作Excel文件基础--Java Excel API的相关文章

JAVA操作properties文件

java中的properties文件是一种配置文件,主要用于表达配置信息,文件类型为*.properties,格式为文本文件,文件的内容是格式是"键=值"的格式,在properties 文件中,可以用"#"来作注释,properties文件在Java编程中用到的地方很多,操作很方便.一.properties文件 test.properties------------------------------------------------------#########

JAVA操作ZIP文件 收藏

JAVA操作ZIP文件 收藏  文章转自:http://www.abcjava.com/html/JAVA/JAVAjichu/2009/1018/1080.html  在网络传输多个文件的时候,如果一个一个传往往会非常耗时,而且也会消耗掉更多的计算机系统资源.如果我们将多个文件打包后再传输将会节约很多的计算机资源,这里,我将为大家展示如何读取.解压和创建ZIP文件,当然,这里只是简单介绍,关于zip文件有很多细节需要大家自己去实现.关于java对zip的操作,主要是用的java.util.zi

我调用excel 打开jsp页面,jsp代码打开会出现下载excel文件 ,怎么控制excel 打印时为默认为横向

问题描述 我调用excel打开jsp页面,jsp代码打开会出现下载excel文件,怎么控制excel打印时为默认为横向

Java操作Mongodb 保存/读取java对象到/从mongodb

Mongodb官方提供的Java驱动,保存与读取,需要的者是DBObject对象,这是一个接口,实现put,get等方法,跟map类似,如果我们要直接把普通的java对象保存到mongodb,就需要先转换成DBObject对象,或者直接实现DBObject接口,操作起来相当复杂.还好,monodb驱动带了把json转换成DBObject对象的功能,加上Google的Gson,就可以实现把普通的对象保存到mongodb中.如果要从mogodb中读出对象,反过来操作即可,但有一点需要注意的是,mon

如何用Java操作XML文件

问题描述 毕业设计,要开发一个图书馆文献采购软件.现在把书目写入了XML文件,如下:<books><book><ISBN>978-7-03-020860-6</ISBN><三目号>00028090041</三目号><题名>概率论与数理统计教程</题名><第一责任说明>李子强</第一责任说明><出版社>科学出版社</出版社><出版地>北京</出版地

java 解析xml文件-在JAVA中解析XML文件时遇上难题,向各位大虾求助。

问题描述 在JAVA中解析XML文件时遇上难题,向各位大虾求助. 在服务器进程中编写登录时出现以下错误提示: Exception in thread "Thread-0" java.lang.ClassCastException: com.sun.org.apache.xerces.internal.dom.DeferredDocumentImpl cannot be cast to javax.swing.text.Document at server.ServerThread.Lo

java操作excel的方法_java

本文实例讲述了java操作excel的方法.分享给大家供大家参考.具体如下: WritableWorkbook workbook = Workbook.createWorkbook(new File("d:\\output.xls")); WritableSheet sheet = workbook.createSheet("项目简报", 0); //样式 WritableFont sonti18font = new WritableFont(WritableFon

Windows中使用Java生成Excel文件并插入图片的方法_java

生成简单的Excel文件 在现实的办公中,我们常常会有这样一个要求:要求把报表直接用excel打开.在实习中有这样一个需求.根据所选择的资源查询用户所提供附件的全部信息并生成excel供下载.但是在查询的时候我们需要来检测用户所提供的附件里面的信息是否有错误(身份证).有错误的生成错误信息excel.      Apache的POI项目,是目前比较成熟的HSSF接口,用来处理Excel对象.其实POI不仅仅只能处理excel,它还可以处理word.PowerPoint.Visio.甚至Outlo

Java使用jxl.jar包写Excel文件的最适合列宽问题基本实现

以前用jxl.jar包,读写过Excel文件.也没有注意最适合列宽的问题,但是jxl.jar没有提供最适合列宽的功能,上次用到写了一下,可以基本实现最适合列宽. 注意,这个只是基本可以实现,基本针对中文电子报表. 1.实现思路 (1)一般的中文汉字占位长度是英文字母的2倍,"方块字"很统一. (2)对于要写入Excel中的数据统计每一列的最大列宽,最后直接将这一列的列宽设置为这个列的最大值即可. 2.实现代码 import java.io.File; import java.util.