Java生成真正格式的Excel文件

本文介绍了如何在Java中使用HSSFWorkbook和XSSFWorkbook生成Excel文件,强调了两者针对的不同版本(.xls和.xlsx),并提供了示例代码。

一般情况下如果想完全通过自己手工组装的方式去生成一个Excel文件,可以先在pom.xml文件中引入下述依赖:

<dependency>
	<groupId>com.github.crab2died</groupId>
	<artifactId>Excel4J</artifactId>
	<version>3.0.0</version>
</dependency>

在Java中如果使用相关依赖包没有严格按照标准去操作,可能会导致生成与文件类型不匹配的Excel文件,虽然通过常规的软件(Office、WPS)可以正常打开或者编辑,但其实这个文件是个错误的文件,我们在使用其它语言在操作这个文件时就会出现意想不到的错误。如果是通过手工方式组装生成Excel文件,那么仅仅需要注意的是HSSFWorkbookXSSFWorkbook这两个工具类的使用。

HSSFWorkbook:是操作Excel2003以前(包括2003)的版本,扩展名是.xls

XSSFWorkbook:是操作Excel2007的版本,扩展名是.xlsx

1.生成.xls格式的Excel文件的示例:

import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Row;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

@SpringBootTest
class DemoApplicationTests {

    @Test
    void test() {
        String fileName="D:\\测试.xls";
        List<List<String>> content=new ArrayList<>();
        List<String> list = new ArrayList<>();
        list.add("苹果");
        list.add("橘子");
        list.add("香蕉");
        content.add(list);
        content.add(list);
        addExcelFile(fileName,content);
    }

    /**
     * 功能描述:将内容追加到一个.xls格式的Excel文件中
     */
    public static void addExcelFile(String fileName,List<List<String>> content) {
        try {
            File file = new File(fileName);
            HSSFWorkbook workbook = new HSSFWorkbook();
            HSSFSheet sheet1 = workbook.createSheet("sheet1");
            int rowIndex=0;
            for(List<String> dataList:content) {
                Row row = sheet1.createRow(rowIndex);
                for (int i = 0; i < dataList.size(); i++) {
                    row.createCell(i).setCellValue(dataList.get(i));
                }
                rowIndex++;
            }
            workbook.write(file);
        } catch (Exception e) {
            System.out.println("将输出内容写入到Excel文件出现异常:"+e);
        }
    }
}

2.生成.xlsx格式的Excel文件的示例:

import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;

@SpringBootTest
class DemoApplicationTests {

    @Test
    void test() {
        String fileName="D:\\测试.xlsx";
        List<List<String>> content=new ArrayList<>();
        List<String> list = new ArrayList<>();
        list.add("苹果");
        list.add("橘子");
        list.add("香蕉");
        content.add(list);
        content.add(list);
        addExcelFile(fileName,content);
    }

    /**
     * 功能描述:将内容追加到一个.xlsx格式的Excel文件中
     */
    public static void addExcelFile(String fileName,List<List<String>> content) {
        try {
            File file = new File(fileName);
            XSSFWorkbook workbook=new XSSFWorkbook();
            XSSFSheet sheet1 = workbook.createSheet("sheet1");
            int rowIndex=0;
            for(List<String> dataList:content) {
                Row row = sheet1.createRow(rowIndex);
                for (int i = 0; i < dataList.size(); i++) {
                    row.createCell(i).setCellValue(dataList.get(i));
                }
                rowIndex++;
            }
            OutputStream outputStreamExcel = new FileOutputStream(file);
            workbook.write(outputStreamExcel);
        } catch (Exception e) {
            System.out.println("将输出内容写入到Excel文件出现异常:"+e);
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值