1.需求

使用poi进行excel的操作,再将操作之后的文档上传到指定服务器,用过poi的同学都知道,我们使用poi进行操作的时候,他的通常写法就是.write(输出流),将我们的数据直接输出到输出流。那如果这个时候,我要的不是输出流,而是要输入流呢,我需要输入流去调用一个文件上传接口。这个需求有两种做法:

  • 先将生成的excel保存到指定的服务器路径,在通过路径获取到文件,调用上传接口,最后删除文件,避免数据堆积(当然也可以不删除,作为存档留着,以后统一做数据备份,这个具体看需求和文件重要程度)
  • 直接将poi操作之后的excel转为输入流,可以节省持久化到磁盘的时间,提高效率,

2.简化版代码

public static void main(String[] args) throws IOException {//excel模板的位置String path = "d:\\Users\\xychenkj\\Desktop\\demo.xlsx";FileInputStream inputStream = new FileInputStream(path);//创建工作簿  注意这个是针对于xlsx文件的  xls用的是另一个类XSSFWorkbook sheets = new XSSFWorkbook(inputStream);//创建工作表XSSFSheet sheet = sheets.getSheetAt(0);//模拟添加10行数据for (int i = 1; i <= 10; i++) {//创建一行XSSFRow rowX = sheet.createRow(i);//创建一列XSSFCell cell0 = rowX.createCell(0);//向这一列设置数据cell0.setCellValue(i);}//核心代码如下 主要的思路就是把输出流的数据直接获取到,再用输入流去读取输出流的数据,从而实现流转换//创建字节数组输出流ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();//输出缓冲流OutputStream output = new BufferedOutputStream(byteArrayOutputStream);//将excel写入到输出流中sheets.write(output);//刷新缓冲区output.flush();//把输出流的数据拿到byte[] bytes = byteArrayOutputStream.toByteArray();//读取数据ByteArrayInputStream bais = new ByteArrayInputStream(bytes);//字节流转为字符流BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(bais));}

3.分析

以上代码只是简单的书写,存在没有关闭流等一系列问题,但是这个代码的目的是为了告诉大家,在我们需要进行文件,流等一系列转换的时候,有这么一个思路,可以绕开持久化到本地直接存储,在文件量庞大并且无需做本地保存的时候,可以通过这个思路优化代码。并且流与流之间可以使用读取字节数组的方式相互转换,不仅仅是字节流可以转为字符流,输入流也可以转为输出流使用。

poi操作文档转为输入流相关推荐

  1. 文档转成html在线预览,java poi Word文档转为HTML文件 实现在线预览功能

    Java代码 import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; im ...

  2. Java使用POI将doc文档转为Html

    Java使用POI将doc文档转为Html 前提 几个使用到的类 几个方法的理解 converter.setPicturesManager(xxxx) converter.processDocumen ...

  3. poi excel文档生成与读取

    阿帕奇poi excel文档操作 1. introduce 2. 轮子 3. demo 以九九乘法表为例 3.1 xls的生成 3.2 xlsx的生成 3.3 读取xlsx 1. introduce ...

  4. JAVA 使用POI读取文档

    前言:工作时总会用到一个Excel工具类来完成对EXCEL的导入和导出,傻瓜式的强大工具类让我潦草地使用API调用,但实际上POI对Excel是如何操作的并不明白,换个项目或者架构就不知道如何用POI ...

  5. 如何批量将 Excel 文档转为 Svg 格式

    概要:SVG 是一种图形文件格式,它的全称可缩放的矢量图形,这种图形格式跟我们平时拍照的图片格式是有不一样的,我们平时拍的照片,如果放大到一定的程度都会变得模糊不清.但是 SVG 这种矢量图形格式是可 ...

  6. 如何批量将 Word 文档转为 HTML 格式

    概要:HTML 的全称为超文本标记语言,是一种标记语言.我们可以将所需要表达的信息按某种规则写成 HTML 文件,这样可以通过专用的软件来识别,比如常用的浏览器.这些软件可以将这些 HTML 文件&q ...

  7. Java程序实现Word文档转为pdf以及出现的问题解决

    做兽医项目需要用到这种需求,很多程序员都遇到过,有些word文档希望直接在浏览器中打开进行预览,但是浏览器往往不是很配合,直接就提示下载,不像pdf文档,浏览器可以直接进行预览. 1. Word文档转 ...

  8. 如何批量将 Word 文档转为 ePub 格式

    概要:ePub 是一个自由的开放标准,属于一种可以"自动重新编排"的内容,也就是文字内容可以根据阅读设备的特性,以最适于阅读的方式显示,所以现在主流的电子书基本都是 ePub 的. ...

  9. 如何批量将 Doc 格式的 Word 文档转为 Docx 格式

    概要:我们都知道 Word 格式有多种.比如常见的有 Doc.Docx,这两种类型是能够相互兼容的,也是能够相互转化的.那今天给大家介绍的是如何将多个 Doc 格式文档批量转为 Docx 格式. 我们 ...

最新文章

  1. linux kvm虚拟化命令,Linux系统下kvm虚拟化(三)日常管理常用命令和配置说明
  2. 去除iphone图标的半弧高亮效果
  3. php用a什么软件来下载,AMQB官方PHP库
  4. 排序算法:希尔排序算法实现及分析
  5. java键盘输入到文件中_在Linux中使用java和javac命令编译运行java文件
  6. Java 编程下的并发线程之间的同步代码块死锁
  7. 精选|2018年12月R新包推荐
  8. oracle的创建视图,oracle 创建视图
  9. linux lammps 安装教程,LAMMPS安装总结
  10. 地磅15针到9针数据线连接串口数据采集方法
  11. 百度网盘不限速下载器 proxyee down for Mac百度网盘高速下载器
  12. PowerDesigner16.5下载和安装教程
  13. 曼陀罗花对女性有什么作用?
  14. [SAE]免费服务器:新浪云服务器SAE的注册与使用
  15. python报错(一):takes no arguments
  16. dsp28335杂记2
  17. HTTPS证书转换成PEM格式
  18. 我对价值投资的思考(一)
  19. python 调用Multipart类型接口上传文件和下载文件
  20. React学习笔记(八)--- HooK

热门文章

  1. JS语言是怎么被运行的
  2. 使用POI完成Excel数据处理
  3. 利用cv2和PyQt5实现类似视频格式工厂的小项目
  4. 干货 | 万字长文带你复习线性代数!(二)
  5. mysql 5.6 全文索引_MySql5.6全文索引 及 5.7 中文索引插件ngram
  6. 线性回归模型(OLS)2
  7. 卷积神经网络CNN权威介绍
  8. [CTSC2017]网络
  9. (P2014[CTSC1997])选课(树上背包)
  10. RF基础(相位和波长、回波损耗和驻波比、电缆阻抗、极化、天线波束宽度)