1.问题描述
需要根据excel文件内容同时写入该excel文件
2.解决目标
希望能够进行输入输出流快速的切换
3.解决方案
利用org.apache.poi的XSSFWorkbook进行excel操作,XSSFWorkbook对象可以作为类似nio中的buffer进行中间数据的存放,入口是inputstream,出口是outputstream。
// 利用输入流创建XSSFWorkbook对象
XSSFWorkbook wb = new XSSFWorkbook(inputstream);
// 获取cell内容并操作
cell.getCellValue();
...
// 写入最终结果
cell.setCellValue(xxx);
// 利用输出流写入excel文件
wb.write(outputstream);
可以看出由于有了XSSFWorkbook中转对象后,输入输出切换比较方便。而如果使用传统的流操作,可能就需要其他特殊的方式(比如新建一个临时文件作为读中转,创建一个类似于XSSFWorkbook中转的StringBuffer对象),nio的话就可以使用读写同时进行的方式