java代买实现 easyExcel第一次执行新建文件夹并创建新execl写入数据 第二次执行以追加方式写入文件
时间: 2023-12-14 17:37:40 浏览: 200
你好,可以参考下面的代码实现:
```java
import com.alibaba.excel.EasyExcelFactory;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.metadata.Sheet;
import com.alibaba.excel.metadata.Table;
import com.alibaba.excel.support.ExcelTypeEnum;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
public class ExcelUtil {
/**
* 创建Excel文件并写入数据
*
* @param filePath 文件路径
* @param sheetName sheet名称
* @param head 表头
* @param data 数据
*/
public static void createExcel(String filePath, String sheetName, List<String> head, List<List<String>> data) {
// 如果文件所在目录不存在,则创建目录
File file = new File(filePath);
if (!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
}
// 写入数据
OutputStream out = null;
try {
out = new FileOutputStream(file);
ExcelWriter writer = EasyExcelFactory.getWriter(out, ExcelTypeEnum.XLSX, true);
Sheet sheet = new Sheet(1, 0);
sheet.setSheetName(sheetName);
// 设置表头
Table table = new Table(1);
List<List<String>> headList = new ArrayList<>();
headList.add(head);
table.setHead(headList);
writer.write1(data, sheet, table);
writer.finish();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (out != null) {
try {
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
/**
* 追加数据到Excel文件
*
* @param filePath 文件路径
* @param sheetName sheet名称
* @param data 数据
*/
public static void appendExcel(String filePath, String sheetName, List<List<String>> data) {
// 如果文件不存在,则直接创建并写入数据
File file = new File(filePath);
if (!file.exists()) {
createExcel(filePath, sheetName, new ArrayList<>(), data);
return;
}
// 追加数据
OutputStream out = null;
try {
out = new FileOutputStream(file, true);
ExcelWriter writer = EasyExcelFactory.getWriter(out, ExcelTypeEnum.XLSX, true);
Sheet sheet = new Sheet(1, 0);
sheet.setSheetName(sheetName);
writer.write0(data, sheet);
writer.finish();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (out != null) {
try {
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
```
使用示例:
```java
public class TestExcel {
public static void main(String[] args) {
String filePath = "C:/Temp/test.xlsx";
String sheetName = "Sheet1";
// 写入数据
List<String> head = new ArrayList<>();
List<List<String>> data = new ArrayList<>();
head.add("姓名");
head.add("年龄");
List<String> row1 = new ArrayList<>();
row1.add("张三");
row1.add("20");
List<String> row2 = new ArrayList<>();
row2.add("李四");
row2.add("25");
data.add(row1);
data.add(row2);
ExcelUtil.createExcel(filePath, sheetName, head, data);
// 追加数据
List<List<String>> appendData = new ArrayList<>();
List<String> appendRow = new ArrayList<>();
appendRow.add("王五");
appendRow.add("30");
appendData.add(appendRow);
ExcelUtil.appendExcel(filePath, sheetName, appendData);
}
}
```
注意事项:
1. `createExcel` 方法会在指定路径下创建一个新的 Excel 文件,如果文件已存在则会覆盖原有文件。
2. `appendExcel` 方法会在指定路径下追加数据到已存在的 Excel 文件,如果文件不存在则会创建一个新的文件,并写入数据。
阅读全文