1.简介
通过前面的读取,可以知道Workbook中有多个Sheet
,一个Sheet中有多个Row
,一个Row中具有多个Cell
,所以写入的时候应该是先创建Shee然后创建多个个Row,然后再Row中创建多个Cell,最后写入数到Cell中
2.创建通用的excel写入器
public void writeDateToExcel(List<Object[]> datas, ExcelType excelType, File destFile) throws Exception {
Workbook workbook = MyExcelUtils.createWorkBook(excelType);
Sheet sheet = workbook.createSheet("default-sheet");
for (int i = 0; datas != null && i < datas.size(); i++) {
Object[] objs = datas.get(i);
Row row = sheet.createRow(i);
for (int j = 0; objs != null && j < objs.length; j++) {
Object value = objs[j];
Cell cell = row.createCell(j);
MyExcelUtils.writeCellValue(cell, value);
}
}
MyExcelUtils.writeWorkBook(workbook, destFile);
}
这就是一个正向的读取操作,也就是一个写入操作,可以看出写入和读入基本生完全一致,还有就是要注意类型转换的问题,其中的一个MyExcelUtils就是一个简单的类型判断写入,还有一个写出操作这里就不显示了
3.准备数据开始写
public static void main(String[] args) {
ExcelWriteTest excelWriteTest = new ExcelWriteTest();
excelWriteTest.testWrite();
}
public void testWrite() {
URL url = Thread.currentThread().getContextClassLoader().getResource("");
File destFile = new File(url.getPath() + "/newTest.xlsx");
try {
writeDateToExcel(getData(), ExcelType.XLSX, destFile);
System.out.println("输出文件成功,文件地址在:" + destFile.getAbsolutePath());
} catch (Exception e) {
e.printStackTrace();
System.out.println("创建excel文件失败");
}
}
public List<Object[]> getData() {
Object[] title = { "username", "age", "onwork", "isleaf" };
Object[] data1 = { "admin", 18, true, "yes" };
Object[] data2 = { "guest", 20, false, "no" };
Object[] data3 = { "user", 22, true, "yes" };
List<Object[]> datas = new ArrayList<Object[]>();
datas.add(title);
datas.add(data1);
datas.add(data2);
datas.add(data3);
return datas;
}
4.执行后的结果
修改类型为xls输出的结果
最后生成的文件为:
5.总结
1.写入excel操作和读取操作基本上完全一致
就是最后使用的是write方法
2.基本上excel的写入是比较容易理解的
以上纯属个人见解,如有问题请联系本人!