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();
    }


}

下面是运行结果:
运行结果
目录
相关文章
|
24天前
|
Java
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
60 9
|
25天前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
64 2
|
4天前
|
Java
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
60 34
|
9天前
|
Python
按条件将Excel文件拆分到不同的工作表
使用Python的pandas库,可以轻松将Excel文件按条件拆分到不同的工作表中。本文通过一个示例代码展示了如何生成一个包含总成绩表和三个班级表的Excel文件。代码首先创建了一个包含学生姓名、班级和各科成绩的数据框,然后按班级分组,将每个班级的数据分别写入不同的工作表。最后,生成的Excel文件将包含四个工作表,分别为总成绩表和三个班级的成绩表。
20 6
按条件将Excel文件拆分到不同的工作表
|
4天前
|
算法 Java API
如何使用Java开发获得淘宝商品描述API接口?
本文详细介绍如何使用Java开发调用淘宝商品描述API接口,涵盖从注册淘宝开放平台账号、阅读平台规则、创建应用并申请接口权限,到安装开发工具、配置开发环境、获取访问令牌,以及具体的Java代码实现和注意事项。通过遵循这些步骤,开发者可以高效地获取商品详情、描述及图片等信息,为项目和业务增添价值。
34 10
|
8天前
|
Python
批量将不同的工作簿合并到同一个Excel文件
本文介绍如何使用Python的`pandas`库批量合并不同工作簿至同一Excel文件。通过模拟生成三个班级的成绩数据,分别保存为Excel文件,再将这些文件合并成一个包含所有班级成绩的总成绩单。步骤包括安装必要库、生成数据、保存与合并工作簿。
19 6
|
8天前
|
Python
按条件将Excel文件拆分到不同的工作表
使用Python的pandas库,可以轻松将Excel文件按条件拆分为多个工作表。本文通过一个具体示例,展示了如何根据学生班级将成绩数据拆分到不同的工作表中,并生成一个包含总成绩表和各班级成绩表的Excel文件。代码简洁明了,适合初学者学习和应用。
23 6
|
12天前
|
Java API 开发者
Java中的Lambda表达式与Stream API的协同作用
在本文中,我们将探讨Java 8引入的Lambda表达式和Stream API如何改变我们处理集合和数组的方式。Lambda表达式提供了一种简洁的方法来表达代码块,而Stream API则允许我们对数据流进行高级操作,如过滤、映射和归约。通过结合使用这两种技术,我们可以以声明式的方式编写更简洁、更易于理解和维护的代码。本文将介绍Lambda表达式和Stream API的基本概念,并通过示例展示它们在实际项目中的应用。
|
17天前
|
前端开发
实现Excel文件和其他文件导出为压缩包,并导入
实现Excel文件和其他文件导出为压缩包,并导入
23 1
|
21天前
|
消息中间件 存储 Java
RocketMQ文件刷盘机制深度解析与Java模拟实现
【11月更文挑战第22天】在现代分布式系统中,消息队列(Message Queue, MQ)作为一种重要的中间件,扮演着连接不同服务、实现异步通信和消息解耦的关键角色。Apache RocketMQ作为一款高性能的分布式消息中间件,广泛应用于实时数据流处理、日志流处理等场景。为了保证消息的可靠性,RocketMQ引入了一种称为“刷盘”的机制,将消息从内存写入到磁盘中,确保消息持久化。本文将从底层原理、业务场景、概念、功能点等方面深入解析RocketMQ的文件刷盘机制,并使用Java模拟实现类似的功能。
38 3