poi操作Excel表,读取Excel表是实现了,可是怎么根据读到的数据,在写入另一个Excel文件中啊!各位,帮我在测试类中写下后半部分,多谢了!!
//实体类
public class Demo {
private String name;
private String rd;
private String project;
private String workTime;
public Demo() {
}
public Demo(String name, String rd, String project, String workTime) {
this.name = name;
this.rd = rd;
this.project = project;
this.workTime = workTime;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getRd() {
return rd;
}
public void setRd(String rd) {
this.rd = rd;
}
public String getProject() {
return project;
}
public void setProject(String project) {
this.project = project;
}
public String getWorkTime() {
return workTime;
}
public void setWorkTime(String workTime) {
this.workTime = workTime;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Demo demo = (Demo) o;
return Objects.equals(name, demo.name) &&
Objects.equals(rd, demo.rd) &&
Objects.equals(project, demo.project) &&
Objects.equals(workTime, demo.workTime);
}
@Override
public int hashCode() {
return Objects.hash(name, rd, project, workTime);
}
@Override
public String toString() {
return "Demo{" +
"name='" + name + '\'' +
", rd='" + rd + '\'' +
", project='" + project + '\'' +
", workTime='" + workTime + '\'' +
'}';
}
}
//测试类
@Test
public void test3() throws IOException {
List<Demo> demoList = new ArrayList<>();
//1.获取工作薄
XSSFWorkbook workbook = new XSSFWorkbook("D:\\工作数据统计.xlsx");
//2.获取工作表
XSSFSheet sheet = workbook.getSheetAt(0);
int lastRowNum = sheet.getLastRowNum();//最后一行索引
for (int i =0;i<=lastRowNum;i++) {
XSSFRow row = sheet.getRow(i);
short cellNum = row.getLastCellNum();//获取最后一行单元格的索引
List<String> list = new ArrayList<>();
for (int j = 0; j <= cellNum; j++) {
XSSFCell cell = row.getCell(j, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK);
cell.setCellType(CellType.STRING);
String value = cell.getStringCellValue();
list.add(value);
}
Demo demo = new Demo(list.get(0), list.get(1), list.get(2), (list.get(3)));
demoList.add(demo);
}
读取的数据,用poi生成一个excel,然后遍历往里写入数据再导出就行了
//接着你的代码之后继续写
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet();
String[] header = {"name","rd","project","workTime"};
HSSFRow row = sheet.createRow(0);
HSSFCell cell = row.createCell(j);
cell.setCellValue(header[0]);
cell.setCellValue(header[1]);
cell.setCellValue(header[2]);
cell.setCellValue(header[3]);
for (int i = 0; i < demoList.size(); i++) {
Row row = sheet.createRow(i+1);
Cell cellName = row.createCell(0);
cellName.setCellValue(demoList.get(i).getName());
Cell cellRd = row.createCell(1);
cellRd.setCellValue(demoList.get(i).getRd());
Cell cellProject = row.createCell(2);
cellProject.setCellValue(demoList.get(i).getProject());
Cell cellworkTime = row.createCell(2);
cellworkTime.setCellValue(demoList.get(i).getWorktime());
}
FileOutputStream fileOutputStream = new FileOutputStream("工作数据统计(新).xlsx");
workbook.write(fileOutputStream);
fileOutputStream.close();
public static void writer(List<Demo> data) throws Exception {
Workbook workbook = new XSSFWorkbook();
//2.创建一个工作表
Sheet sheet = workbook.createSheet("统计表");
//列:x 行:y
//(0,0)
//3.创建一行 0代表第一行
Row row1 = sheet.createRow(0);
//4.创建一个单元格
row1.createCell(0).setCellValue("name");
//(1,0)第一行第二列
row1.createCell(1).setCellValue("rd");
row1.createCell(2).setCellValue("project");
row1.createCell(3).setCellValue("workTime");
for (int i = 0; i < data.size(); i++) {
Row temp = sheet.createRow(i + 1);
temp.createCell(0).setCellValue(data.get(i).getName());
temp.createCell(1).setCellValue(data.get(i).getRd());
temp.createCell(2).setCellValue(data.get(i).getProject());
temp.createCell(3).setCellValue(data.get(i).getWorkTime());
}
//生成一张表(IO流) 03版本使用xlsx结尾:
FileOutputStream fileOutputStream = new FileOutputStream("统计文件07版本.xlsx");
//写
workbook.write(fileOutputStream);
//关闭
fileOutputStream.close();
System.out.println("07版本写入完毕");
}