Java导出Excel多列纵向合并的实现

关于导出Excel的文章写的比较多了,今天来分享一款单元格纵向(常见的表格合并以纵向为多)合并效果的实现。 实现优点 代码简单,调用方便; 支持Jxls模板导出Excel的二次单元格合并(模板导出表示数据量不至于太大); 支持Poi内存导出Excel的批量合并(分批次的进行单元格合并); 支持标题占用多行的情况; 合并前提 所有需要合并列的数据需要提前拍好顺序; 特别注意 在大数据量导出时,数据往往需要以分页的实现进行数据导出,此时的分页不应该是传统意义上的分页,而是以一个最大维度的待合并列作为一组数据为前提的分页,保证多个分页中不会出现单元格合并串行的情况(比如读取的第二页的数据需要还需要与第一页末尾处的数据进行合并等),所以我建议的方式可以是先将待合并区域最大维度去重复然后每次循环读取该维度下的内容进行单元格合并,即上文说的Poi创建Row的方式,处理合并区域也只会在当前的数据范围内进...

文章分类:经验分享 技术知识

Jdbc调用oracle存储过程的封装

基本描述 现在有一半的逻辑都是在存储过程中写的,从第一次使用jdbc去调用存储过程时,我就觉得传统的jdbc调用存储过程太“复杂”了,也可以说是繁琐了,复杂的不在于那些调用的代码,而是调用过程中代码里面往往都是由不确定参数个数(不确定输入参数个数、输出参数个数)、输出参数类型、使用索引的形式设置或获取参数引起的太不简便,常常都是一写一大片,别人拷贝过去也是越发感觉太乱,就如同使用传统的jdbc查询数据*作ResultSet对象取值一样,直接这么用太不科学。所以就有了本篇文章,代码封装最大的意义我认为是最大程度上简化调用,先来看一下传统的jdbc调用存储过程是怎样的,并且分析一下如果简化一下封装可能会有哪些问题要解决?调用代码参考如下: 通过上面的代码我们可以看出如果是其它存储过程在调用时同样会存在下列几个问题: 1、调用时sql的?传入参数个数不确定; 2、存储过程的输入和输出参数个数均不...

文章分类:经验分享 技术知识

使用Jxls1.0导出Excel文件

很早很早就想写这么一篇文章了,但是觉得太简单了,就一直没写,直到昨天一个紧急的功能调整用到了此功能中的某项,由于时间太长记不大清楚了,随补上。在实现一些小型数据报表的时候,jxls是一个非常方便的实现方案,如果你还不了解,那正好就跟着我来熟悉一下吧。有人说我直接就用POI就可以实现,实际上jxls就是在poi的基础之上做的封装,它采用Excel模板的方式实现,配合el表达式来处理逻辑,也就是说我们的报表实现是基于事先创建一个最终效果的模板文件,在模板的基础上按照el规范去填充数据,最终显示效果。 组件优势 基本模板实现,Excel的报表易于维护 如果想修改某个单元格的显示样式,比如文本颜色、背景颜色、文本各种显示位置、边框、字体大小、千分位显示、百分百显示等等,都可以只需要修改模板,而不需要调整后台代码,也就省去了升级部署的一些问题。 API调用简单,表达式规范学习成本较低 生成报表时的A...

文章分类:经验分享 技术知识

Jxls2

MyBatis在普通Java中的应用

接着上一篇的quartz来说,背景都一样,涉及到dao层模块,最先是把以前封装的apache-dbutils组件拿过来,后来越来越觉得在代码里写一堆sql日后肯定会很蛋疼的,在能力范围内将代码写到最好,我理解的最好是可维护性最佳,毕竟niubility的人写出来的代码渣渣水平都是能改的,而渣渣写出来的代码反而niubility的人都改不了的,不废话了。 强烈建议按着这里过一遍http://www.mybatis.org/mybatis-3/zh/index.html,基本上你就都了解了,MyBatis的介绍说SqlSessionFactory对象只能适于一个环境,换句话说,如果你想适用于两个数据库,那么需要创建两个SqlSessionFactory实例,每个数据库对应一个;如果是三个数据库则需要三个实例,以此类推。 这里有一个概念需要说明一下,普通Java程序的意义这里解释的有些不科学,其...

文章分类:经验分享 技术知识

MyBatisPlus

quartz在普通Java中的使用

现在使用定时任务太普遍了,以前使用都是集成了spring环境,使用起来简单配置一下即可,功能强大,易于维护,这次工作中需要做一款小软件程序,并未集成spring,考虑使用jdk自带的Timer或者是使用quartz组件,由于现在常用的技术平台中也是使用到了quartz组件,也是基于包装后的使用(类似于普通Java类的方式调用),而非与spring集成,于是我就准备也使用Java普通类的方式进行使用。这里所说的Java普通类的含义是想表明非集成框架的方式,如果你也需要这种基于普通类的方式调用,那么这里你值得拥有,东西比较简单,直接上代码。 我们可在http://www.quartz-scheduler.org/;下载,下载来的文件包里面有一些例子,可以打开瞅上一眼,基本都是围绕创建调度工厂再创建一个调度任务,然后执行一个任务的逻辑处理,下文中我也是围绕只创建一个调度工厂的方式进行封装,参考如...

