一般情况下如果想完全通过自己手工组装的方式去生成一个Excel文件,可以先在pom.xml文件中引入下述依赖:
<dependency>
<groupId>com.github.crab2died</groupId>
<artifactId>Excel4J</artifactId>
<version>3.0.0</version>
</dependency>
在Java中如果使用相关依赖包没有严格按照标准去操作,可能会导致生成与文件类型不匹配的Excel文件,虽然通过常规的软件(Office、WPS)可以正常打开或者编辑,但其实这个文件是个错误的文件,我们在使用其它语言在操作这个文件时就会出现意想不到的错误。如果是通过手工方式组装生成Excel文件,那么仅仅需要注意的是HSSFWorkbook和XSSFWorkbook这两个工具类的使用。
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);
}
}
}
本文介绍了如何在Java中使用HSSFWorkbook和XSSFWorkbook生成Excel文件,强调了两者针对的不同版本(.xls和.xlsx),并提供了示例代码。
254

被折叠的 条评论
为什么被折叠?



