java POI操作execel导出
最近项目当中在使用POI将数据填充置row和cell等行和列,最后导出成execel到前端。一开始使用的方式是一个个去赋值,但是这样做有点麻烦,代码也有点长,不太好维护。于是换了种方案,先导入固定模板,然后将要添加数据的那部分动态添加过去并且进行填充,这样做的好处有利于后期的维护和可扩展,模板可以随时换。在这过程中也学到了不少POI方面的知识。下面总结一下.
HSSFWorkbook与xssfworkbook的区别:前者只支持xls(2003)的表格,后者支持xlsx(2007)的表格
我这里主要介绍HSSFWorkbook,
以下是HSSFWorkBook常用代码
Workbook workBook=new HSSFWorkbook();//工作簿 定义一个新工作簿 Sheet sheet = workBook.createSheet("第一个sheet页"); //工作表 表创建一个sheet工作表 Row row = sheet.createRow(0); //行 下标从0开始,0代表创建第一行,1代表创建第二行 Cell cell = row.createCell(0); //单元格 创建一个单元格,0代表第一个,1代表第二个 Cell cell = row.createCell(1);//在第一行中创建第二个单元格,也就是第一行,第二列 cell.setCellValue(1); //给单元格设置值,当然设置数字,string都行,8大基本数据类型设置都可以,new Data日期也可以 ----------合并单元格----------------------------------------------------------------------- Cell cell=row.createCell(1); cell.setCellValue("单元格合并测试"); sheet.addMergedRegion(new CellRangeAddress( 1, // 起始行 2, // 结束行 1, // 其实列 2 // 结束列 )); ----------合并单元格--------------------------------------------------------------- <!-- poi execel要引入的包 --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.9</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.17</version> </dependency> <!-- poi execel要引入的包 -->
由于输出到execel的时候,如果一下子导出到execel当中的话,有的时候很难看清问题,可以复制一个row,然后输出一次流,再进行查看。
FileOutputStream fileOut1 = null; try { fileOut1 = new FileOutputStream(saveFileName); workbook.write(fileOut1); fileOut1.close(); fileOut1.flush(); }catch (Exception e){ } System.out.println("查看表格");
遇到的一个坑.模板导入后写入数据一切OK,但是导出的xls文件有几十兆,打开以后直接保存一下,文件又变成几十KB,但是这个非常影响性能,经过调试发现,我的sheet1里面row复制完继续在sheet1里操作,我理解的时候可能被当做sheet间的复制了,所以我createSheet了以后,把sheet1的内容复制到新建的sheet后就没这问题了。
相关文章推荐:索引链接
自己写的POIUtil,主要解决从不同的HSSFWorkbook复制sheet以及根据单元格插入图片等
Excel动态合并行、合并列
Java Web利用POI导出Excel简单例子
POI 方式导出文件,浏览器(适用Edge浏览器)文件名乱码解决
POI使用详解
java 实现 excel sheet 拷贝到另一个Excel文件中 poi
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
C#语法-虚方法详解 Virtual 虚函数
虚方法 / Virtual 本文提供全流程,中文翻译。 Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 —— 高分辨率用户请根据需求调整网页缩放比例) Chinar —— 心分享、心创新!助力快速理解 虚方法 的用法为新手节省宝贵的时间,避免采坑! 1 Virtual Method —— 虚方法 2 Parent Class:Enemy —— 父类:总敌人类 3 Subclass:Boss ——子类:首领 4 Subclass:Enemy1、Enemy2 ——子类:敌人1、敌人2 5 Test Main ——主入口:测试 支持 May Be —— 搞开发,总有一天要做的事! 全文高清图片,点击即可放大观看 (很多人竟然不知道) 1 Virtual Method —— 虚方法 这里我们来详细说说: 虚方法/虚函数 通过简单的例子,来说明虚方法是个什么东西 虚方法,可以理解为 “一个不完整”/“可以扩展” 的方法 Virtual (虚)与 Override (重写) 是同时出现的 在子类中,重写 Override (重写)虚方法时,父类中的函数才会被重写 在子类中,重写...
- 下一篇
Django 配置多数据库踩的坑,深夜填坑。不管你怎么使用makemigrations和migrate都是No changes detect...
有时候在一个项目中需要用到多个数据库,django做了很好的支持。下面我来讲一下我的项目中使用的多数据库配置。 首先是项目setting.py DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), }, 'other': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'xxxx', #数据库名字 'USER': 'xxxx', #用户名,数据库的拥有者 'PASSWORD':'xxxx',#登录密码 'HOST':xxxx',#主机地址本地可配置localhost或127.0.0.1。前提是安装postgresql的时候配置pg_hba.conf要配置好。可查看这里。 'PORT':'5432',#可以使用默认端口号 } } # 多数据库配置 #就是class的相对路径。项目名/文件夹/db_router.py,db_router.py定义...
相关文章
文章评论
共有0条评论来说两句吧...