文章分类:经验分享 技术知识

quartz定时任务

小小的整理一下OCR的实现

OCR以前偶尔看到过,从来没想过项目中会用得到这东西,感觉很高大上的样子。最近有一个需求是从一个PDF文件中读取数据,而PDF文件的内容为图片(相当于文件中没有文本,无法用鼠标选中复制),并且给了一个OCR的商业实现方案“泰比”,下载了它的应用软件试用了一下确实很强大,但是它的SDK需要线上申请,由他们销售联系注册申请试用,最后一步给了一个英文的网页让去填写什么什么的(没仔细看,你懂得)。由于是分析实现可行性,所以也查阅着一些开源组件的实现方案,感觉合适的大致上有两种:一、使用tesseract-ocr组件;二:使用tess4j实现; 对于这种高大上东西的如何实现不是我考虑的,对于我这种小渣渣选手来说,找到一个最合适的组件来满足需要就已经是最好的了。所以我重点关注方案的选型、使用角度。 tesseract-ocr是什么大家可以自行寻找理论,如果想在程序中使用,需要安装tesseract-o...

文章分类:经验分享 技术知识

报表导出Word与Excel的实现

也算是做过不少报表导出了,最多的导出类型为Word与Excel两种。下面容我来分析一下这些导出的实现方式。 一、导出Word的实现 1、使用 freemarker模板实现 此种实现是最普遍的,预先按照最终的需要调整好一个doc格式的文件,填上相关数据后,将此doc格式的文件转换为Word格式的xml文件,再编辑xml文件,将需要替换的位置写上一些变量、循环判断逻辑等,在后台使用freemarker实现为其填充数据,并将此文件的后缀格式保存为doc类型。 优点: 1)实现简单、易于维护,推荐使用; 2)可借助于freemarker技术对相关字段进行格式化、逻辑处理等; 3)导出效果可与实际操作Word效果一致; 缺点: 1)导出的格式为doc类型(docx的格式简单试了一下不行,没有继续深入); 2)如果后期导出的样式需要调整将会很痛苦,相当于模板需要重新维护一次; 2、使用拼html标签代...

文章分类:经验分享 技术知识

根据JSON生成JavaBean

根据json格式数据生成一个javabean对象,首先这是一个简单的功能,但是要写出一个比较好的版本实际还是有些难点的,这里跟大家分享一种实现,基于fastjson、freemarker。 实现要求 1. json格式中可包括boolean类型、String类型、int类型、金额类型等常见类型; 2. json格式中可出现其它关联对象,包括其对象类型、集合类型; 3. 相关联的对象类不能作为一个单独的类创建,作为子类创建在内部; 4. 理论上支持无限极JSON对象格式(可能会出现子类、孙子类、重孙子类等); 测试示例 一.最简单的json对象创建 1.json文本 { "active": true, "date": "2016-12-20", "id": 1001, "money": 5.25, "name": "china" } 2.生成的Java类 package com.vo; im...

文章分类:经验分享 技术知识

网页中的录音实现方案

前几天逛了逛论坛,发现了一个网页中录音的实现方案,基于flash实现,即在页面中嵌入一个flash实现录音,然后将录音的文件上传至服务器中,可以搜索一下该组件FlashWavRecorder,给出我看到的原文地址:http://uikoo9.com/blog/detail/java-flashwavrecorder-new,文章中有github地址的源码下载,此为背景。 作为储备的知识,我觉得研究研究还是挺不错的,故将此代码整理整理,摘出来一份儿干净的代码跟大家分享出来。注:此组件的API并未研究,如需正式使用需关注下flash与后台上传时的细节问题。 下面给出运行效果、下载地址,如下: ...

文章分类:经验分享 技术知识

使用SMB/CIFS做文件服务器

背景介绍 SMB/CIFS组件是一种Java访问共享文件夹的实现,使用它也是可以很方便的管理上传下载的文件,先闲话一些别的吧。很久以前有遇到文件的上传下载时,很“单纯”的将文件写至servletContext.getRealPath("/files");目录下,然后就没有然后了,后来慢慢的将某个服务器的共享文件夹以磁盘映射的方式作为本地的磁盘进行访问,也就是说访问时以Z:\\shares......去访问共享文件......在之前的项目中新做的文件上传下载有要求写入一个服务器上,而使用的技术实现则是从一个老系统中迁移出来的,我还一直以为用到的实现时上传的文档服务器提供的接口,并未多想,如果不是前段时间又遇到此种问题了,或许也就没有下文了。最近我找了找它还真的是一个开源组件,基于smb协议的文件访问。 一般项目当中的文档管理,基本的功能是对文档目录的列表读取、文件(夹)的增删改查以及文件的上...

文章分类:经验分享 技术知识

本站信息

 运营时间: 天

 用户数量: 人

 文章数量: 篇

 评论数量: 条

 点赞个数: 个

 最后更新:

标签云