网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
workbook = new XSSFWorkbook();
}
// 获取或创建Sheet
Sheet sheet = workbook.getSheet("Sheet1");
if (sheet == null) {
sheet = workbook.createSheet("Sheet1");
}
// 创建表头
List<String> titles = new ArrayList<>();
titleMap.forEach((k, v) -> titles.add(v));
if (!append) {
Row headerRow = sheet.createRow(0);
for (int i = 0; i < titles.size(); i++) {
headerRow.createCell(i).setCellValue(titles.get(i));
}
}
// 写入数据
int lastRowNum = sheet.getPhysicalNumberOfRows();
int currentRow = lastRowNum == 0 ? 0 : lastRowNum + 1;
for (T object : objects) {
Row row = sheet.createRow(currentRow++);
for (String fieldName : titleMap.keySet()) {
Cell cell = row.createCell(row.getLastCellNum());
cell.setCellValue((String) getCellValue(object, fieldName));
}
}
// 写入文件
try (FileOutputStream outputStream = new FileOutputStream(filePath)) {
workbook.write(outputStream);
}
}
/**
* 只需要列名--不创建表头
* @param objects
* @param filePath
* @param titleList
* @param append
* @param <T>
* @throws IOException
*/
public static <T> void writeExcel(List<T> objects, String filePath, List<String> titleList, boolean append) throws IOException {
// 确保工作簿以指定模式打开
Workbook workbook;
if (append) {
try (FileInputStream fis = new FileInputStream(filePath)) {
workbook = WorkbookFactory.create(fis);
}
} else {
workbook = new XSSFWorkbook();
}
// 获取或创建Sheet
Sheet sheet = workbook.getSheet("Sheet1");
if (sheet == null) {
sheet = workbook.createSheet("Sheet1");
}
// 写入数据
int lastRowNum = sheet.getPhysicalNumberOfRows();
int currentRow = lastRowNum == 0 ? 0 : lastRowNum + 1;
for (T object : objects) {