中企动力 > 商学院 > javaweb导出excel表格
  • ?

    如何用Python导出复杂表头的Excel表格

    姚水儿

    展开

    用python的xlwt导出excel很方便,今天我们来介绍一下如果表格的表头很复杂,例如包括单元格的合并等,如下图所示,这样的表格怎样导出呢?请看下面的样例。

    复杂表头表格

    # -*- coding: utf-8 -*-import xlwtdef ExportExcel():f = xlwt.Workbook() #设置表格样式 style = xlwt.easyxf('font: name Arial Black, colour_index black, bold on; align: wrap on, vert centre, horiz center;border:left thin, right thin, top thin, bottom thin') #创建sheet1 sheet1 = f.add_sheet(u'sheet1',cell_overwrite_ok=True) ''' 创建复杂表头 write_merge(x, x + m, y, y + n, string, sytle) x表示行,y表示列,m表示跨行个数,n表示跨列个数,string表示要写入的单元格内容,style表示单元格样式。 其中,x, y, m, n,都是以0开始计算的。 ''' sheet1.write_merge(0,1,0,0,u'商圈', style) sheet1.write_merge(0,1,1,1,u'销售流水', style) sheet1.write_merge(0,1,2,2,u'流水占比', style) sheet1.write_merge(0,1,3,3,u'流水差距', style) sheet1.write_merge(0,0,4,6,u'流水份额', style) sheet1.write_merge(1,1,4,4,u'饿了么', style) sheet1.write_merge(1,1,5,5,u'美团', style) sheet1.write_merge(1,1,6,6,u'大众点评', style) sheet1.write_merge(0,1,7,7,u'全网门店数', style) sheet1.write_merge(0,0,8,10,u'门店覆盖率', style) sheet1.write_merge(1,1,8,8,u'饿了么', style) sheet1.write_merge(1,1,9,9,u'美团', style) sheet1.write_merge(1,1,10,10,u'大众点评', style) print '#############' f.save('D:\demo.xls')if __name__ =='__main__': print 'start' ExportExcel()

    其实很简单,大家动手试试吧。

  • ?

    JDBC封装/Java处理excel/WEB基础知识

    花心筒

    展开

    对JDBC的封装?

    1.将变的内容以参数形式传入

    2.将不变的固定下来

    Java处理EXCEL?【JXL】

    1.读

    2.写

    WEB基础知识

    第一、两种架构

    1.C/S:Client /Server 客户端 服务器 模式

    QQ 360 大型网络游戏

    2.B/S:Browser/Server 浏览器 服务器 模式

    网站 应用系统 页游

    第二、网络中的计算机,进行通信,所遵循的规范,称之为协议。

    第三、在JAVAWEB中,客户端和服务器进行交互遵循的是HTTP协议。

    第四、HTTP是一种建立在TCP协议基础之上,基于请求、响应模式的无状态的应用层协议。

    第五、请求:从客户端发往服务器的信息【字符串】。

    1.请求行 请求的方法 资源 协议版本HTTP/1.1

    2.请求头 Host Accept Accept-language....

    3.空格

    4.消息体 key1=value1&key2=value2

    第六、响应: 从服务器返回到客户端信息【字符串】

    1.状态行 协议版本 状态码 状态字符串

    2.响应头 Content-Type Conent-length cookie: .....

    3.空格

    4.响应正文

    第七、浏览器:能够发出标准的HTTP请求,并可以解析标准的HTTP响应的软件(一堆别人写的代码(不一定使用JAVA))

    第八、WEB服务器:是一种能够接受标准的HTTP请求,返回标准的HTTP响应的软件。

    第九、Tomcat就是一款免费的开源的纯JAVA实现的WEB服务器。

    第十、Servlet/JSP容器:提供了Servlet运行环境,管理Servlet的生命周期的一个组件(一堆类,零件)。一般容器存在于服务器中。比如:Tomcat中就有一个servlet容器catalina

    第十一、Servlet=JAV代码+HTML标签(以JAVA代码为主) JSP=HTML标签+JAVA代码(以标签为主)

  • ?

    从考勤机上下载了考勤,如何生成excel表格?

    郝凛

    展开

    不同品牌的考勤机具体的操作可能有所不同。

    以下面的考勤管理系统为例,加以说明:

    1、打开考勤系统

    2、点击从设备上下载考勤数据,点击下面的导出考勤数据。

    3、也可心点击统计报表,点击查询计算,点击导出数据。

    出现如下的对话框

    点击确认出现如下对话框,给导出的数据文件命名文件名,点击保存,这样,考勤数据就导出为EXCEL文档了。

    (本文内容由百度知道网友jygangtie贡献)

  • ?

    Java SSM 商户管理系统 客户管理 库存管理 销售报表 项目源码

    温易文

    展开

    需求分析:

    有个厂家,下面有很多代理商(商户或门头等),之前商户进货、库存、销售、客户资料等记录在excel表格中

    或者无记录,管理比较混乱,盈利情况不明。不能有效了解店铺经营情况和客户跟踪记录

    厂家也不能实时了解下面代理商的经营状况和库存情况

    解决方案:

    本系统角色主要分两个层级:总管理(厂家),下级管理(商户)

    各商户管理自己的进销存数据和客户资料

    厂家能查看所有商户实时经营情况

    -------------------------------------------------------------------------------------------------------------------------

    系统介绍:

    1.系统采用主流的 SSM 框架 jsp JSTLbootstrap html5 (PC浏览器使用)

    2.springmvc+spring4.2.5+mybaits3.3 SSM 普通java web(非maven)数据库:mysql

    3.开发工具:myeclipse eclipse idea 均可, 没有限制. 我这边myeclipse 2014 导出来的项目源码

    业务模块

    主页:记录总进货额、总销售额、总销售利润、30天内销售金额

    统计总客户数、30天新增客户数

    图表统计(折线图和柱状图)展示从当前月份开始前12个月销售情况

    . 客户资料:记录客户资料,备注客户信息,跟踪记录客户状况

    . 客户备注:客户资料附属选项

    . 客户级别:客户资料附属选项

    . 商品列表:维护商品数据,有富文本编辑器,有明细表上传商品图片

    . 商品类别:商品附属选项

    . 品牌管理:商品附属选项

    . 计量单位:商品附属选项

    . 商品库存:展现商品库存情况,库存小的排最前

    . 商品入库:录入商品入库数据,数量、单价、入库时间。计算某时间范围内的进货总金额

    10. 商品出库:录入商品出库数据,数量、销售价格、销售出库时间。计算某时间范围内的销售总金额

    11. 库存盘点:柱状图展示商品库存情况,以便及时补仓

    12. 销售报表:列表展示商品销售情况,可根据销量和销售额排序,以便掌握哪个商品卖的好并调整销售方案

    系统模块

    . 权限管理:点开二级菜单进入三级菜单显示 角色(基础权限)和按钮权限

    角色(基础权限): 分角色组和角色,独立分配菜单权限和增删改查权限。

    按钮权限: 给角色分配按钮权限。

    . 按钮管理:自定义按钮管理,维护按钮权限标识等

    . 菜单管理:无限级别自定义菜单,自定义菜单图标,业务菜单和系统菜单分离,菜单状态显示隐藏(递归处理)

    . 数据字典:无限级别,支持多级别无限分类。内设编号,排序等

    . 在线管理:websocket技术,实时检测在线用户列表,统计在线人数,可强制用户下线 同一用户只能在一个客户端登录

    . 日志管理:记录用户登录退出和一些重要操作记录

    . 系统用户:对各个基本的用户增删改查,单发、群发站内信邮件短信,导入导出excel表格,查看商户经营状况

    . 性能监控:监控整个系统的性能,SQL监控,SQL防火墙,URL监控,SPRING监控,SESSION监控等

    . 图片管理:对批量上传的图片统一管理 ,点击放大,可打开多个,自由切换,绚丽预览效果

    10. 图片爬虫:输入某网址,爬出其图片显示在页面上,可以放大预览。可保存到服务器上,到图片管理里面

    11. 站内信:收信箱和发信箱, websocket技术通讯技术做的及时收信提醒,可配置语音提示来信

    12. 系统设置:修改系统名称,邮件服务器配置,短信账号设置,图片水印配置

    13. 数据库备份:可备份单表、整库,支持本地和远程数据库备份

    14. 备份定时器:quartz 2.2 强大的任务调度,多线程备份数据库,任务启动关闭异步操作

    15. 数据库还原:历史备份记录,还原数据库 or 单表 ,统计备份时间和文件大小

    16. SQL编辑器:强大的SQL编辑器,支持编辑语句复杂查询语句,生成动态报表,可导出excel

    菜单权限:分配给每个角色不同的菜单权限, 每个角色看到的菜单不同,无限级别菜单

    按钮权限:独立分配不同的角色不同的功能权限,增删改查权限分配具体到不同的菜单,自定义按钮管理

    支持多用户分权限管理后台, 权限具体到不同的菜单不同的按钮

    技术点

    1. 导出 导入 excel 文件

    2. IO 流上传下载文件

    3. 群发邮件,可以发html、纯文本格式,可以发给任意邮箱(实现批量发送广告邮件)

    4. 群发or单独 发送短信,支持两种第三方短信商接口

    5. spring aop 事务处理

    6. MD5加密 SHA加密(登录密码用此加密)接口加密身份校验

    7. 数据库连接池 阿里的 druid。Druid在监控、可扩展性、稳定性和性能方面都有明显的优势,支持并发

    8.加入安全框架 shiro (登录授权)(session管理)

    9.根据汉字 解析汉字的全拼(拼音)和首字母(导入excel到用户表,根据用户的汉字姓名生成拼音的用户名)

    10.java Quartz2.2 任务调度

    11.Base64传输图片

    12.图片加水印(图片水印,文字水印)

    13.批量异步上传图片,可预览,有进度条,支持拖拽上传(百度webuploader )。列表动态滑动放大展示。

    14.ehcache 自定义二级缓存 ,选择缓存存放目录,处理并发,增加系统性能

    15.uploadify 上传插件,单条、批量上传多线程,带进度条,异步,图片、视频, 其它文件格式均可上传

    16.tab标签页面功能,标签自由切换,不重复操作数据库

    17.百度富文本编辑器,可上传图片

    18.网页爬虫技术,可根据网页地址爬取图片和网页标题等信息(爬取某商城图片保存本服务器)

    19.java websocket 即时通讯技术,点对点,群聊,单聊

    20.HTML5 + JAVAEE WebSocket 通信技术,WebSocket 验证用户登录,强制某用户下线

    21.站内信语音提醒,js控制音频播放

    22.调用摄像头拍照技术,图片裁剪技术

    QQ:313596790

    登录界面背景用HTML5特效自动切换(百叶窗,幕布等多种切换方式)有背景音乐和背景动画

  • ?

    一行代码完成Java的Excel读写

    Korsor

    展开

    前段时间在 github 上发现了阿里的 EasyExcel 项目,觉得挺不错的,就写了一个简单的方法封装,做到只用一个函数就完成 Excel 的导入或者导。刚好前段时间更新修复了一些 BUG,就把我的这个封装分享出来,请多多指教。

    附上源码:

    https://github/HowieYuan/easyexcel-method-encapsulation

    EasyExcel

    EasyExcel 的 github 地址:

    https://github/alibaba/easyexcel

    EasyExcel 的官方介绍:

    可以看到 EasyExcel 最大的特点就是使用内存少,当然现在它的功能还比较简单,能够面对的复杂场景比较少,不过基本的读写完全可以满足。

    一. 依赖

    首先是添加该项目的依赖,目前的版本是 1.0.2。

    com.alibabaeasyexcel1.0.2

    二. 需要的类

    1. ExcelUtil

    工具类,可以直接调用该工具类的方法完成 Excel 的读或者写。

    2. ExcelListener

    监听类,可以根据需要与自己的情况,自定义处理获取到的数据,我这里只是简单地把数据添加到一个 List 里面。

    publicclassExcelListenerextendsAnalysisEventListener {//自定义用于暂时存储data。//可以通过实例获取该值private List datas = new ArrayList<>();/** * 通过 AnalysisContext 对象还可以获取当前 sheet,当前行等数据 */ @Overridepublicvoidinvoke(Object object, AnalysisContext context) {//数据存储到list,供批量处理,或后续自己业务逻辑处理。 datas.add(object);//根据自己业务做处理 doSomething(object); }privatevoiddoSomething(Object object) { } @OverridepublicvoiddoAfterAllAnalysed(AnalysisContext context) { }public List getDatas() {return datas; }publicvoidsetDatas(List datas) {this.datas = datas; }}

    3. ExcelWriterFactroy

    用于导出多个 sheet 的 Excel,通过多次调用 write 方法写入多个 sheet。

    4. ExcelException

    捕获相关 Exception。

    三. 读取 Excel

    读取 Excel 时只需要调用 ExcelUtil.readExcel() 方法:

    @RequestMapping(value = "readExcel", method = RequestMethod.POST)public Object readExcel(MultipartFile excel) {return ExcelUtil.readExcel(excel, new ImportInfo());}

    其中 excel 是 MultipartFile 类型的文件对象,而 new ImportInfo() 是该 Excel 所映射的实体对象,需要继承 BaseRowModel 类,如:

    publicclass ImportInfo extends BaseRowModel {@ExcelProperty(index = 0)privateString name;@ExcelProperty(index = 1)privateString age;@ExcelProperty(index = 2)privateString email;publicString getName() {return name; }publicvoid setName(String name) {this.name = name; }publicString getAge() {return age; }publicvoid setAge(String age) {this.age = age; }publicString getEmail() {return email; }publicvoid setEmail(String email) {this.email = email; }}

    作为映射实体类,通过 @ExcelProperty 注解与 index 变量可以标注成员变量所映射的列,同时不可缺少 setter 方法。

    四. 导出 Excel

    1. 导出的 Excel 只拥有一个 sheet

    只需要调用 ExcelUtil.writeExcelWithSheets() 方法:

    @RequestMapping(value = "writeExcel", method = RequestMethod.GET)publicvoidwriteExcel(HttpServletResponse response) throws IOException { List list = getList(); String fileName = "一个 Excel 文件"; String sheetName = "第一个 sheet"; ExcelUtil.writeExcel(response, list, fileName, sheetName, new ExportInfo()); }

    fileName,sheetName 分别是导出文件的文件名和 sheet 名,new ExportInfo() 为导出数据的映射实体对象,list 为导出数据。

    对于映射实体类,可以根据需要通过 @ExcelProperty 注解自定义表头,当然同样需要继承 BaseRowModel 类,如:

    publicclass ExportInfo extends BaseRowModel {@ExcelProperty(value = "姓名" ,index = 0)privateString name;@ExcelProperty(value = "年龄",index = 1)privateString age;@ExcelProperty(value = "邮箱",index = 2)privateString email;@ExcelProperty(value = "地址",index = 3)privateString address;}

    value 为列名,index 为列的序号。

    如果需要复杂一点,可以实现如下图的效果:

    对应的实体类写法如下:

    publicclass MultiLineHeadExcelModel extends BaseRowModel {@ExcelProperty(value = {"表头1","表头1","表头31"},index = 0)privateString p1;@ExcelProperty(value = {"表头1","表头1","表头32"},index = 1)privateString p2;@ExcelProperty(value = {"表头3","表头3","表头3"},index = 2)private int p3;@ExcelProperty(value = {"表头4","表头4","表头4"},index = 3)private long p4;@ExcelProperty(value = {"表头5","表头51","表头52"},index = 4)privateString p5;@ExcelProperty(value = {"表头6","表头61","表头611"},index = 5)privateString p6;@ExcelProperty(value = {"表头6","表头61","表头612"},index = 6)privateString p7;@ExcelProperty(value = {"表头6","表头62","表头621"},index = 7)privateString p8;@ExcelProperty(value = {"表头6","表头62","表头622"},index = 8)privateString p9;}

    2. 导出的 Excel 拥有多个 sheet

    调用 ExcelUtil.writeExcelWithSheets() 处理第一个 sheet,之后调用 write() 方法依次处理之后的 sheet,最后使用 finish() 方法结束。

    publicvoidwriteExcelWithSheets(HttpServletResponse response) throws IOException { List list = getList(); String fileName = "一个 Excel 文件"; String sheetName1 = "第一个 sheet"; String sheetName2 = "第二个 sheet"; String sheetName3 = "第三个 sheet"; ExcelUtil.writeExcelWithSheets(response, list, fileName, sheetName1, new ExportInfo()) .write(list, sheetName2, new ExportInfo()) .write(list, sheetName3, new ExportInfo()) .finish();}

    write 方法的参数为当前 sheet 的 list 数据,当前 sheet 名以及对应的映射类。

    扩展阅读

    代码整洁之道|最佳实践小结

    Javascript 将 HTML 页面生成 PDF 并下载

    Java POI 导出EXCEL经典实现 Java导出Excel弹出下载框

    来源:https://juejin.im/post/5ba320546fb9a05d0b14304b

    文章来源网络,版权归作者本人所有,如侵犯到原作者权益,请与我们联系删除

  • ?

    SpreadJS ExcelIO实现服务器端Excel导入导出

    夏罡

    展开

    SpreadJS在V10版本后推出了纯前端的Excel导入导出,这个功能可以很方便的实现客户端的Excel导入导出,但是如果用户需要导入导出到浏览器端又该怎么办呢?其实纯前端的Excel导入导出同样可以实现服务器端的Excel导入导出。下面让我们来看一下是如何实现的:

    本示例的后端使用JAVA语言,通过SpreadJS的前端导出导出与JAVA后端结合,实现分从服务器端导入Excel与导出Excel保存至服务器端这两个功能:

    从服务器端导入Excel:

    这部分使用纯前端实现,纯前端实现有一个弊端就是,浏览器没有权限访问服务器上工程目录以外的路径,所以需要将服务器端的Excel放入工程目录下。然后下载到前端直接打开,核心代码如下:

    导出Excel保存至服务器端:

    这部分使用前端导出功能与后端java结合的方式来实现,首先通过前端Excel导出,生成导出文件,然后通过formdata来承载导出文件,之后通过ajax将formdata传至后端java。后端java使用文件操作将文件保存至服务器端。

    这里有以下需要注意的地方:

    formdata没有办法改变enctype,而我们需要的用entype为multipart/form-data类型的form来承载导出文件。这里需要在jsp页面上创建一个空的form,并将其entype设置为multipart/form-data:

    之后js中只需要初始化一个该form的formdata实例即可:

    var fd = new FormData(document.forms.namedItem("myform"));

    以上就是核心的部分代码以及原理。

    了解更多

    SpreadJS是 Spread 表格开发系列产品之一。该产品是葡萄城公司出品的一系列功能和 Excel 类似的表格工具,支持桌面、Web 和移动平台开发,用于在应用系统中实现 Excel 导入导出、表格数据录入和编辑等交互功能,并提供灵活的定制能力和丰富的数据可视化效果。

    Spread 是目前市面上最接近 Excel 的表格开发工具,无论是界面、函数还是布局,都与 Excel 高度接近,正被华为、东软、中国平安、河海大学、中通快递、普华永道、魔方网表、思源软件等企业应用于项目开发中。

    除了纯前端的SpreadJS,该系列产品还包括 .NET 平台可用的Spread Studio,和服务器端批量操作Excel的Spread表格组件,敬请登陆官网了解更多:http://gcpowertools/

    关于葡萄城

    葡萄城成立于1980年,是全球最大的控件提供商,世界领先的企业应用定制工具、企业报表和商业智能解决方案提供商,为超过75%的全球财富500强企业提供服务。葡萄城于1988年在中国设立研发中心,在全球化产品的研发过程中,不断适应中国市场的本地需求,并为软件企业和各行业的信息化提供优秀的软件工具和咨询服务。

  • ?

    企业Web应用开发教程(8)-导出EXCEL、PDF和打印命令的区别

    红酥手

    展开

    活字格有很多的命令,来保证使用者能简单快速的完成功能业务逻辑。命令越多能做的事情也就越多,但是有很多稍有交集的命令,就会让很多的人困惑。比如这次要讲的:导出Excel,导出PDF,打印命令。

    其实这三个命令,都可以作为打印来使用的,Excel可以打印,PDF可以打印,打印命令当然也是可以打印的,但是其实很多活字格新手打印的时候都只会用“打印命令”去打印,认为活字格只能打印单个的页面,其实这个理解不够全面,那么问题来了。

    既然导出Excel,导出PDF,和打印命令都可以实现打印,需要打印的时候,我们应该如何抉择呢?这三种方式各有什么优缺点?

    下面分别通过不同的场景的说明。

    打印命令

    首先,如果你想快速打印当前页面上的元素,或者说就是想把当前的页面打印出来,最最初级的打印需求,其实这种就是怎么最快的完成最简单的打印,那么你可以直接用打印命令,也就是说,最简单最快捷的需求请使用打印命令。

    而且这个打印命令其实跟“设置页面打印信息”里的设置没有任何的关联,

    也就是说你在打印信息里的设置,根本不过这个命令其任何的作用的。

    导出PDF

    另外,高级一点的打印需求我们自然就需要使用导出Excel和导出PDF命令来设置了,当然“设置页面打印信息”是对这两个功能有作用的。我们还是一起看看这个例子,带出我们的这两个命令。比如说我现在有一个人事招聘系统,公司最近需要办一场面试会,然后需要吧所有候选人的面试简历都打印出来,而我们的系统一定是这样的。有一个列表页面,然后右边是一个个人简历页面,这样的如果要把每一条数据都查看详细,然后是使用打印命令,显示是非常的麻烦的。

    我们这时候使用导出PDF,导出其他页面

    这样所有的记录的详细信息全部在你点击了一个按钮以后完成了。

    导出EXCEL

    最后,导出EXCEL命令,其实是这样的就是,在页面的展示的很多的数据,有的值我们需要修改过以后在打印,或者有的描述性文字需要修改以后在打印。也就是说,导出excel以后,其实你还是可以对这里的数据做修改的,那如果你是这样的需求请使用导出Excel,修改后打印。

    总结一下

    最简单的需求最快速的打印,使用打印命令;

    高级但是不允许修改的打印,用导出PDF命令;

    稍高级但是允许修改的打印,用导出Excel命令。

    通过以下网址,访问活字格官网:http://grapecity/enterprise-solutions/huozige/

    关于葡萄城

    活字格由葡萄城公司研发、销售并提供技术服务。葡萄城公司成立于1980年,是全球领先的集开发工具、商业智能解决方案、管理系统设计工具于一身的软件和服务提供商。西安葡萄城是其在中国的分支机构,面向全球市场提供软件研发服务,并为中国企业的信息化提供国际先进的开发工具、软件和研发咨询服务。

  • ?

    Java实现文件批量导入导出实例(兼容xls,xlsx)

    凝梦

    展开

    1、介绍

    java实现文件的导入导出数据库,目前在大部分系统中是比较常见的功能了,今天写个小demo来理解其原理,没接触过的同学也可以看看参考下。

    目前我所接触过的导入导出技术主要有POI和iReport,poi主要作为一些数据批量导入数据库,iReport做报表导出。另外还有jxl类似poi的方式,不过貌似很久没跟新了,2007之后的office好像也不支持,这里就不说了。

    2、POI使用详解

    2.1 什么是Apache POI?

    Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。

    2.2 POI的jar包导入

    本次讲解使用maven工程,jar包版本使用poi-3.14和poi-ooxml-3.14。目前最新的版本是3.16。因为3.15以后相关api有更新,部分操作可能不一样,大家注意下。

    2.3 POI的API讲解

    2.3.1 结构

    HSSF - 提供读写Microsoft Excel格式档案的功能。XSSF - 提供读写Microsoft Excel OOXML格式档案的功能。HWPF - 提供读写Microsoft Word格式档案的功能。HSLF - 提供读写Microsoft PowerPoint格式档案的功能。HDGF - 提供读写Microsoft Visio格式档案的功能。

    2.3.2 对象

    本文主要介绍HSSF和XSSF两种组件,简单的讲HSSF用来操作Office 2007版本前excel.xls文件,XSSF用来操作Office 2007版本后的excel.xlsx文件,注意二者的后缀是不一样的。

    HSSF在org.apache.poi.hssf.usermodel包中。它实现了Workbook 接口,用于Excel文件中的.xls格式

    常用组件:HSSFWorkbook excel的文档对象HSSFSheet excel的表单HSSFRow excel的行HSSFCell excel的格子单元HSSFFont excel字体HSSFDataFormat 日期格式HSSFHeader sheet头HSSFFooter sheet尾(只有打印的时候才能看到效果)样式:HSSFCellStyle cell样式辅助操作包括:HSSFDateUtil 日期HSSFPrintSetup 打印HSSFErrorConstants 错误信息表

    XSSF在org.apache.xssf.usemodel包,并实现Workbook接口,用于Excel文件中的.xlsx格式

    常用组件:XSSFWorkbook excel的文档对象XSSFSheet excel的表单XSSFRow excel的行XSSFCell excel的格子单元XSSFFont excel字体XSSFDataFormat 日期格式和HSSF类似;

    2.3.3 两个组件共同的字段类型描述

    其实两个组件就是针对excel的两种格式,大部分的操作都是相同的。

    2.3.4 操作步骤

    以HSSF为例,XSSF操作相同。

    首先,理解一下一个Excel的文件的组织形式,一个Excel文件对应于一个workbook(HSSFWorkbook),一个workbook可以有多个sheet(HSSFSheet)组成,一个sheet是由多个row(HSSFRow)组成,一个row是由多个cell(HSSFCell)组成。

    3、代码操作

    3.1 效果图

    惯例,贴代码前先看效果图

    Excel文件两种格式各一个:

    代码结构:

    导入后:(我导入了两遍,没做校验)

    导出效果:

    3.2 代码详解

    这里我以Spring+SpringMVC+Mybatis为基础

    Controller:

    Service

    3.3 导出文件api补充

    大家可以看到上面service的代码只是最基本的导出。

    在实际应用中导出的Excel文件往往需要阅读和打印的,这就需要对输出的Excel文档进行排版和样式的设置,主要操作有合并单元格、设置单元格样式、设置字体样式等。

    3.3.1 单元格合并

    使用HSSFSheet的addMergedRegion()方法

    参数CellRangeAddress 表示合并的区域,构造方法如下:依次表示起始行,截至行,起始列, 截至列

    3.3.2 设置单元格的行高和列宽

    3.3.3 设置单元格样式

    1、创建HSSFCellStyle

    2、设置样式

    3、将样式应用于单元格

    3.3.4设置字体样式

    1、创建HSSFFont对象(调用HSSFWorkbook 的createFont方法)

    2、设置字体各种样式

    3、将字体设置到单元格样式

    大家可以看出用poi导出文件还是比较麻烦的,等下次在为大家介绍下irport的方法。

    导出的api基本上就是这些,最后也希望上文对大家能有所帮助。

    学习Java的同学注意了!!!学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Java学习交流群495273252,我们一起学Java!

  • ?

    Java使用Apache POI导出Excel

    卡斯特罗

    展开

    一.POI简单介绍

    Apache POI 是用Java 编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对 Microsoft Office 格式档案读和写的功能

    HSSF 提供读写Microsoft Excel XLS格式档案的功能。

    XSSF 提供读写Microsoft Excel OOXML XLSX格式档案的功能。

    HWPF 提供读写Microsoft Word DOC格式档案的功能。

    HSLF 提供读写Microsoft PowerPoint格式档案的功能。

    HDGF 提供读Microsoft Visio格式档案的功能。

    HPBF 提供读Microsoft Publisher格式档案的功能。

    HSMF 提供读Microsoft Outlook格式档案的功能。

    二.操作步骤

    1.环境配置:导入jar包

    org.apache.poi poi 3.16

    2.创建一个Excel工作簿

    @Test public void test() throws IOException { //定义一个工作蒲 Workbook wb = new HSSFWorkbook(); //定义一个输出流 FileOutputStream fileOutputStream = new FileOutputStream("/home/ubuntu/Desktop/Excel工作蒲.xls"); //写入在输出流 wb.write(fileOutputStream); //关闭输出流 fileOutputStream.close(); }

    3.创建一个sheet页

    @Test public void sheet() throws IOException { //定义一个工作蒲 Workbook wb = new HSSFWorkbook(); //创建sheet页面 wb.createSheet("第一个sheet页"); wb.createSheet("第二个sheet页"); //定义一个输出流 FileOutputStream fileOutputStream = new FileOutputStream("/home/ubuntu/Desktop/Excel工作蒲带有sheet页.xls"); //写入在输出流 wb.write(fileOutputStream); //关闭输出流 fileOutputStream.close(); }

    sheet页

    4.创建行和列

    @Test public void row() throws IOException { //定义一个工作蒲 Workbook wb = new HSSFWorkbook(); //创建sheet页面 Sheet sheet = wb.createSheet("学生信息sheet页"); //创建一行 Row row = sheet.createRow(0); //创建一个单元格 Cell cell =null; for(int i = 0 ;i<5;i++){ row.createCell(i).setCellValue("写入信息:单元格内容"+i); } //定义一个输出流 FileOutputStream fileOutputStream = new FileOutputStream("/home/ubuntu/Desktop/Excel学生信息.xls"); //写入在输出流 wb.write(fileOutputStream); //关闭输出流 fileOutputStream.close(); }

    5.创建一个时间样式到Excel

    @Test public void date() throws IOException { //定义一个工作蒲 Workbook wb = new HSSFWorkbook(); //创建sheet页面 Sheet sheet = wb.createSheet("时间sheet页"); //创建一行 Row row = sheet.createRow(0); //创建一个单元格 Cell cell = row.createCell(0); cell.setCellValue(new Date()); CreationHelper creationHelper = wb.getCreationHelper(); //设置单元格样式 CellStyle cellStyle = wb.createCellStyle(); cellStyle.setDataFormat(creationHelper.createDataFormat().getFormat("YYYY-MM-DD hh:mm:ss")); cell = row.createCell(1); cell.setCellValue(new Date()); //设置日期样式 cell.setCellStyle(cellStyle); //定义一个输出流 FileOutputStream fileOutputStream = new FileOutputStream("/home/ubuntu/Desktop/Excel日期格式.xls"); //写入在输出流 wb.write(fileOutputStream); //关闭输出流 fileOutputStream.close(); }

    6.单元格对其方式及行高

    @Test public void style() throws IOException { //定义一个工作蒲 Workbook wb = new HSSFWorkbook(); //创建sheet页面 Sheet sheet = wb.createSheet("第一个sheet"); //创建一行 Row row = sheet.createRow(0); //设置行高 row.setHeightInPoints(30); //创建一个单元格 createCell(wb,row,(short)0,HSSFCellStyle.ALIGN_CENTER,HSSFCellStyle.VERTICAL_BOTTOM); createCell(wb,row,(short)1,HSSFCellStyle.ALIGN_JUSTIFY,HSSFCellStyle.VERTICAL_CENTER); createCell(wb,row,(short)2,HSSFCellStyle.ALIGN_CENTER_SELECTION,HSSFCellStyle.VERTICAL_JUSTIFY); //定义一个输出流 FileOutputStream fileOutputStream = new FileOutputStream("/home/ubuntu/Desktop/Excel样式.xls"); //写入在输出流 wb.write(fileOutputStream); //关闭输出流 fileOutputStream.close(); } /** * 创建一个单元格设置对应的对其方式 * @param workbook 工作蒲 * @param row 行 * @param column 列 */ private static void createCell(Workbook workbook, Row row, short column,short halign,short valign){ Cell cell = row.createCell(column);//创建单元格 cell.setCellValue(new HSSFRichTextString("我是富文本"));//设置值 CellStyle cellStyle = workbook.createCellStyle();//创建样式 cellStyle.setAlignment(halign);//设置单元格水平方向对其方式 cellStyle.setVerticalAlignment(valign);//设置单元格垂直方向对其方式 cell.setCellStyle(cellStyle); }

    合并单元格

    @Test public void test1() throws IOException { //定义一个工作蒲 Workbook wb = new HSSFWorkbook(); //创建sheet页面 Sheet sheet = wb.createSheet("第一个sheet"); //创建一行 Row row = sheet.createRow(1); //设置行高 row.setHeightInPoints(30); //创建一个单元格 Cell cell = row.createCell(1); cell.setCellValue("合并单元格"); //合并单元格(起始行,结束行,起始列,结束列) sheet.addMergedRegion(new CellRangeAddress(1,2,1,2)); //定义一个输出流 FileOutputStream fileOutputStream = new FileOutputStream("/home/ubuntu/Desktop/Excel样式.xls"); //写入在输出流 wb.write(fileOutputStream); //关闭输出流 fileOutputStream.close(); }

  • ?

    JavaEE——Java导出Excel表

    樊尔阳

    展开

    声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。

    Java导出Excel表

    首先去maven里面下载 upload 1.3.3 版本 下载到你的maven工程里面

    上传文件必须是post方法

    上传文件同时有表单值的话 你用request.getParame是获得不到的

    Java导出Excel表

    去maven工厂下载 POI jar包

  • javaweb导出excel表格