中企动力 > 商学院 > java怎么生成excel
  • ?

    改一改工号,各种表格自动生成,Excel函数运用享受葛优躺

    浩轩

    展开

    Hello大家好,我是帮帮。最近好多小伙伴在微信中问我,如何运用vlookup函数,今天结合范例,我给大家讲讲日常工作容易遇到的问题,一看就会(已经是高手的可以跳过^^)。

    有个好消息!为了方便大家更快的掌握技巧,寻找捷径。请大家点击文章末尾的“了解更多”,在里面找到并关注我,里面有海量各类模板素材免费下载,我等着你噢^^<——非常重要!!!

    大家请看范例图片,先讲讲vlookup函数的语法。他有四个参数,四个参数分别代表对应的类别,最后的参数一般输入0。

    这样看起来或许有点空洞,我们直接看应用。我们现在要查询小张的工号是多少,在结果单元格输入公式=VLOOKUP(B11,E:F,2,0),大家注意看括号里面用逗号隔开的四个参数。红色代表需要查找的值(小张),蓝色代表需要查找的范围(E:F,表示在E列到F列之间),2(查找的列数,表示查找的值在查找范围里面的第2列),0表示精确。

    这样就轻松查询出我们想要的结果,通过复制向下公式,小红,小季批量完成。

    然而,我们初学者最容易犯错的地方,类似下图,查找小张的部门,输入公式=VLOOKUP(E10,D:E,-1,0),查找的列在查找值的左侧,有些小伙伴按照顺序以为输入-1就能查到,结果查询不到结果。

    结论:VLOOKUP第一个参数,也就是需要查找的值,必须在查找范围的首列。

    我们再来看查询聘用时间是2014年的人员名单。我们先输入公式看看,=VLOOKUP(E11,C:E,3,0)。这里需要查找的值,运用了通配符,2014*代表2014后面跟随的任意字符串。在C到E列中查询,取第3列的数据。

    我们复制公式向下,结果第二个单元格出现查询不到结果。这是为什么呢?这也是初学者常出现的问题,单元格向下复制,如果引用的范围区域不加以绝对引用,=VLOOKUP(E11,C:E,3,0),行数E11会变动变为E12,然后E12并没有数据,所以无法查询。

    这时候,我们就要对E列11行进行锁定,输入E$11,无论你向下如何复制公式,由于11行被锁定,引用范围依然是E11。如果你想左右复制,也不想改变E11单元格的引用,那就要书写成$E$11,将列号也一起锁定。

    调整公式后,我们向下复制,新的问题出来了,VLOOKUP函数仅对目标区域第一次符合要求的数据进行查询,但是复合2014*的字符串显然很多。VLOOKUP就没办法批量提取。

    要想用VLOOKUP批量提取,也很简单,添加一个辅助列。输入=COUNTIF(D$3:D3,F$11),这里按2014*为条件,以D3为坐标,向下计数,符合条件的进行计数。大家看,本例中,有5个单元格符合2014*的条件。

    然后我们在结果区域,输入公式=IFERROR(VLOOKUP(ROW(A1),A:F,6,0),"")。这个公式表示A到F列的区域里面,符合ROW(1)=1的条件,进行查询,然后生成第6列的值,查询不到结果返回空格。

    这样小李的结果就出来了。我们下拉公式,一直复制到没有数据出现,产生空白单元格为止。

    下面这种情况在工作中也非常容易遇到,填写各种报名表,上岗表,推荐表,申请表。如果你一次需要填写多份表格,每个空格复制粘贴显然不科学。我教你如何一键生成。

    做之前我们先要确定一个查找值,即唯一值(不重复),本例中利用工号进行查询。

    我们先将母表中的工号列剪切,移动到首列。

    然后如果母表列数特别多的小伙伴,建议像我这样,在首行插入空白行,填充一个横向的序号(后面方便填写参数)。

    在唯一值处,先输入一个工号(某些表格如果实在无法选取唯一值,你可以在表格打印区域外,选取一个单元格,输入1,就以母表的序号作为唯一值进行查询)。

    接下来将母表和需要填写的表格同时打开,在姓名的空格处,输入公式,=VLOOKUP($B$3,[信息母表.xlsx]Sheet1!$B:$U,6,0),注意引用区域的绝对引用,加上$符号,否则复制公式,函数增量又要发生查询错误。

    公式含义,表示以永远以B3的数值进行查询,查询范围永远是母表中的B列到U列,大家看,我设置的横向序号起作用了,姓名在第6列,输入6,然后0,回车搞定。

    将公式复制到性别列,看一眼母表中,性别在第7列,我们只需要将参数6改为7即可。

    同理,将所有的表格按照横向序号,对应修改之后,我们只要改动任意工号,所有的表格数据自动生成,直接点击打印即可,非常省事方便。

    今天的教学针对函数初学者,希望大家能看明白。再次强调母表(数据源)的重要性。母表科学登记,所有的表格都可以查找引用,只需微调数据,对付批量表格,简单快捷。

    好了,今天的技巧分享就到这里,拜拜,下课-。-

  • ?

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

    DD

    展开

    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年在中国设立研发中心,在全球化产品的研发过程中,不断适应中国市场的本地需求,并为软件企业和各行业的信息化提供优秀的软件工具和咨询服务。

  • ?

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

    曾有

    展开

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

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

    1、打开考勤系统

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

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

    出现如下的对话框

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

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

  • ?

    神奇的Excel平台!自动生成APP和软件,让普通人秒变程序员!

    妙风衫

    展开

    每个EXCEL、WPS达人和管理者,虽然不一定会编程,却都有一个编程梦,总希望把工作和管理进行批量化、智能化、协同处理,以提高效率,然而EXCEL功能是有限的,无论对EXCEL玩的多精通,软件的功能也很难实现。今天就给普通的你,分享一个类EXCEL平台的工具,可以像用EXCEL那样去搭建你想要的软件和APP。你也可以变成IT达人!

    你想不想用excel做一个,功能强大又好用的管理软件?

    用EXCEL的方式,搭建真正的软件系统,可行吗?

    我们说的真正的软件,必须得具备智能录入、数据校验、工作流程、多用户协同、数据共享、用户权限控制,三方软件对接、手机APP应用、拍照上传、统计查询、附件上传、组织架构管理……。等等,传统代码编程开发软件具有的功能,它都得有。

    那用EXCEL的方式可以做到么?肯定可以!但绝不是EXCEL和WPS,而是一款类EXCEL平台,云表!

    可以兼容EXCEL用法,比如自定义表单样式,拖拉拽的操作方式、导入导出EXCEL……等等,也就是说你只要会用EXCEL或WPS就能用云表。

    看一下上图:能不能发现,云表设计器界面与EXCEL界面有哪些差别?而且云表设计界面和EXCEL长得还挺像的,不过他们可没有血缘,顶多和WPS有点亲戚关系,云表开发团队源自金山系创业者,就是WPS团队出来的。而且,云表完全独立,不用安装WPS或EXCEL就能使用。

    会画表格就能快速搭建管理软件,请看有多方便!

    只需要用EXCEL的操作方式,把软件需要用的表单或界面样式画出来(只要你愿意,就能画得很漂亮),比如采购单、销售单、库存表、报表等基本表格样式,然后用中文公式(纯中文,会认字就能看懂)把表间关联配置好,设置好组织架构和用户并分配不同权限,还有设置好相应的业务流程和审批流程,再加上导航(也可以不要),那这个软件就完成,如果需要和已有软件比如财务软件等对接,也是可以的。

    一键自动生成APP,手机上随时随地使用!

    上面把软件功能搭建完成后,只需要在手机端安装云表APP并简单配置一下,另外在云表设计界面勾选适用手机APP,那这个功就可以在手机上使用了。是不是超级简单,整个过程,完全不用编程。

    云表做的手机APP

    说的可能比较笼统,可以到官网安装个软件做一遍就明白了。

  • ?

    Java文档的简要介绍和快速生成

    音乐的

    展开

    在开发中遇到问题,开发人员都是习惯性的去查阅相关手册,通俗来说就是注释文档。当我们在实际工作中封装了相关的函数方法,便于其他人使用则采用文档注释的方法。

    要达成这种效果其实蛮简单的,利用java有自带的工具javadoc

    先来写个小例子;

    写好相关的工具类,并写好注释(注意:类的修饰符要用public 使用最大权限。且private修饰的方法无法注释)

    @author 作者 @version 版本 @param 参数 @return 返回值

    2.打开cmd窗口,找到classs文件路径,并输入相关执行参数

    javadoc -d Mydoc -author -version ArrayTools.java (1.-d表示生成文件路径 2.Mydoc表示生成文档所在文件夹 3.-author作者 4.version版本 5.ArrayTools.java表示对该类进行文档注释)

    3.执行完成效果如下 打开index.html:

    这样完成后,其他开发人员想要使用你所写的方法就可以清晰的知道需要传哪些参数,返回什么值。当然这算是一种友好的行为。

  • ?

    几步教会你用EXCEL制定简易实用版「自动生成工资系统」工具

    将军

    展开

    EXCEL公式表格制定简易实用的【自动生成工资系统】管理工具

    本文的自动生成工资系统结合了公式:VLOOKUP、IF、IFERROR、INDEX、SMALL、OR、AND、ROW( )等函数以及数组、绝对引用、相对引用以及超链接等功能。(本文适用于有一定的EXCEL应用基础的人)

    关键点:

    【工资表】、【全部工资条】、【查询表】、【查询工资条】、【系统介绍说明】等条框上面的矢量图标须与对应的表格进行超链接。

    IFERROR函数的功能在于如果公式的计算结果为错误,则返回您指定的值;否则将返回公式的结果。作用与ISERROR与IF组合相类似。

    数组“大扩号”的输入是:选择须要输入的单元格范围,按Ctrl+Shirt键,再敲Enter键即可。

    第一步:建立一个EXCEL文档与表格,如下截图:

    共分建立以下六个表格:【首页】、【工资表】、【全部工资条】、【查询表】、【查询工资条】、【系统介绍说明】等。

    总共须建立的表格名称

    关键点:对应的表格顺序依上面截图排列。

    第二步:设定每张表的格式或内容样式,先在【工资表】逐项填写年月及员工工资信息;如下截图:

    【工资表】样式

    注意关键点:

    【工资表】的样式须与【工资条】的内容排列顺序完全一致。

    【全部工资条】中的自动生成全体员工的工资条,如下截图:

    【工资条】样式

    注意关键点:

    【全部工资条】的样式须与【查询工资条】的内容完全一样;

    如上截图,全部工资条前面增加“2018年3月工资”字样的目的在于打印工资条后便于纸档的裁切。

    【查询表】中,输入员工的姓名,可以查出该员工的工资条相关全部信息,如下截图:

    并在【查询工资条】表格中自动生成该员工的工资条;输入部门名称,则可以查出该部门所有员工的工资,并在【查询工资条】表格中自动生成该部门所有员工的工资条。

    【查询表】样式

    注意关键点:个人所得税计算一列,可以依实际扣税标准并套用IF函数。

    以上查询表正表显示的信息内容与工资料内容完全一样。

    第三步:公式输入与链接

    工资表公式链接,如下截图:

    【工资表】函数与公式

    注意关键点:

    上面A列平时在操作使用时可以隐藏;

    这列公式的目的与【查询表】信息匹配。此表须注意函数AND(与)与OR(或)的结合使用以及绝对引用与返回行函数ROW( )的运用。

    工资条公式链接,如下截图:

    【工资条】公式

    查询表公式链接,如下截图:

    【查询表】公式1【查询表】公式

    查询表第A列在平时操作时一般隐藏。

    第五步:制作完成效果显示,如下截图:

    查询表输入生产后效果图查询工资表效果图

    只要依以上步骤操作,则可以实现简易的工资管理工具的制定,前提是须对相关公式函数有初步的了解与应用。

  • ?

    一行代码完成Java的Excel读写

    颜藏花

    展开

    前段时间在 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

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

  • ?

    整理关于java写入内容到excel的例子供大家参考

    妙芙

    展开

    1POI jar简介

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

    2POI jar下载

    poi下载地址:https://apache.org/dyn/closer.lua/poi/release/bin/poi-bin-3.17-20170915.tar.gz

    下载之后把压缩包解压,然后在项目里面引用解压文件夹里面的jar

    3新建ReadExcelTest java project,引入poi相关jar

    4创建一个WriteExcel java类,编写代码,写入excel里面

    package test;

    import java.io.File;

    import java.io.FileInputStream;

    import java.io.FileOutputStream;

    import java.io.IOException;

    import java.io.OutputStream;

    import java.util.ArrayList;

    import java.util.HashMap;

    import java.util.List;

    import java.util.Map;

    import org.apache.poi.hssf.usermodel.HSSFWorkbook;

    import org.apache.poi.ss.usermodel.Cell;

    import org.apache.poi.ss.usermodel.Row;

    import org.apache.poi.ss.usermodel.Sheet;

    import org.apache.poi.ss.usermodel.Workbook;

    import org.apache.poi.xssf.usermodel.XSSFWorkbook;

    public class WriteExcel {

    private static final String EXCEL_XLS = "xls";

    private static final String EXCEL_XLSX = "xlsx";

    @SuppressWarnings("rawtypes")

    public static void writeExcel(List> dataList, int cloumnCount,

    String finalXlsxPath) {

    OutputStream out = null;

    try {

    // 获取总列数

    int columnNumCount = cloumnCount;

    // 读取Excel文档

    File finalXlsxFile = new File(finalXlsxPath);

    Workbook workBook = getWorkbok(finalXlsxFile);

    // sheet 对应一个工作页

    Sheet sheet = workBook.getSheetAt(0);

    /**

    * 删除原有数据,除了属性列

    */

    int rowNumber = sheet.getLastRowNum(); // 第一行从0开始算

    System.out.println("原始数据总行数,除属性列:" + rowNumber);

    for (int i = 1; i <= rowNumber; i++) {

    Row row = sheet.getRow(i);

    sheet.removeRow(row);

    }

    // 创建文件输出流,输出电子表格:这个必须有,否则你在sheet上做的任何操作都不会有效

    out = new FileOutputStream(finalXlsxPath);

    workBook.write(out);

    * 往Excel中写新数据

    for (int j = 0; j < dataList.size(); j++) {

    // 创建一行:从第二行开始,跳过属性列

    Row row = sheet.createRow(j + 1);

    // 得到要插入的每一条记录

    Map dataMap = dataList.get(j);

    String name = dataMap.get("title_id").toString();

    String address = dataMap.get("title_name").toString();

    String phone = dataMap.get("title_name_en").toString();

    for (int k = 0; k <= columnNumCount; k++) {

    // 在一行内循环

    Cell first = row.createCell(0);

    first.setCellValue(name);

    Cell second = row.createCell(1);

    second.setCellValue(address);

    Cell third = row.createCell(2);

    third.setCellValue(phone);

    // 创建文件输出流,准备输出电子表格:这个必须有,否则你在sheet上做的任何操作都不会有效

    } catch (Exception e) {

    e.printStackTrace();

    } finally {

    if (out != null) {

    out.flush();

    out.close();

    } catch (IOException e) {

    System.out.println("数据汇入成功");

    * 判断Excel的版本,获取Workbook

    *

    * @param in

    * @param filename

    * @return

    * @throws IOException

    public static Workbook getWorkbok(File file) throws IOException {

    Workbook wb = null;

    FileInputStream in = new FileInputStream(file);

    if (file.getName().endsWith(EXCEL_XLS)) { // Excel 2003

    wb = new HSSFWorkbook(in);

    } else if (file.getName().endsWith(EXCEL_XLSX)) { // Excel 2007/2010

    wb = new XSSFWorkbook(in);

    return wb;

    * @param args

    public static void main(String[] args) {

    List> mapList = new ArrayList>();

    for(int k=0; k<100;k++){

    Map map = new HashMap();

    map.put("title_id", "title_id"+k);

    map.put("title_name", "title_name"+k);

    map.put("title_name_en", "title_name_en"+k);

    mapList.add(map);

    writeExcel(mapList, mapList.size(), "D:/360bizhi/readExcel.xlsx");

    5运行main进行测试,查看写入结果

    写入结果和预期是一样的,说明写入成功

    请大家多多关注我的头条号,谢谢大家

  • ?

    Java使用Apache POI导出Excel

    Gerald

    展开

    一.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表

    Zang

    展开

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

    Java导出Excel表

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

    上传文件必须是post方法

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

    Java导出Excel表

    去maven工厂下载 POI jar包

  • java怎么生成excel