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


}

下面是运行结果:
运行结果
目录
相关文章
|
6月前
|
JSON Java API
【干货满满】分享京东API接口到手价,用Java语言实现
本示例使用 Java 调用京东开放平台商品价格及优惠信息 API,通过商品详情和促销接口获取到手价(含优惠券、满减等),包含签名生成、HTTP 请求及响应解析逻辑,适用于比价工具、电商系统集成等场景。
|
4月前
|
Java Unix Go
【Java】(8)Stream流、文件File相关操作,IO的含义与运用
Java 为 I/O 提供了强大的而灵活的支持,使其更广泛地应用到文件传输和网络编程中。!但本节讲述最基本的和流与 I/O 相关的功能。我们将通过一个个例子来学习这些功能。
222 2
|
11月前
|
缓存 监控 负载均衡
如何提升 API 性能:来自 Java 和测试开发者的优化建议
本文探讨了如何优化API响应时间,提升用户体验。通过缓存(如Redis/Memcached)、减少数据负载(REST过滤字段或GraphQL精确请求)、负载均衡(Nginx/AWS等工具)、数据压缩(Gzip/Brotli)、限流节流、监控性能(Apipost/New Relic等工具)、升级基础设施、减少第三方依赖、优化数据库查询及采用异步处理等方式,可显著提高API速度。快速响应的API不仅让用户满意,还能增强应用整体性能。
|
7月前
|
监控 Java API
Java语言按文件创建日期排序及获取最新文件的技术
这段代码实现了文件创建时间的读取、文件列表的获取与排序以及获取最新文件的需求。它具备良好的效率和可读性,对于绝大多数处理文件属性相关的需求来说足够健壮。在实际应用中,根据具体情况,可能还需要进一步处理如访问权限不足、文件系统不支持某些属性等边界情况。
349 14
|
6月前
|
JSON Java API
【干货满满】分享拼多多API接口到手价,用Java语言实现
本方案基于 Java 实现调用拼多多开放平台商品详情 API,通过联盟接口获取商品到手价(含拼团折扣与优惠券),包含签名生成、HTTP 请求及响应解析逻辑,适用于电商比价、导购系统集成。
|
6月前
|
JSON Java API
【干货满满】分享淘宝API接口到手价,用Java语言实现
本文介绍了如何使用 Java 调用淘宝开放平台 API 获取商品到手价,涵盖依赖配置、签名生成、HTTP 请求与响应解析等核心实现步骤。
|
7月前
|
Python
Excel中如何批量重命名工作表与将每个工作表导出到单独Excel文件
本文介绍了如何在Excel中使用VBA批量重命名工作表、根据单元格内容修改颜色,以及将工作表导出为独立文件的方法。同时提供了Python实现导出工作表的代码示例,适用于自动化处理Excel文档。
|
7月前
|
存储 Java 编译器
深入理解Java虚拟机--类文件结构
本内容介绍了Java虚拟机与Class文件的关系及其内部结构。Class文件是一种与语言无关的二进制格式,包含JVM指令集、符号表等信息。无论使用何种语言,只要能生成符合规范的Class文件,即可在JVM上运行。文章详细解析了Class文件的组成,包括魔数、版本号、常量池、访问标志、类索引、字段表、方法表和属性表等,并说明其在Java编译与运行过程中的作用。
186 0
|
8月前
|
存储 Java 数据安全/隐私保护
Java技术栈揭秘:Base64加密和解密文件的实战案例
以上就是我们今天关于Java实现Base64编码和解码的实战案例介绍。希望能对你有所帮助。还有更多知识等待你去探索和学习,让我们一同努力,继续前行!
550 5
|
7月前
|
存储 人工智能 Java
java之通过Http下载文件
本文介绍了使用Java实现通过文件链接下载文件到本地的方法,主要涉及URL、HttpURLConnection及输入输出流的操作。
508 0