对poi-excel导出的浅层理解
上一篇对excel导入做了浅层的解释,本文将对导出再做浅层解释.
仍然是相同的套路,只不过是反过来而已.
反过来方向理论上本来是这样的:cell-->row-->sheet-->workbook-->输出流--->硬盘文件file
但实际却不是这样的,为什么呢?因为单元格cell不会创建出一个row,更不会创建一个sheet,也不可能反向创建一个workbook,而workbook与输出流之间存在层级关系,但不存在包含被包含关系,所以导出的方向就变成这样了:
workbook-->sheet--->row--->cell--->写内容-->输出流--->硬盘文件file
是不是很合理,很符合人类思维?
所以现在开始:
1.首先从Workbook开始:Workbook wb = new HSSFWorkbook(); (//HSSF是用于xls的,如果想输出xlsx格式的,就用另一个实现类)
2.然后创建sheet:wb.createSheet("测试用工作簿")
3.然后创建row:sheet.createRow(0)//0表示第一行
4.然后创建cell:row.createCell(0)//0表示第一列
5.然后写内容:cell.setCellValue("测试用的内容")
6.然后获取输出流:FileOutputStream fos = new FileOutputStream(filepath)
7.然后流呀,流向输出流呀,流到硬盘文件呀:wb.write(fos)
8.然后,关闭资源:fos.close(),wb.close()
然后,就结束了,束了,了...
就这样简单!
但是还有一些细节需要注意:
9.上面的步骤只是说流程,没有区别对待只有一行的表头和有多行的表体,但过程都是一样的.此外,也没有考虑格式问题,不过这些都是小问题,百度很容易查到的
总结一下导出线索:
workbook-->sheet--->row--->cell--->写内容--->获取输出流--->流动--->关闭资源
记住了吗?
对poi-excel导出的浅层理解的更多相关文章
- struts2.1笔记01:MVC框架思想浅层理解
1. Struts 1是全世界第一个发布的MVC框架: 它由Craig McClanahan在2001年发布,该框架一经推出,就得到了世界上Java Web开发者的拥护,经过长达6年时间的锤炼,S ...
- poi excel导出,下载
poi.jar包 public void downExcel(HttpServletResponse response,Page<ShopApply> page) throws Excep ...
- POI excel导出
******************************* excel表格导出,使用POI实现 ******************************* 实现导出步骤 --配置导出excel ...
- java POI excel 导出复合样式(一个单元格两个字体)
前言:java poi 导出 excel 时,需要设置一个单元格有多个字体样式,有点类似于富文本. 想要达到的效果(一个单元格里): 我使用的 poi 版本是 <dependency> & ...
- poi excel导出 xssf 带下拉框
需求:导出之后带有二级级联的下拉框.(类似于省市). 最初的思路是怀疑是不是数组内串太多了,导出之后的excel有36行,调试的误区在于刚开始认为对行数有限制,后自己写了一个测试类,才发现不是行数,而 ...
- 对poi-Excel导入的浅层理解
本文即将对POI方式导入excel文件最核心的步骤予以说明,为的是简单,也是为了阐明文件导入的原理. 文件导入有一个很明显的线索: 1.首先是我们知道硬盘中的文件,即:文件对象File file 2. ...
- POI Excel导出样式设置
HSSFSheet sheet = workbook.createSheet("sheetName"); //创建sheet sheet.setVerticallyCente ...
- altera rom ram IP的浅层理解
1.altera 提供了两种rom :单口rom和双口rom. 官方文档偷图: 单口rom:输出可以配置寄存器寄存再输出,时钟可以输入输出用不同的时钟. 双口rom:输入输出时钟可不同或者A与B的时钟 ...
- 转:POI操作Excel导出
package com.rd.lh.util.excel; import java.beans.PropertyDescriptor; import java.io.FileOutputStream; ...
随机推荐
- laravel command调用方法命令
- Spring boot连接MongoDB集群
主要问题是:MongoDB集群分为复制集(replicaSet)与分片集(shardingSet),那么如何去连接这两种集群: 参考官方文档,我使用了最通用的方法:通过构造connection str ...
- Petrozavodsk Winter Camp, Andrew, 2014, Bipartite Bicolored Graphs
由i个点和j个点组成的二分图个数为 $3^{ij}$,减去不联通的部分得到得到由i,j个点组成的联通二分图个数 $g_{i,j} = 3_{ij} - \sum_{k=1}^i \sum_{l=0}^ ...
- 漏洞复现——httpd换行解析漏洞
漏洞原理: 在解析php文件时,1.php\x0A这种格式的文件将会被认为php文件解析,进而可以绕过一些服务器的安全策略. 漏洞版本: 2.4.0~2.4.29 漏洞复现: 复现该漏洞是利用dock ...
- MVC实战之排球计分(六)—— 使用EF框架,创建Controller,生成数据库。
在上篇博客我们写到,此软件的数据库连接我们使用的是EF框架,code first模式下, 通过模型类,在创建controller的时候直接生成数据库,完成数据库的连接,与操作. 在使用EF框架之前,我 ...
- Alpha阶段敏捷冲刺
博客连链接集合 第一篇:http://www.cnblogs.com/just-let-it-go/p/8875433.html 第二篇:http://www.cnblogs.com/just-let ...
- cout关闭输出缓冲,调试用
cout.setf(std::ios::unitbuf);
- librdkafka安装和php扩展php-rdkafka安装
1.安装librdkafka mac下 brew install librdkafka linux下 git clone https://github.com/edenhill/librdkafk ...
- Java中的HashMap的一些尝试
package yue; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import jav ...
- ubuntu 使用cron设置定时启动任务
介绍 cron,是一个Linux定时执行工具,可以在无需人工干预的情况下运行作业. 在Ubuntu server 下,cron是被默认安装并启动的:如果没有启动,自行设置并启动(chkconfig\s ...