java往excel文件追加内容使用SXSSFWorkbook 具体代码+依赖坐标以及遇到EmptyFileException异常怎么处理才能继续追加内容?
要使用SXSSFWorkbook类往Excel文件追加内容,需要先添加以下依赖坐标到你的项目中:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>
下面是一个使用SXSSFWorkbook追加内容到Excel文件的示例代码:
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import java.io.FileOutputStream;
import java.io.IOException;
public class AppendToExcel {
public static void main(String[] args) {
String filePath = "path/to/your/excel/file.xlsx";
try (SXSSFWorkbook workbook = new SXSSFWorkbook()) {
Sheet sheet = workbook.createSheet("Sheet1");
// 创建行和单元格
Row row = sheet.createRow(0);
Cell cell = row.createCell(0);
cell.setCellValue("Hello");
// 追加内容到已存在的行
for (int i = 1; i <= 10; i++) {
Row existingRow = sheet.createRow(i);
Cell existingCell = existingRow.createCell(0);
existingCell.setCellValue("World " + i);
}
// 保存文件
try (FileOutputStream outputStream = new FileOutputStream(filePath)) {
workbook.write(outputStream);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
这个示例代码会创建一个新的Excel文件,并在第一行第一列写入"Hello",然后在接下来的10行中追加内容"World 1"到"World 10"。
如果你遇到EmptyFileException异常,可能是因为你的Excel文件是空文件,没有内容。你可以在追加内容之前先判断文件是否为空,如果为空,则创建一个新的工作簿并添加内容。以下是一个处理EmptyFileException异常的示例代码:
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
public class AppendToExcel {
public static void main(String[] args) {
String filePath = "path/to/your/excel/file.xlsx";
File file = new File(filePath);
SXSSFWorkbook workbook;
if (file.exists() && file.length() > 0) {
try (Workbook existingWorkbook = WorkbookFactory.create(file)) {
if (existingWorkbook instanceof SXSSFWorkbook) {
workbook = (SXSSFWorkbook) existingWorkbook;
} else {
workbook = new SXSSFWorkbook((XSSFWorkbook) existingWorkbook);
}
} catch (IOException e) {
e.printStackTrace();
return;
}
} else {
workbook = new SXSSFWorkbook();
}
try {
Sheet sheet = workbook.getSheet("Sheet1");
if (sheet == null) {
sheet = workbook.createSheet("Sheet1");
}
// 创建行和单元格
Row row = sheet.createRow(0);
Cell cell = row.createCell(0);
cell.setCellValue("Hello");
// 追加内容到已存在的行
for (int i = 1; i <= 10; i++) {
Row existingRow = sheet.createRow(i);
Cell existingCell = existingRow.createCell(0);
existingCell.setCellValue("World " + i);
}
// 保存文件
try (FileOutputStream outputStream = new FileOutputStream(filePath)) {
workbook.write(outputStream);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
workbook.dispose(); // 释放临时文件
}
}
}
这个示例代码会先判断文件是否存在且不为空,如果是,则使用现有的工作簿,否则创建一个新的工作簿
原文地址: http://www.cveoy.top/t/topic/ilE7 著作权归作者所有。请勿转载和采集!