Java后台生成Excel表格
Java后台生成Excel表格
- 功能简述
- 需求
- 目标
- 实现
- 1.首先在项目中导入jxl相关jar包,并引入
- 2.编写代码
- 3.结果
- 后记
功能简述
由于公司业务需求,我需要实现一个完全通过Java后台导出一个特定的Excel表格功能,为此查阅了相关资料和浏览文章。最终选定使用jxl来实现此功能。
需求
图片内黑色字体部分是写死的,黄色部分是需要数据能自由填充的。
目标
由于保密这里只实现一个demo,直接将生成的Excel文档放到指定的文件夹中。有需要的朋友,可以参考代码实现相关功能。
实现
1.首先在项目中导入jxl相关jar包,并引入
需要jar包的自行在网上搜索,或者联系我vx:yangyun1719
2.编写代码
这里仅实现了一个demo,供需要的朋友参考。由于Excel相关的东西太过麻烦。需要自定义特定表格的时候,尤为麻烦。需要首先理清思路,哪里需要合并单元格,哪里需要设置单元格样式,都需要特别小心。具体实现请参考我的代码,和网上其他文字。或者去找jxl官方文档。
import jxl.CellView;
import jxl.Workbook;
import jxl.format.Alignment;
import jxl.format.Colour;
import jxl.format.VerticalAlignment;
import jxl.write.*;import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;/*** 导出Excel类** @date 2021/6/24 14:20*/
@SuppressWarnings("ALL")
public class testExportExcel {/*** Excel文件输出路径*/private static String filePath = "C:\\Users\\yangyun.LAPTOP-32A3VL6P\\Desktop\\Excel文件测试";/*** Excel文件名*/private static String fileName = "测试导出Excel文件.xlsx";public static void main(String[] args) throws Exception {exportExcel(filePath, System.currentTimeMillis() + fileName);}/*** 导出Excel** @param filePath 文件路径* @param fileName 文件名* @return void* @date 2021/6/24 14:24* @author yangyun*/private static void exportExcel(String filePath, String fileName) throws Exception {File file = new File(filePath, fileName);OutputStream outputStream = new FileOutputStream(file);WritableSheet sheet = null;WritableWorkbook workbook = Workbook.createWorkbook(outputStream);CellView cellView = new CellView();cellView.setAutosize(true);// 字体样式WritableFont font = new WritableFont(WritableFont.createFont("宋体"), 12, WritableFont.BOLD);WritableCellFormat wcf = new WritableCellFormat(font);wcf.setBackground(Colour.GRAY_25);wcf.setVerticalAlignment(VerticalAlignment.CENTRE);wcf.setAlignment(Alignment.CENTRE);wcf.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THIN, jxl.format.Colour.GRAY_50);// 加边框及居中对齐-内容(常规、居左)WritableFont fontBorder = new WritableFont(WritableFont.createFont("宋体"), 12, WritableFont.NO_BOLD);WritableCellFormat wcfBorder = new WritableCellFormat(fontBorder);wcfBorder.setVerticalAlignment(VerticalAlignment.CENTRE);wcfBorder.setAlignment(Alignment.LEFT);wcfBorder.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.MEDIUM, jxl.format.Colour.GRAY_50);// 加边框及居中对齐-表头(加粗、居中)WritableFont fontBorderBt = new WritableFont(WritableFont.createFont("宋体"), 12, WritableFont.BOLD);WritableCellFormat wcfBorderBt = new WritableCellFormat(fontBorderBt);wcfBorderBt.setVerticalAlignment(VerticalAlignment.CENTRE);wcfBorderBt.setAlignment(Alignment.CENTRE);wcfBorderBt.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.MEDIUM, jxl.format.Colour.GRAY_50);if (workbook != null) {sheet = workbook.createSheet("sheet1", 0);// 设置每列宽度sheet.setColumnView(0, 30);sheet.setColumnView(1, 10);sheet.setColumnView(2, 20);sheet.setColumnView(3, 20);sheet.setColumnView(4, 30);sheet.setColumnView(5, 10);sheet.setColumnView(6, 20);sheet.setColumnView(7, 20);// 合并单元格// 前两个参数 起点列、行,列和行均从左上角从0开始计数// 后两个参数 重点列、行sheet.mergeCells(0, 0, 7, 2);// 添加数据参数分别为:列、行、数据、格式设置sheet.addCell(new Label(0, 0, "资产负债表", wcf));sheet.addCell(new Label(0, 3, "公司名称:xxx"));// 表头sheet.addCell(new Label(0, 4, "项目", wcfBorderBt));sheet.addCell(new Label(1, 4, "附注", wcfBorderBt));sheet.addCell(new Label(2, 4, "期末余额", wcfBorderBt));sheet.addCell(new Label(3, 4, "期初余额", wcfBorderBt));sheet.addCell(new Label(4, 4, "项目", wcfBorderBt));sheet.addCell(new Label(5, 4, "附注", wcfBorderBt));sheet.addCell(new Label(6, 4, "期末余额", wcfBorderBt));sheet.addCell(new Label(7, 4, "期初余额", wcfBorderBt));// 第1行sheet.addCell(new Label(0, 5, "油气资产", wcfBorder));sheet.addCell(new Label(1, 5, "", wcfBorder));sheet.addCell(new Label(2, 5, "", wcfBorder));sheet.addCell(new Label(3, 5, "", wcfBorder));sheet.addCell(new Label(4, 5, "非流动负债合计", wcfBorder));sheet.addCell(new Label(5, 5, "", wcfBorder));sheet.addCell(new Label(6, 5, "", wcfBorder));sheet.addCell(new Label(7, 5, "", wcfBorder));// 第2行sheet.addCell(new Label(0, 6, "无形资产", wcfBorder));sheet.addCell(new Label(1, 6, "", wcfBorder));sheet.addCell(new Label(2, 6, "", wcfBorder));sheet.addCell(new Label(3, 6, "", wcfBorder));sheet.addCell(new Label(4, 6, "负债合计", wcfBorder));sheet.addCell(new Label(5, 6, "", wcfBorder));sheet.addCell(new Label(6, 6, "", wcfBorder));sheet.addCell(new Label(7, 6, "", wcfBorder));// 第3行sheet.addCell(new Label(0, 7, "开发支出", wcfBorder));sheet.addCell(new Label(1, 7, "", wcfBorder));sheet.addCell(new Label(2, 7, "", wcfBorder));sheet.addCell(new Label(3, 7, "", wcfBorder));sheet.addCell(new Label(4, 7, "所有者权益(或股东权益):", wcfBorder));sheet.addCell(new Label(5, 7, "", wcfBorder));sheet.addCell(new Label(6, 7, "", wcfBorder));sheet.addCell(new Label(7, 7, "", wcfBorder));// 第4行sheet.addCell(new Label(0, 8, "商誉", wcfBorder));sheet.addCell(new Label(1, 8, "", wcfBorder));sheet.addCell(new Label(2, 8, "", wcfBorder));sheet.addCell(new Label(3, 8, "", wcfBorder));sheet.addCell(new Label(4, 8, " 实收资本(或股本)", wcfBorder));sheet.addCell(new Label(5, 8, "", wcfBorder));sheet.addCell(new Label(6, 8, "", wcfBorder));sheet.addCell(new Label(7, 8, "", wcfBorder));// 第5行sheet.addCell(new Label(0, 9, "长期待摊费用", wcfBorder));sheet.addCell(new Label(1, 9, "", wcfBorder));sheet.addCell(new Label(2, 9, "", wcfBorder));sheet.addCell(new Label(3, 9, "", wcfBorder));sheet.addCell(new Label(4, 9, " 其他权益工具", wcfBorder));sheet.addCell(new Label(5, 9, "", wcfBorder));sheet.addCell(new Label(6, 9, "", wcfBorder));sheet.addCell(new Label(7, 9, "", wcfBorder));// 第6行sheet.addCell(new Label(0, 10, "递延所得税资产", wcfBorder));sheet.addCell(new Label(1, 10, "", wcfBorder));sheet.addCell(new Label(2, 10, "", wcfBorder));sheet.addCell(new Label(3, 10, "", wcfBorder));sheet.addCell(new Label(4, 10, " 其中:优先股", wcfBorder));sheet.addCell(new Label(5, 10, "", wcfBorder));sheet.addCell(new Label(6, 10, "", wcfBorder));sheet.addCell(new Label(7, 10, "", wcfBorder));// 第7行sheet.addCell(new Label(0, 11, "其他非流动资产", wcfBorder));sheet.addCell(new Label(1, 11, "", wcfBorder));sheet.addCell(new Label(2, 11, "", wcfBorder));sheet.addCell(new Label(3, 11, "", wcfBorder));sheet.addCell(new Label(4, 11, " 永续股", wcfBorder));sheet.addCell(new Label(5, 11, "", wcfBorder));sheet.addCell(new Label(6, 11, "", wcfBorder));sheet.addCell(new Label(7, 11, "", wcfBorder));// 第8行sheet.addCell(new Label(0, 12, "", wcfBorder));sheet.addCell(new Label(1, 12, "", wcfBorder));sheet.addCell(new Label(2, 12, "", wcfBorder));sheet.addCell(new Label(3, 12, "", wcfBorder));sheet.addCell(new Label(4, 12, "资本公积", wcfBorder));sheet.addCell(new Label(5, 12, "", wcfBorder));sheet.addCell(new Label(6, 12, "", wcfBorder));sheet.addCell(new Label(7, 12, "", wcfBorder));// 第9行sheet.addCell(new Label(0, 13, "", wcfBorder));sheet.addCell(new Label(1, 13, "", wcfBorder));sheet.addCell(new Label(2, 13, "", wcfBorder));sheet.addCell(new Label(3, 13, "", wcfBorder));sheet.addCell(new Label(4, 13, "减,库存股", wcfBorder));sheet.addCell(new Label(5, 13, "", wcfBorder));sheet.addCell(new Label(6, 13, "", wcfBorder));sheet.addCell(new Label(7, 13, "", wcfBorder));// 第10行sheet.addCell(new Label(0, 14, "", wcfBorder));sheet.addCell(new Label(1, 14, "", wcfBorder));sheet.addCell(new Label(2, 14, "", wcfBorder));sheet.addCell(new Label(3, 14, "", wcfBorder));sheet.addCell(new Label(4, 14, "其他综合收益", wcfBorder));sheet.addCell(new Label(5, 14, "", wcfBorder));sheet.addCell(new Label(6, 14, "", wcfBorder));sheet.addCell(new Label(7, 14, "", wcfBorder));// 第11行sheet.addCell(new Label(0, 15, "", wcfBorder));sheet.addCell(new Label(1, 15, "", wcfBorder));sheet.addCell(new Label(2, 15, "", wcfBorder));sheet.addCell(new Label(3, 15, "", wcfBorder));sheet.addCell(new Label(4, 15, "盈余公积", wcfBorder));sheet.addCell(new Label(5, 15, "", wcfBorder));sheet.addCell(new Label(6, 15, "", wcfBorder));sheet.addCell(new Label(7, 15, "", wcfBorder));// 第12行sheet.addCell(new Label(0, 16, "", wcfBorder));sheet.addCell(new Label(1, 16, "", wcfBorder));sheet.addCell(new Label(2, 16, "", wcfBorder));sheet.addCell(new Label(3, 16, "", wcfBorder));sheet.addCell(new Label(4, 16, "未分配利润", wcfBorder));sheet.addCell(new Label(5, 16, "", wcfBorder));sheet.addCell(new Label(6, 16, "", wcfBorder));sheet.addCell(new Label(7, 16, "", wcfBorder));// 第13行sheet.addCell(new Label(0, 17, "非流动资产合计", wcfBorderBt));sheet.addCell(new Label(1, 17, "", wcfBorder));sheet.addCell(new Label(2, 17, "", wcfBorder));sheet.addCell(new Label(3, 17, "", wcfBorder));sheet.addCell(new Label(4, 17, "所有权益合计", wcfBorderBt));sheet.addCell(new Label(5, 17, "", wcfBorder));sheet.addCell(new Label(6, 17, "", wcfBorder));sheet.addCell(new Label(7, 17, "", wcfBorder));// 第14行sheet.addCell(new Label(0, 18, "资产总计", wcfBorderBt));sheet.addCell(new Label(1, 18, "", wcfBorder));sheet.addCell(new Label(2, 18, "", wcfBorder));sheet.addCell(new Label(3, 18, "", wcfBorder));sheet.addCell(new Label(4, 18, "负载和所有权益总计", wcfBorderBt));sheet.addCell(new Label(5, 18, "", wcfBorder));sheet.addCell(new Label(6, 18, "", wcfBorder));sheet.addCell(new Label(7, 18, "", wcfBorder));// 最后一行sheet.addCell(new Label(0, 18, "法定代表人:"));sheet.addCell(new Label(1, 18, ""));sheet.addCell(new Label(2, 18, ""));sheet.addCell(new Label(3, 18, "主管会计工作负责人:"));sheet.addCell(new Label(4, 18, ""));sheet.addCell(new Label(5, 18, ""));sheet.addCell(new Label(6, 18, "会计机构负责人:"));sheet.addCell(new Label(7, 18, ""));}workbook.write();workbook.close();}}
3.结果
后记
编写业务代码,是进公司以后必然面临的事情。有的人只研究技术部面向业务,有的人只钻研业务不懂技术。殊不知业务驱动技术,技术实现业务。无论你用的什么技术,对客户来说,最终实现了客户需求才是最好的技术。做我们这行的,很累,加班是常有之事,有时候会很迷茫,这也正常。新的技术不断更新迭代,心态包容,能接收新鲜事物会让我们更有动力。另外建议初入行的朋友培养点业余爱好,每天跟电脑打交道,难免会让我们在社交方面有所缺,尤其是夜深人静,如何自处是当代程序员面临的共同难题。如果有个爱好陪着自己度过无聊岁月,未尝不是一种幸运。
Java后台生成Excel表格相关推荐
- java后台导出Excel表格
引言 java后台导出表格一般分两种:注解配置(@Excel)导出和自定义导出 注解配置(@Excel)导出 添加poi依赖 <dependency><groupId>cn.a ...
- java后台生成的Excel文件并通过浏览器下载
java后台生成Excel文件需要引入poi, 以下是poi的pom可以引入自己的项目里面去 <dependency><groupId>org.apache.poi</g ...
- java使用jxl生成excel表格,jsp使用js下载excel文件xls
java使用jxl生成excel表格,jsp使用js下载excel文件 后端代码 maven jar包 主体代码逻辑 引入的jar包 具体代码段 重点详解 表头和表格内容两种格式 直接将 HttpSe ...
- Java自定义导出列_后台生成EXCEL文档,自定义列
后台生成EXCEL文档,自定义列 //response输出流处理 //设置编码.类型.文件名 getResponse().reset(); getResponse().setCharacterEnco ...
- java实现这个无表头空表格,《java程序导出excel表格是空白的没有数据?》 java怎么导入数据库...
java程序导出excel表格是空白的没有数据? 看一下是否可以链接上数据库,或者查看一下链接的数据库是否有数据 java从数据库中导出excel poi 建议你使用pageoffice. java ...
- java poi导出Excel表格超大数据量解决方案
Java实现导出excel表格功能,大部分都会使用apache poi,apache poi API 地址 POI之前的版本不支持大数据量处理,如果数据过多则经常报OOM错误,有时候调整JVM大小效果 ...
- java 导入导出excel表格
java 导入导出excel表格 业务上有需求上传excel表格并读取内容,本文记录一下该方法 表格导入 引入相应的工具包 <dependency><groupId>cn.af ...
- java table数据转excel,excel将数据转化成表格-如何将java数据转换成Excel表格
excel 怎么把三列数据转换成一张表? 1.打开 OCR识别软然后单击"打开图像/PDF-"按钮 2弹出的"打开图窗口中,选择需要的扫描文件, 3.然后单击" ...
- linux qt写入excel文件内容,Qt 读取Excel表格数据 生成Excel表格并写入数据
Qt 读取Excel表格数据 生成Excel表格并写入数据 Qt 读取Excel表格数据 生成Excel表格并写入数据 修改.pro文件,增加 axcontainer QT += axcontaine ...
最新文章
- 浅读设计模式 - 1
- AutoMapper在MVC中的运用小结
- node.js学习笔记14—微型社交网站
- 一文汇总 JDK 5 到 JDK 15 中的牛逼功能!
- 京东抄袭源码;腾讯回应裁员;新 iPad Pro 十月发布 ​| 极客头条
- using matlab drawing line graph for latex
- 阿里云物联网平台体验(NetGadgeteer+C#篇)
- 六轴传感器—姿态检测(MPU6050、LSM6DS3)
- 揭露SAP培训机构的套路
- CNZZ异步统计代码
- php 获取用户是否关注微信公众号
- 如何计算CRC校验码(循环冗余检验码)
- Commander入门
- ls -l 字段意思
- Python单元测试unittest测试框架
- Developing Backbone.js Applications
- java学生管理系统无界面 jdbc增删查改
- 纸牌游戏c语言 翻牌游戏,纸牌游戏.doc
- 操作系统学习笔记:操作系统的硬件环境
- 《浪潮之巅》笔记之五
热门文章
- 【番杰的小技巧笔记】如何通过嘉立创免费3D打印
- Ext Fieldset
- Tcl-2.常用列表操作命令
- 使用memory analyzer分析堆栈内存优化poi excel导入方法
- 基于多向梯度局部对比度的红外弱小目标检测算法(MDWCM)解析及代码(2021年IEEE GRSL 论文)
- linux 系统如何ping通外网
- 分布式系统之CAP原理
- spring运行报错--org.xml.sax.SAXParseException; lineNumber: 6; columnNumber: 73; cvc-elt.1: 找不到元素 bean的声明
- Linux上SVN的搭建使用(ab****43ab****43)
- 什么是办公升降台,升降台的作用是什么