-
2021-04-28 14:33:02
//声明一个工作薄
HSSFWorkbook workbook =new HSSFWorkbook();
//创建sheet
HSSFSheet sheet =workbook.createSheet(“统计表”);
//设置根据列名,列宽自适应 ,columnIndex 列索引
sheet.setColumnWidth(columnIndex,“列名”.getBytes().length2256);
//创建style
HSSFCellStyle style = workbook.createCellStyle();
//设置单元格边框
style.setBorderTop(BorderStyle.THIN); style.setBorderBottom(BorderStyle.THIN); style.setBorderLeft(BorderStyle.THIN); style.setBorderRight(BorderStyle.THIN);
//设置单元格水平、垂直居中
style.setAlignment(HSSFCellStyle.ALIGN_CENTER); style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
//创建行
HSSFRow row =sheet.createRow(0);
//设置单元格合并,四个参数分别为:起始行、结束行、起始列、结束列
CellRangeAddress rangeAddress = new CellRangeAddress(0,1,0,0);
//添加到sheet中
sheet.addMergedRegion(rangeAddress);
//创建列,赋值、并添加样式
HSSFCell cell1 = row.createCell(0);
cell1.setCellStyle(style);
cell1.setCellValue(“序号”);更多相关内容 -
java导出excel自定义表头,架构师必备!
2021-07-21 17:29:28主要内容 本文是从大型... 完整版获取:狂戳这里免费领取~ 《Java高级面试》 [外链图片转存中…(img-XPuQ1yae-1626859754037)] 《Java高级架构知识》 [外链图片转存中…(img-F5nmtDFq-1626859754038)] 《算法知识》主要内容
本文是从大型互联网系统的应用角度探讨分布式缓存的。本文站在原理、框架、架构、案例等多个视角对分布式缓存进行了探讨。
互联网系统随着容量需求的陡增,许多看似简单的存储类场景都面临着巨大的容量问题和稳定性风险,而其中大部分问题都可以通过对缓存的合理使用来规避。读者从本文中将会获得应对这些问题的思路,也会对分布式缓存有一个体系化的认识。
本文内容共分为三个部分,16章的内容,全文按照从理论到实现,再到实践的思路撰写。
首先介绍分布式缓存的背景知识,对“分布式”和“缓存”这两个关键词进行了全面阐述,从而为后续章节的叙述打下基础;
接着介绍业界主流的缓存,关注其原理与实现,囊括了Ehcache、Memcached、Redis、 Tair、 EVCache、Aerospike等六个缓存或类缓存系统;
最后讨论缓存在互联网系统中的实践,从广告、社交、新闻、电商、营销等五类典型的互联网应用入手,分析它们面临的性能稳定性问题以及如何利用分布式缓存解决这些问题。
第1章,缓存为王
在商业的世界中,常说的一句话是“现金为王”。在互联网、移动互联网乃至整个软件技术世界中,与之相近的一个说法就是“缓存为王”。什么是缓存呢?
第2章,分布式系统理论
分布式理论体系宏大精深,可以通过一大厚本专著来专门阐述,本文难以尽述之,本章拟从分布式系统概论、分布式系统概念、分布式系统理论,比如Paxos、分布式系统设计策略、心跳检测、分布式系统设计实践、全局ID生成等几个方面略勾画之。本章可作为后续章节阅读的基础,比如Master-Slave节点切换需要心跳检测、Redis 多节点选主也有相应的理论体系( Paxos或者Raft协议等)支撑,一致性哈希、路由表甚至负载均衡也是常见的分布式服务调用策略。
第3章,动手写缓存
目前市面上已经有很多开源的缓存框架,比如Redis、Memcached、 Ehcache 等,那为什么还要自己动手写缓存?本章将带领大家从0到1写一个简单的缓存框架,目的是让大家对缓存的类型、缓存的标准、缓存的实现及原理有一个系统的了解,做到知其然,知其所以然。
第4章,Ehcache与Guava Cache
Ehcache是一个用Java实现的使用简单、高速、线程安全的缓存管理类库,其提供了用内存、磁盘文件存储,以及分布式存储等多种灵活的管理方案。同时Ehcache作为开放源代码项目,采用限制比较宽松的ApacheLicenseV2.0作为授权方式,被广泛地用于Hibernate、Spring、Cocoon 等其他开源系统。Ehcache 从Hibernate 发展而来,逐渐涵盖了全部功能,是目前发展势头很好的-一个项目。Ehcache具有快速、简单、低消耗、依赖性小、扩展性强、支持对象或序列化缓存、支持缓存或元素的失效、提供LRU/LFU/FIFO缓存策略、支持内存缓存及磁盘缓存、采用分布式缓存机制等特点。
为了方便大家了解最新版本的Ehcache, 4.2.1 、4.2.2、 4.2.3 节中采用最新的Ehcache 3.0的特性进行介绍,4.2.4 节采用Ehcache 2.10.2版本与Spring 相结合来做案例介绍,包括后面的源码分析也将采用这个版本。
GuavaCache和Ehcache一样也是本地缓存,但在细分领域也有不同的应用场景,4.5节中将做详细介绍。
第5章,从Memcached开始了解集中式缓存
许多Web应用程序都将数据保存到RDB中,但随着数据量的增大,RDB的负担加重,数据库响应恶化,性能严重下降。Memcached是高性能的分布式内存缓存服务器,一般用来缓存访问的热点数据,减轻数据库的负担。
第6章,Memcached周边技术
对于Memcached等常用的缓存组件,本身大多是以单机方式运行的,服务能力受到单个主机处理器、内存等资源的限制。在大型的互联网应用中,往往需要更大的数据访问量以及缓存更多的数据,这些需求都大大超出了单机缓存系统所能提供的能力范围。
解决高流量访问的方案有很多,直接的方式是提高单机缓存的性能和资源利用率,例如Twemcache,更多的是将多个缓存实例以集群的方式提供服务,利用资源优势提供更好的性能和更大的存储容量,以满足应用对缓存能力的需求。
如果说缓存是以空间换时间的艺术,那么,缓存的集群服务就是该艺术在另一种维度上的呈现,同时,还提供了高可用性。在设计缓存的集群方案时,一般考虑以下几点:
- 可扩展性:集群可以方便通过扩充机器来提供更高的缓存能力。
- 高可用性:集群能够对应用提供可靠的服务,实现缓存服务的高可用性。
- 可维护性:集群能够方便监控和运维。
本章主要介绍基于Memcached的周边技术,重点对Memcached的定制版Twemcache,对开源的缓存集群方案Twemproxy,以及Mcrouter等进行解析,以便充分地利用分布式缓存服务。
第7章,Redis探秘
Redis ( REmote DIctionary Server)是一个key-value存储系统,由Salvatore Sanfilippo开发,使用ANSIC语言编写,遵守BSD协议。
Redis运行于独立的进程,通过网络协议和应用交互,将数据保存在内存中,并提供多种手段持久化内存数据。Redis具备跨服务器的水平拆分、复制的分布式特性。Redis不同于Memcached将value视作黑盒,Redis 的value本身具有结构化的特点,对于value提供了丰富的操作。基于内存存储的特点使得Redis 与传统的关系型数据库相比,拥有极高的吞吐量和响应性能。
第8章,分布式Redis
Redis作为数据存储系统,无论数据存储在内存中还是持久化到本地,作为单实例节点,在实际应用中总会面临如下挑战:
- 数据量伸缩:单实例Redis存储的key-value对的数量受限于单机的内存和磁盘容量。长期运行的生产环境中,随着数据不断地加入,存储容量会达到瓶颈。虽然Redis提供了key的过期机制,在作为缓存使用时通过海汰过期的数据可以达到控制容量的目的。但当Redis作为NoSQL数据库时,业务数据长期有效使得淘汰机制不再适用。
- 访问量伸缩:单实例Redis单线程地运行,吞吐量受限于单次请求处理的平均时耗。当业务数据集面临超过单实例处理能力的高吞吐量需求时,如何提升处理能力成为难点。
- 单点故障。Redis持久化机制一定程度上缓解了宕机/重启带来的业务数据丢失问题,但当单实例所在的物理节点发生不可恢复故障时,如何保证业务数据不丢以及如何在故障期间迅速地恢复对应业务数据的可用性也成为单点结构的挑战。
上述问题对于数据存储系统而言是通用的,基于分布式的解决方案如下:
- 水平拆分:分布式环境下,节点分为不同的分组,每个分组处理业务数据的一个子集,分组之间的数据无交集。数据无交集的特性使得水平拆分解决了数据量瓶颈,随着分组的增加,单个分组承载的数据子集更小,即通过增加分组来伸缩数据量。同时水平拆分也也解决了访问量瓶颈,业务数据全集的请求被分摊到了不同分组随着分组数的增加,数据全集的总吞吐量也增加,访问量的伸缩性得以实现。
- 主备复制:同一份业务数据存在多个副本,对数据的每次访问根据一定规则分发到某一个或多个副本上执行。通过W+R>N的读写配置可以做到读取数据内容的实时性。随着N的增加,当读写访问量差不多时,业务的吞吐量相比单实例会提升到過近2倍。但实际中,读的访问量常常远高于写的量,W=N, R=1,吞度量会随着读写比例的增加而提升。
- 故障转移:当业务数据所在的节点故障时,这部分业务数据转移到其他节点上进行,使得故障节点在恢复期间,对应的业务数据仍然可用。显然,为了支撑故障转移,业务数据需要保持多个副本,位于不同的节点上。
本章的编写目的就是,帮助读者了解如何通过Redis实现上述解决方案,本章包含的主要知识如下:
- sharding: 水平拆分的支持。
- replication: 作为读写分离和故障转移的基础。
- fail-deteet: 和replication配合,支撑故障转移。
- cluster(all-in-one): 完整的分布式解决方案。
第9章,Tair探秘
Tair ( TaoBao Pair的意思,Pair 即Key-Value数据对)是淘宝开发的一个优秀的分布式高可用的key/value 存储引擊。采用服务端自动负载均衡的方式,使客户端逻辑简单。
Tair分为持久化和非持久化两种使用方式。非持久化的Tair可以看成是一个分布式缓存。
持久化的Tair将数据存放于磁盘中。在最新版本的Tair项目中实现了以下4种存储引擎。
- 非持久化: mdb
- 持久化: fdb、kdb和ldb
这4种存储引擎分别基于四种开源的key/value数据库: Memcached、 Firebird、 KyotoCabinet和LevelDB。其中Firebird 是关系型存储数据库,Memcached. Kyoto Cabinet和LevelDB是NoSQL数据库。
第10章,EVCache探秘
云服务不仅为软件系统的开发和部署带来了更多的敏捷性,而且提供了更多创新的可能性。当分布式缓存技术遇到云服务会是怎样的情形呢? EVCache 就是这样的一种技术。
EVCache是一个开源、快速的分布式缓存,是基于Memcached的内存存储和Spymem-cached客户端实现的解决方案,主要用在亚马逊弹性计算云服务( AWS EC2 )的基础设施上,为云计算做了优化,能够顺畅而高效地提供数据层服务。
第11章,Aerospike原理及广告业务应用
Aerospike是一个分布式的,可扩展的键-值存储的NoSQL数据库。支持灵活的数据模式,并且支持满足ACID特性的事务。其主要的优势是采用混合存储架构,数据索引信息存储在RAM (随机存取存储器)中,而数据本身可以存储在SSD (固态硬盘)或HDD(机械硬盘)上。并且针对采用多核处理器和多处理器机器的现代硬件进行了优化,通过直接硬盘访问(绕过文件系统),可以带来难以置信的性能。主要应用于百G,数T等大规模并且并发在数万以上,对读写性能要求较高的场景,目前主要集中应用在互联网广告行业,如:
MediaV, InMobi, eXelate, BuleKai, 时趣互动等。
Aerospike Server能够根据需求安装到多个数据中心多个集群的多个节点上。方便扩展,只需要将节点添加到集群即可,Aerospike群集将自动在所有可用的服务器之间重新平衡数据负载,无须分片,无须人工干预。降低运维成本,具有业界最低的TCO (总体拥有成本)。
本章将会介绍Aerospike 的架构原理,集群部署,基本用法以及在广告行业中的具体应用;本章基于Aerospike的3.8.4版本(主要针对具体的部署操作部分,而对于原理,架构的描述则不局限于此)。接”下来开始介绍Aerospike整体的架构实现和原理。
第12章,社交场景架构进化:从数据库到缓存
本章以一个典型的社交类应用为例,基于一个简化的领域模型和业务场景,叙述该应用在面临不断增加的业务吞吐量时,传统的基于数据库的方案将面临的性能风险,随后阐述如何利用缓存技术对这些典型的性能问题进行解决。
本章分为5个小节,首先引入示例应用的领域模型和业务场景,随后分别针对其relation.post,timeline三个模型的相关场景分别叙述基于数据库的解决方案和问题,以及在此之上引入的缓存方案。最后一小节讨论对这个示例应用在机房本身面临瓶颈时,如何应用缓存辅助其多机房部署。
第13章,缓存在社交网络Feed系统中的架构实践
在社交网络发展如火如荼的今天,人们越来越倾向于用新媒介来展现自我和沟通交互。
以新浪微博为例,作为移动社交时代的重量级社交分享平台,2017年初日活跃用户1.6亿,月活跃用户近3.3亿,每天新增数亿条数据,总数据量达千亿级,核心单个业务的后端数据访问QPS高达百万级。
在社交网络系统运行过程中,面对庞大用户群的海量访问,良好架构且不断改进的缓存体系具有非常重要的支撑作用。本章将以新浪微博Feed系统架构的发展历程作为背景,基于一个典型的社交网络Feed系统架构,介绍Feed系统的缓存模型、缓存体系架构,以及缓存体系如何伴随业务规模来扩展及演进。
第14章,典型电商应用与缓存
分布式系统的CAP理论首先把分布式系统中的三个特性进行了如下归纳:
- 一致性©:在分布式系统中的所有数据备份,在同- -时刻是否是同样的值(等同于所有节点访问同一份最新的数据副本)。
- 可用性(A):在集群中–部分节点故障后,集群整体是否还能响应客户端的读写请求(对数据更新具备高可用性)。
- 分区容忍性§: 以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性, 就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择。
电商领域是典型的要在CAP做出权衡的业务领域。从参与者来区分有用户、商户、平台运营人员;从基础领域模型来看有商品、订单、库存、库房、营销、物流、干系人等。
用户的诉求是什么?买到好东西(正品,价格最好还便宜),支付方便,安全快捷。
商户的诉求是什么?业务模式上解决快速回款;技术上解决对账清晰,数据准确。
平台的诉求是什么?越来越多的用户,越来越多的品类,越来越好的商家。
基于以上三方的诉求,那么电商平台会面临及时响应性的用户需求(我购买成功,还是失败);数据准确性需求(我的钱有没有多扣);平台海量请求的诉求(营销活动、秒杀、大促等);高可用的诉求(每-秒都是钱,每一笔成交背后都是收入,如果平台不可用,对应可以直接换算成资金损失)。
第15章,同程凤凰缓存系统基于Redis的设计与实践
本章和大家分享一下同程凤凰缓存系统在基于Redis方面的设计与实践。在本章中除了会列举我们工作过程中遇到各种问题和误区外,还会给出我们相应的解决办法,希望能够抛砖引玉为大家带来一定的启示。
第16章,新的旅程
在介绍了分布式理论体系、自己动手写缓存、若干开源缓存框架等内容之后,如同一段美好的旅程,本书也需要-个总结性的停顿。谈及缓存我们会情不自禁地想起淘汰算法、过期处理等,但开发设计中如何更好地引入缓存技术,完整的缓存知识体系又是怎样的,笔者尝试梳理一下,算是为本文做一个收尾。
其中关于缓存究竞涉及哪些知识点,可以通过图16-1了解其骨架,包括分布式概念、缓存分类、缓存各种知识点Tips等,我们在本章后两节也会做进一步的阐述。
最后
分享一些资料给大家,我觉得这些都是很有用的东西,大家也可以跟着来学习,查漏补缺。
《Java高级面试》
《Java高级架构知识》
《算法知识》
习,查漏补缺。
《Java高级面试》
[外链图片转存中…(img-XPuQ1yae-1626859754037)]
《Java高级架构知识》
[外链图片转存中…(img-F5nmtDFq-1626859754038)]
《算法知识》
-
注解反射导出Excel自定义中文表头
2018-12-01 16:31:54注解反射导出Excel自定义中文表头,数据库查出数据,亲测可用 -
Excel导出工具类,自定义表头,2层标题,大数据量
2016-05-10 09:51:26POI技术实现Excel导出,支持自定义表头,2层标题,大数据量 -
设置Java导出Excel表头
2021-02-28 07:43:381、问题背景有一个学生表,需要导出到Excel,有学号、姓名、性别和年龄四个字段2、实现源码/**** @Project:Report* @Title:ExcelExport.java* @Package:com.you.excel* @Description:* @Author:YouHaiDong* @Date:...1、问题背景
有一个学生表,需要导出到Excel,有学号、姓名、性别和年龄四个字段
2、实现源码
/**
*
* @Project:Report
* @Title:ExcelExport.java
* @Package:com.you.excel
* @Description:
* @Author:YouHaiDong
* @Date:2015年11月4日 下午2:23:49
* @Version:
*/
package com.you.excel;
import java.io.FileOutputStream;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
/**
*
请用一句话概括功能
* @ClassName:ExcelExport
* @Description:
* @Author:YouHaiDong
* @Date:2015年11月4日 下午2:23:49
*
*/
public class ExcelExport
{
/**
*
* @Title:ExcelExport
* @Description:
* @param args
* @Date:2015年11月4日 下午2:23:49
* @return: void
* @throws Exception
*/
@SuppressWarnings("resource")
public static void main(String[] args) throws Exception
{
// 创建一个Workbook
HSSFWorkbook workbook = new HSSFWorkbook();
// 创建一个sheet页
HSSFSheet sheet = workbook.createSheet("学生表");
// 创建第一行
HSSFRow row = sheet.createRow(0);
// 创建单元格
HSSFCell cell1 = row.createCell(0);
HSSFCell cell2 = row.createCell(1);
HSSFCell cell3 = row.createCell(2);
HSSFCell cell4 = row.createCell(2);
// 设置表头
cell1.setCellValue("学号");
cell2.setCellValue("姓名");
cell3.setCellValue("性别");
cell4.setCellValue("年龄");
FileOutputStream stream = new FileOutputStream("d:/student.xls");
workbook.write(stream);
}
}
3、实现结果
版权声明:本文为博主原创文章,未经博主允许不得转载。
-
Java 导出Excel 自定义模板
2022-05-28 11:27:24@Override public void exportCreatedN1ShippingPlan(List<... // 查询要导出的数据 List<N1CreateShippingPlanOutputDto> planList = repository.createN1ShippingPlan(list); if (!CollectionUtils.isEmJAVA POI导出EXCEL设置自定义样式(线框加粗,合并指定行,合计求和,冻结行):https://blog.csdn.net/Mou_O/article/details/123133202
@Override public void exportCreatedN1ShippingPlan(List<N1CreateSHippingPlanInputDto> list) { // 查询要导出的数据 List<N1CreateShippingPlanOutputDto> planList = repository.createN1ShippingPlan(list); if (!CollectionUtils.isEmpty(planList)) { HSSFWorkbook workbook = new HSSFWorkbook(); // 创建一个excel // excel生成过程: excel-->sheet-->row-->cell HSSFSheet sheet = workbook.createSheet("sheet1"); // 列宽 (本次导出共11列) for (int i = 0; i < 11; i++) { sheet.setColumnWidth(i, 20 * 255); } // 字体样式 Font fontStyle = workbook.createFont(); fontStyle.setBold(true); // 加粗 fontStyle.setFontName("黑体"); // 字体 fontStyle.setFontHeightInPoints((short) 11); // 大小 // 单元格样式 HSSFCellStyle cellStyle = workbook.createCellStyle(); // 将字体样式添加到单元格样式中 cellStyle.setFont(fontStyle); // 边框,居中 cellStyle.setAlignment(HorizontalAlignment.CENTER); cellStyle.setBorderBottom(BorderStyle.THIN); cellStyle.setBorderLeft(BorderStyle.THIN); cellStyle.setBorderRight(BorderStyle.THIN); cellStyle.setBorderTop(BorderStyle.THIN); // 创建第一行并填充值 HSSFRow row1 = sheet.createRow(0); HSSFCell cellB1 = row1.createCell(0); cellB1.setCellValue("N-1(W-3)船运计划明细"); cellB1.setCellStyle(cellStyle); // 合并首行单元格 // 起始行, 终止行, 起始列, 终止列 CellRangeAddress cra = new CellRangeAddress(0, 0, 0, 10); sheet.addMergedRegion(cra); sheet.setDefaultRowHeight((short) 300); // 设置第一行高度 sheet.getRow(0).setHeightInPoints(30); // 合并单元格后设置该行样式 sheet.getRow(0).getCell(0).setCellStyle(cellStyle); // 创建第二行添加表头内容 HSSFRow row2 = sheet.createRow(1); HSSFCell cellB2_1 = row2.createCell(0); cellB2_1.setCellValue("车型"); cellB2_1.setCellStyle(cellStyle); HSSFCell cellB2_2 = row2.createCell(1); cellB2_2.setCellValue("装船PC NO."); cellB2_2.setCellStyle(cellStyle); HSSFCell cellB2_3 = row2.createCell(2); cellB2_3.setCellValue("装船D/I NO."); cellB2_3.setCellStyle(cellStyle); HSSFCell cellB2_4 = row2.createCell(3); cellB2_4.setCellValue("装船MTOC"); cellB2_4.setCellStyle(cellStyle); HSSFCell cellB2_5 = row2.createCell(4); cellB2_5.setCellValue("装船MTOC台数"); cellB2_5.setCellStyle(cellStyle); HSSFCell cellB2_6 = row2.createCell(5); cellB2_6.setCellValue("生产月"); cellB2_6.setCellStyle(cellStyle); HSSFCell cellB2_7 = row2.createCell(6); cellB2_7.setCellValue("装货港"); cellB2_7.setCellStyle(cellStyle); HSSFCell cellB2_8 = row2.createCell(7); cellB2_8.setCellValue("海船公司"); cellB2_8.setCellStyle(cellStyle); HSSFCell cellB2_9 = row2.createCell(8); cellB2_9.setCellValue("海船名"); cellB2_9.setCellStyle(cellStyle); HSSFCell cellB2_10 = row2.createCell(9); cellB2_10.setCellValue("海船ETD"); cellB2_10.setCellStyle(cellStyle); HSSFCell cellB2_11 = row2.createCell(10); cellB2_11.setCellValue("卸货港"); cellB2_11.setCellStyle(cellStyle); // 将正文数据填充到excel具体行 for (int i = 0; i < planList.size(); i++) { N1CreateShippingPlanOutputDto dto = planList.get(i); // 创建新的一行 HSSFRow row = sheet.createRow(i + 2); // 创建该行单元格 // 第1列 HSSFCell cell0 = row.createCell(0); cell0.setCellValue(dto.getCarTypeCode()); cell0.setCellStyle(cellStyle); // 第2列 HSSFCell cell1 = row.createCell(1); cell1.setCellValue(dto.getPcNo()); cell1.setCellStyle(cellStyle); // 第3列 HSSFCell cellB2 = row.createCell(2); cellB2.setCellValue(dto.getDiNo()); cellB2.setCellStyle(cellStyle); HSSFCell cell3 = row.createCell(3); cell3.setCellValue(dto.getMtoc()); cell3.setCellStyle(cellStyle); HSSFCell cell4 = row.createCell(4); cell4.setCellValue(dto.getMtocNumber()); cell4.setCellStyle(cellStyle); HSSFCell cell5 = row.createCell(5); cell5.setCellValue(dto.getCreateMonth()); cell5.setCellStyle(cellStyle); HSSFCell cell6 = row.createCell(6); cell6.setCellValue(dto.getLoadingPort()); cell6.setCellStyle(cellStyle); HSSFCell cellB7 = row.createCell(7); cellB7.setCellValue(dto.getVesselCompanyName()); cellB7.setCellStyle(cellStyle); HSSFCell cell8 = row.createCell(8); cell8.setCellValue(dto.getVesselName()); cell8.setCellStyle(cellStyle); HSSFCell cell9 = row.createCell(9); cell9.setCellValue(dto.getEtd()); cell9.setCellStyle(cellStyle); HSSFCell cell10 = row.createCell(10); cell10.setCellValue(dto.getDischargePort()); cell10.setCellStyle(cellStyle); } // 输出到本地 String excelName = "/N-1(W-3)船运计划明细.xls"; FileOutputStream out = null; try { out = new FileOutputStream(excelName); workbook.write(out); out.flush(); out.close(); } catch (Exception e) { e.printStackTrace(); } finally { if (out != null) try { out.close(); } catch (IOException e) { e.printStackTrace(); } out = null; } } }
导出结果如下:
-
Java生成Excel自定义导出合并(多级表头)
2022-04-28 18:22:18Java 关于 Excel导出 -
EasyExcel自定义表头导出表格(java)
2021-12-27 15:37:38} Controller @ApiOperation(value = "导出") @GetMapping("excel") public void exportExcel(kqLeaseJieOutParam kqLeaseJieOutParam1,HttpServletResponse response){ kqleaseListcountService.... -
easyExcel 导出 excel 自定义表头
2020-11-04 14:43:09easyExcel 导出 excel 自定义表头 效果图: 代码: @RequestMapping(value = "export",method = RequestMethod.GET) public void export(HttpServletResponse response,Integer yds,Integer sds,String type) throws... -
java 导出Excel表头
2021-06-18 13:45:421、表头数据从前端传入 //导出模板 export function exportExcel() { let lists = [ "姓名", "身份证", "性别", "年龄" ] let param = { title:"数据导入模板", colNames:lists } return request({ ... -
JAVA 使用poi导出并自定义表头,在浏览器下载excel表格
2021-08-02 14:14:10JAVA导出Excel表格,并自定义表头 1,MAVEN依赖 <!-- springboot通过poi导出excel --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId>... -
Java实现POI导出excel复杂表头
2022-02-16 14:51:28主方法加数据和excel表头布局 /** * 导出 * @param request * @param response * @throws IOException */ @RequestMapping("/exportMultipleItemStatisticsList.do") public void export(HttpServletRequest... -
Java导出自定义Excel表格
2021-10-19 13:52:06导入依赖 org.apache.poi poi-ooxml 3.17 controller 注意这里请求方式要使用GET,否则浏览器打开链接时不会下载Excel文件 @ApiOperation("导出**太力分货表") @RequestMapping(value = "exportTlDeatail", method ... -
java导出excel时出现文件名乱码解决方法
2021-03-06 01:58:24java解决导出Excel时文件名乱码的方法示例:(推荐:java视频教程)String agent = request.getHeader("USER-AGENT").toLowerCase();response.setContentType("application/vnd.ms-excel");String fileName = "文件名... -
使用EasyExcel做自定义表头的excel文件导出
2022-03-20 16:07:14项目中需要做表格导出功能,且表头为复杂的动态表头,决定采用EasyExcel来进行操作 demo使用到的依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</... -
Java实现Excel多表头动态数据导出
2020-07-23 13:05:12好久没时间写帖子了,由于工作需要,写一个基于JAVA实现的Excel多表头动态导出功能,首先可能这个叫法比较啰嗦,下面我们先看看什么是Excel多表头动态导出(效果图): 它包含两部分:1、是表头,就像大家看到的... -
注解反射导出Excel自定义中文表头,数据库查出数据
2018-12-01 16:32:54import java.lang.annotation.*; /** * @author jly Exce注解 * @date 2018-11-30 */ @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.FIELD}) @Documented public @interface ExceDataName { ... -
java excel复杂表头导出
2021-03-10 10:43:10有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学... -
java使用poi自定义excel标题头并导出
2022-02-08 16:57:071、创建HSSFWorkbook对象(也就是excel文档对象) 2、通过HSSFWorkbook对象创建sheet对象(也就是excel中的sheet) 3、通过sheet对象创建HSSFROW对象(row行对象) 4、通过HSSFROW对象创建列cell并set值(列名) ... -
Java POI Excel导出自定义模板
2022-05-12 17:01:43一、需求 有excel需要导出模板如下。...利用java poi,自定义编写每一个单元格(业务方面省略) 依赖包: <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</art -
使用EasyExcel实现自定义表头导出
2021-10-14 16:04:59使用EasyExcel实现自定义表头导出 项目需求是将前端传来的table表格中数据导出excel,之前的那种如果表头固定的话使用导出很方便,但是这个表头不一定,所以需要进行处理 封装好的那种使用注解的我就不展示了,只围绕... -
基于easypoi的自定义excel表头导出
2018-12-20 11:06:15easypoi实现自定义模板导出excel 开发指南: https://opensource.afterturn.cn/doc/easypoi.html 假设要实现这样一个表单导出 第一步:项目中引入Maven依赖 <groupId>cn.afterturn</groupId> ... -
java导出excel,excel表头映射到javaBean属性名称等
2020-07-10 13:53:11 /** * 导出excel * @param excelDataList:需要导出的数据 List * @param clazz 对应excelDataList具体类型的clazz(导出excel表头使用javaBean属性名) * @param response * @throws Exception */ public void ... -
<dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.2.7</version> </dependency>
-
java导出功能(多级表头,复杂表头)
2022-07-25 14:43:30多级表头,复杂表头的导出功能都可以仿照这个例子去编写提示以下是本篇文章正文内容,下面案例可供参考 -
Java实现excel动态表头及动态sheet
2022-06-10 17:23:54Java 动态表头 多sheet -
java使用poi自定义excel标题头并导出(springmvc+poi)(转载)
2021-06-29 17:05:07创建excel大致分这几步:1、创建HSSFWorkbook对象(也就是excel文档对象)2、通过HSSFWorkbook对象创建sheet对象(也就是excel中的sheet)3、通过sheet对象创建HSSFROW对象(row行对象) 4、通过HSSFROW对 -
Java EasyExcel 带表头导出
2022-04-20 11:00:57maven <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId>...import java.math.BigDecimal; import java.util.Date; import com.a