poi操作文档转为输入流
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操作文档转为输入流相关推荐
- 文档转成html在线预览,java poi Word文档转为HTML文件 实现在线预览功能
Java代码 import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; im ...
- Java使用POI将doc文档转为Html
Java使用POI将doc文档转为Html 前提 几个使用到的类 几个方法的理解 converter.setPicturesManager(xxxx) converter.processDocumen ...
- poi excel文档生成与读取
阿帕奇poi excel文档操作 1. introduce 2. 轮子 3. demo 以九九乘法表为例 3.1 xls的生成 3.2 xlsx的生成 3.3 读取xlsx 1. introduce ...
- JAVA 使用POI读取文档
前言:工作时总会用到一个Excel工具类来完成对EXCEL的导入和导出,傻瓜式的强大工具类让我潦草地使用API调用,但实际上POI对Excel是如何操作的并不明白,换个项目或者架构就不知道如何用POI ...
- 如何批量将 Excel 文档转为 Svg 格式
概要:SVG 是一种图形文件格式,它的全称可缩放的矢量图形,这种图形格式跟我们平时拍照的图片格式是有不一样的,我们平时拍的照片,如果放大到一定的程度都会变得模糊不清.但是 SVG 这种矢量图形格式是可 ...
- 如何批量将 Word 文档转为 HTML 格式
概要:HTML 的全称为超文本标记语言,是一种标记语言.我们可以将所需要表达的信息按某种规则写成 HTML 文件,这样可以通过专用的软件来识别,比如常用的浏览器.这些软件可以将这些 HTML 文件&q ...
- Java程序实现Word文档转为pdf以及出现的问题解决
做兽医项目需要用到这种需求,很多程序员都遇到过,有些word文档希望直接在浏览器中打开进行预览,但是浏览器往往不是很配合,直接就提示下载,不像pdf文档,浏览器可以直接进行预览. 1. Word文档转 ...
- 如何批量将 Word 文档转为 ePub 格式
概要:ePub 是一个自由的开放标准,属于一种可以"自动重新编排"的内容,也就是文字内容可以根据阅读设备的特性,以最适于阅读的方式显示,所以现在主流的电子书基本都是 ePub 的. ...
- 如何批量将 Doc 格式的 Word 文档转为 Docx 格式
概要:我们都知道 Word 格式有多种.比如常见的有 Doc.Docx,这两种类型是能够相互兼容的,也是能够相互转化的.那今天给大家介绍的是如何将多个 Doc 格式文档批量转为 Docx 格式. 我们 ...
最新文章
- linux kvm虚拟化命令,Linux系统下kvm虚拟化(三)日常管理常用命令和配置说明
- 去除iphone图标的半弧高亮效果
- php用a什么软件来下载,AMQB官方PHP库
- 排序算法:希尔排序算法实现及分析
- java键盘输入到文件中_在Linux中使用java和javac命令编译运行java文件
- Java 编程下的并发线程之间的同步代码块死锁
- 精选|2018年12月R新包推荐
- oracle的创建视图,oracle 创建视图
- linux lammps 安装教程,LAMMPS安装总结
- 地磅15针到9针数据线连接串口数据采集方法
- 百度网盘不限速下载器 proxyee down for Mac百度网盘高速下载器
- PowerDesigner16.5下载和安装教程
- 曼陀罗花对女性有什么作用?
- [SAE]免费服务器:新浪云服务器SAE的注册与使用
- python报错(一):takes no arguments
- dsp28335杂记2
- HTTPS证书转换成PEM格式
- 我对价值投资的思考(一)
- python 调用Multipart类型接口上传文件和下载文件
- React学习笔记(八)--- HooK