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

简介:         Java Excel API是一个成熟的、开源的Java API,主页地址:http://jexcelapi.sourceforge.net/,通过它开发人员可以动态地读取、写入或者修改Excel文件。

        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(00"序号", headerFormat);
            
//增加单元格
            sheet.addCell(seqLabel);
            
//合并单元格,参数依次为:列索引、行索引、列索引+需要合并的列的个数、行索引+需要合并的行的个数
            sheet.mergeCells(0001);
            
//设置单元格宽度,以字符为单位
            sheet.setColumnView(0"序号".length() + 10);

            Label basicInfoLabel 
= new Label(10"基本信息", headerFormat);
            sheet.addCell(basicInfoLabel);
            sheet.mergeCells(
1030);

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

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

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

    }


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

            Label label 
= new Label(12"张三", BODY_FONT_STYLE);
            sheet.addCell(label);
            
            Number age 
= new Number(22, Double
                    .parseDouble(
"18"));
            sheet.addCell(age);
            
            Number height 
= new Number(32, 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();
    }


}

下面是运行结果:
运行结果
目录
相关文章
|
4天前
|
Java 关系型数据库 MySQL
Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
【4月更文挑战第12天】Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
30 3
|
19小时前
|
API 数据库
工作流JBPM操作API办理任务&流程变量
工作流JBPM操作API办理任务&流程变量
|
1天前
|
Java API
Java基础&API(3)
Java基础&API(3)
|
1天前
|
Java 机器人 API
Java基础&常用API(1)
Java基础&常用API(1)
|
2天前
|
安全 Java 程序员
|
6天前
|
Java API Apache
ZooKeeper【基础 03】Java 客户端 Apache Curator 基础 API 使用举例(含源代码)
【4月更文挑战第11天】ZooKeeper【基础 03】Java 客户端 Apache Curator 基础 API 使用举例(含源代码)
24 11
|
7天前
|
安全 Java API
java借助代理ip,解决访问api频繁导致ip被禁的问题
java借助代理ip,解决访问api频繁导致ip被禁的问题
|
10天前
|
存储 安全 Java
说说Java 8 引入的Stream API
说说Java 8 引入的Stream API
12 0
|
10天前
|
分布式计算 Java API
Java 8新特性之Lambda表达式与Stream API
【4月更文挑战第16天】本文将介绍Java 8中的两个重要新特性:Lambda表达式和Stream API。Lambda表达式是Java 8中引入的一种新的编程语法,它允许我们将函数作为参数传递给其他方法,从而使代码更加简洁、易读。Stream API是Java 8中引入的一种新的数据处理方式,它允许我们以声明式的方式处理数据,从而使代码更加简洁、高效。本文将通过实例代码详细讲解这两个新特性的使用方法和优势。
|
11天前
|
安全 Java API
RESTful API设计与实现:Java后台开发指南
【4月更文挑战第15天】本文介绍了如何使用Java开发RESTful API,重点是Spring Boot框架和Spring MVC。遵循无状态、统一接口、资源标识和JSON数据格式的设计原则,通过创建控制器处理HTTP请求,如示例中的用户管理操作。此外,文章还提及数据绑定、验证、异常处理和跨域支持。最后,提出了版本控制、安全性、文档测试以及限流和缓存的最佳实践,以确保API的稳定、安全和高效。