Java使用POI写(创建)Excel
导入依赖
<!--xls(03版本excel)-->
<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>5.2.2</version>
</dependency><!--xlsx(07版本excel)-->
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>5.2.0</version>
</dependency>
写(创建)一个excel
public class ExcelwriteTest {//生成文件位置private static final String PATH="D:\\";@Testpublic void testWrite() throws Exception {/*** 创建一个工作簿* Workbook有三个常用实现类* 1.HSSFWorkbook 03版xls* 2.XSSFWorkbook 07版xlsx* 3.SXSSFWorkbook 可以理解为第二种的plus版,增加读写速度*/Workbook workbook = new HSSFWorkbook();//创建一个工作表sheetSheet sheet = workbook.createSheet("03版写入测试");//创建一行(0表示创建的是第一行)Row row1 = sheet.createRow(0);//创建一个单元格(这个单元格表示的是第一行第一列的单元格,即坐标(1,1))Cell cell11 = row1.createCell(0);//给这个单元格赋值cell11.setCellValue("坐标(1,1)");//生成Excel文件(使用io流),注:文件后缀要与excel版本对应FileOutputStream fileOutputStream = new FileOutputStream(PATH + "03版excel测试写入.xls");//写入workbook.write(fileOutputStream);//文件写完后关闭流fileOutputStream.close();System.out.println("03版excel创建完成");//若想要创建07版本仅需修改两处,1.创建工作簿出改为new XSSFWorkbook(); 2.生成文件名后缀要对应07版本改为.xlsx}
}
当写入大量数据时03版和07版的区别
大文件写入03版(HSSF):
优点:写入过程中不操作磁盘,而是先都写入缓存,最后一次性写入磁盘。
缺点:最多写入65536行数据,超出则抛出异常。
大文件写入07版(XSSF):
优点:可以写入较大数据量,如10万。
缺点:写入数据非常慢,非常耗内存,当数据量过大也会内存溢出,如100万。
正因为07版XSSF有这些缺点所以有了plus版SXSSF
SXSSF:可以写入非常大数据量百万级,写入速度快,占用内存少。过程中会产生临时文件,需要清理。(如广泛使用,仍需大量内存)。
测试写入速度
@Testpublic void testSpeed() throws Exception {long beginTime = System.currentTimeMillis();//创建一个工作簿Workbook workbook = new HSSFWorkbook();//创建一个工作表sheetSheet sheet = workbook.createSheet("03版写入速度测试");//写入数据for (int rowNum = 0; rowNum < 65536; rowNum++) {//循环创建行,注意03版最多写入65536行Row row = sheet.createRow(rowNum);for (int cellNum = 0; cellNum <= 6; cellNum++) {//循环创建单元格,这里每行5个Cell cell = row.createCell(cellNum);cell.setCellValue(cellNum);}}System.out.println("数据准备完成");//生成Excel文件(使用io流),注:文件后缀要与excel版本对应FileOutputStream fileOutputStream = new FileOutputStream(PATH + "03版excel测试写入速度.xls");//写入workbook.write(fileOutputStream);//文件写完后关闭流fileOutputStream.close();//清除临时文件,使用SXSSF时开启下面这句话//((SXSSFWorkbook)workbook).dispose();long endTime = System.currentTimeMillis();System.out.println("数据写入完成,耗时:" + (double) (endTime - beginTime) / 1000);//同理,测试XSSFWorkbook和SXSSFWorkbook时,只需修改创建的工作簿对象和生成文件后缀名}
其他记录文章
POI读取Excel
POI读取excel中公式
Java使用POI写(创建)Excel相关推荐
- POI API 创建Excel 文档
原文来自 http://www.blogjava.net/hezhi/articles/POI.html HSSF提供给用户使用的对象在org.apache.poi.hssf.usermodel包中, ...
- tiptop使用java的poi包实现EXCEL导入导出功能
4gl可以调用java的poi包实现EXCEL的导入导出,今天分享一个EXCEL导入的功能! 一:环境搭建 1:poi文件导入 首先下载POI文件(找不到的可以私信我),解压后上传到ERP的服务 ...
- Java使用poi加载Excel模板,将查询出来的数据封装到Excel中并进行指定某些列的合并操作
Java使用poi加载Excel模板,将查询出来的数据封装到Excel中并进行指定某些列的合并操作 最近一周项目中需要读取数据库中的记录将记录封装到给定的模板中,指定业务列需要进行合并:下面将它进行整 ...
- java的poi技术读取Excel[2003-2007,2010]
这篇blog主要是讲述java中poi读取excel,而excel的版本包括:2003-2007和2010两个版本, 即excel的后缀名为:xls和xlsx. 读取excel和MySQL相关: ja ...
- java使用poi读取存储excel表格,包括xls和xlsx格式
全栈工程师开发手册 (作者:栾鹏) java教程全解 java使用poi读取存储excel表格,包括xls和xlsx格式. 需要导入的包 poi-3.14.jar poi-ooxml-3.14.jar ...
- Java的poi导出的excel不能超过256列的解决办法
Java的poi导出的excel不能超过256列的解决办法 背景 1.现在的情况 2.解决办法 背景 导出时如果列超过256导出就会报错,现在进行解决 1.现在的情况 excel文件名以.xls结尾 ...
- Java使用poi/easyexcel操作excel
前言 在工作的开发过过程中,我们总会遇到将数据导出到excel的需求,和导入excel到数据库,下面会讲解当今比较流行的两个工具实现Java操作excel: Apache POI 阿里巴巴的easye ...
- 【狂神说Java】poi的操作excel
目录 一.狂神视频地址 二.基本思想 xls和xlsx的区别 三.Maven配置 四.相关代码 1.写操作 1.1Java操作xls文件 1.2Java操作xlsx文件 1.3写大量数据对比与优化 2 ...
- java通过POI快速读取excel大量数据的方式
1.在pom.xml中引入poi相关依赖 <dependency><groupId>cn.afterturn</groupId><artifactId> ...
- java 雷达图_Java 创建Excel雷达图
class="MsoNormal">本文介绍通过Java程序在Excel工作表中创建雷达图表的方法. 程序环境 Spire.Xls.jar 免费版本3.9.1 Jdk版本要求 ...
最新文章
- maven The method must override a superclass method
- 【CSS】一侧定宽,另一侧自适应的布局该如何去做
- 怎么学习正则表达式?(正则的使用心得)
- java判断对象已死_Java的JVM判断对象已死的基本算法分析
- npm包管理器小节一下
- 正则邮箱_正则表达式再进级
- Ubuntu下升级安装gcc-7.5.0教程
- 计算机ping使用的端口,ping 端口:Ping端口命令的使用方法介绍
- 微信小程序上线,后台接口失效问题
- WPS-设置列的下拉菜单
- 450v10 uf电容坏了,用470v50uf替代好吗?
- java pdf 加水印
- Windows驱动开发(三)一个WDF入门实例
- 庞加莱买面包的故事(二)
- 赛博僵尸道长 v1.2
- 小运营征战大市场,手游运营也需”千人千面” ——DT时代手游精细化运营解析
- 毛桃pe系统 linux,老毛桃U盘PE重装教程
- 18937 阿克曼(Ackmann)函数
- yuan sir generator desk appliacation
- 家庭云 海康威视 H90 硬盘数据恢复方法
热门文章
- 彻底清楚搞懂toRef和toRefs是什么,也许你知道toRef和toRefs,一直有点蒙蔽,一直没搞懂它,看完这篇文章你彻底清楚
- 深度强化学习系列(1): 深度强化学习概述
- 【Codeforces Round #560 (Div. 3)】 A B C D E F1 F2
- 3个5相乘列乘法算式_15个类型的速算巧算题目,打印出来给孩子练习一下
- python及格率公式_用Python编写成绩管理分析系统(故事升级版)
- 性能测试结果分析报告
- oracle union wher,sql – UNION with WHERE子句
- 迈过七年之痒 OpenStack渐入佳境
- MySQL高并发生成唯一订单号的方法
- Study-VTK:vtkWidget 分割/配准类之 放置种子点(Qt + vtkSeedWidget)