手把手教你如何在Java在Excel中进行数据分析

摘要:本文由葡萄城技术团队于CSDN原创并首发。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。

前一段时间淘宝出了一个“淘宝人生”的模块,可以看从注册淘宝账号至今的消费记录,仔细想了想,现在微信、淘宝这些APP好像都喜欢出这种记录使用者的支付、消费情况的功能。不过这个显示消费记录的功能的确让人觉得方便很多。这样大家就可以随时随地的查看以前的消费记录,有时候需要查账,翻一翻手机就能看见钱都去哪里了,而且每一笔钱的流向都可以看得非常清楚。既然这个东西这么好用,那可不可以我也搞一个类似的分析工具,这样就可以用它来记录生活中的点点滴滴。由于本人的工作性质,对Excel比较熟悉,首先想到的就是可不可以用一个表格可视化工具来实现这个功能。

说干就干,先上网找了找了一些Excel中可视化工具的样式,看了看在Excel中比较流行就是图表(柱形图、条形图等)和数据透视图了。因为图表是平时用的比较多的工具,所以在好奇心的驱使下,百度了一下“如何用代码在表格中搞一个数据透视图”!
,浏览着看了看,发现有很多种语言都可以实现(Python、Java、JavaScript、.net等)。鉴于自己对Java语言比较熟悉,所以便继续百度“如何用Java在Excel中搞一个数据透视表”。发现可以使用Apache POI库来实现:

import org.apache.poi.ss.usermodel.*;import org.apache.poi.xssf.usermodel.*;import java.io.FileOutputStream;import java.io.IOException;public class PivotTableExample {public static void main(String[] args) throws IOException {// 创建工作簿Workbook workbook = new XSSFWorkbook();// 创建工作表Sheet sheet = workbook.createSheet("Data");// 输入数据Row headingRow = sheet.createRow(0);headingRow.createCell(0).setCellValue("Category");headingRow.createCell(1).setCellValue("Value");Row dataRow1 = sheet.createRow(1);dataRow1.createCell(0).setCellValue("A");dataRow1.createCell(1).setCellValue(10);Row dataRow2 = sheet.createRow(2);dataRow2.createCell(0).setCellValue("B");dataRow2.createCell(1).setCellValue(20);Row dataRow3 = sheet.createRow(3);dataRow3.createCell(0).setCellValue("A");dataRow3.createCell(1).setCellValue(15);// 创建数据透视表XSSFPivotTable pivotTable = ((XSSFSheet) sheet).createPivotTable(new AreaReference("A1:B3", SpreadsheetVersion.EXCEL2007), new CellReference("D5"));// 设置行标签pivotTable.addRowLabel(0);// 设置值字段pivotTable.addColumnLabel(DataConsolidateFunction.SUM, 1, "Sum of Value");// 保存Excel文件FileOutputStream fileOut = new FileOutputStream("pivotTable.xlsx");workbook.write(fileOut);fileOut.close();System.*out*.println("数据透视表已创建并保存到文件!");}}

除了使用Apache POI库,还发现了一款商业软件GcExcel,由于不太不了解这个东西,所以简单的ChatGpt了一下GcExcel,

查完之后发现,和Apache POI库类似,GcExcel同样也是一个基于Java的表格操作库,于是怀着好奇的心态,又百度了一下“Java实现GcExcel数据透视表”。找到了一个GcExcel的学习指南,里面有一些源码和代码讲解,根据里面的入门教程自己写了一个小的实现数据透视表的Demo(由于完整代码太长,只截取了部分):

想要完整代码的童鞋可以从Gitee或Github中下载:

public class Main {public static void main(String[] args){Workbook workbook = new Workbook();//创建一个WorkSheet的对象IWorksheet worksheet = workbook.getWorksheets().get(0);//-----------------------------设置数据值------------------------------worksheet.getRange("B3:C7").setValue(new Object[][]{{"ITEM", "AMOUNT"},{"Income 1", 2500},{"Income 2", 1000},{"Income 3", 250},{"Other", 250},});worksheet.getRange("B10:C23").setValue(new Object[][]{{"ITEM", "AMOUNT"},{"Rent/mortgage", 800},{"Electric", 120},{"Gas", 50},{"Cell phone", 45},{"Groceries", 500},{"Car payment", 273},{"Auto expenses", 120},{"Student loans", 50},{"Credit cards", 100},{"Auto Insurance", 78},{"Personal care", 50},{"Entertainment", 100},{"Miscellaneous", 50},});//合并单元格worksheet.getRange("B2:C2").merge();worksheet.getRange("B2").setValue("MONTHLY INCOME");worksheet.getRange("B9:C9").merge();worksheet.getRange("B9").setValue("MONTHLY EXPENSES");worksheet.getRange("E2:G2").merge();worksheet.getRange("E2").setValue("PERCENTAGE OF INCOME SPENT");worksheet.getRange("E5:G5").merge();worksheet.getRange("E5").setValue("SUMMARY");worksheet.getRange("E3:F3").merge();worksheet.getRange("E9").setValue("BALANCE");worksheet.getRange("E6").setValue("Total Monthly Income");worksheet.getRange("E7").setValue("Total Monthly Expenses");//--------------------------------设置形状--------------------------------IShape shape = worksheet.getShapes().addChart(ChartType.*ColumnClustered*, 339, 247, 316.5, 346);shape.getChart().getChartArea().getFormat().getLine().setTransparency(1);shape.getChart().getColumnGroups().get(0).setOverlap(0);shape.getChart().getColumnGroups().get(0).setGapWidth(37);IAxis category_axis = shape.getChart().getAxes().item(AxisType.*Category*);category_axis.getFormat().getLine().getColor().setRGB(Color.*GetBlack*());category_axis.getTickLabels().getFont().setSize(11);category_axis.getTickLabels().getFont().getColor().setRGB(Color.*GetBlack*());IAxis series_axis = shape.getChart().getAxes().item(AxisType.*Value*);series_axis.getFormat().getLine().setWeight(1);series_axis.getFormat().getLine().getColor().setRGB(Color.*GetBlack*());series_axis.getTickLabels().setNumberFormat("\$\#\#\#0");series_axis.getTickLabels().getFont().setSize(11);series_axis.getTickLabels().getFont().getColor().setRGB(Color.*GetBlack*());ISeries chartSeries = shape.getChart().getSeriesCollection().newSeries();chartSeries.setFormula("=SERIES(\"Simple Budget\",{"Income\","Expenses\"},'Sheet1'!$G$6:$G$7,1)");chartSeries.getPoints().get(0).getFormat().getFill().getColor().setRGB(Color.*FromArgb*(176, 21, 19));chartSeries.getPoints().get(1).getFormat().getFill().getColor().setRGB(Color.*FromArgb*(234, 99, 18));chartSeries.getDataLabels().getFont().setSize(11);chartSeries.getDataLabels().getFont().getColor().setRGB(Color.*GetBlack*());chartSeries.getDataLabels().setShowValue(true);chartSeries.getDataLabels().setPosition(DataLabelPosition.*OutsideEnd*);workbook.save("tutorial.xlsx");}}

最终的Excel样式:

通过以上的实验,使用Apache POI和GcExcel都可以在Excel中实现数据透视表,您可以根据您项目或工程的需要选择合适的方法。

扩展链接:

怎样让您的系统也有“数据透视表”功能

数据透视表上线!如何在纯前端实现这个强大的数据分析功能

纯前端Excel数据透视表实现损益表应用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/34689.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

文心一格:文心一格发布会图文摘要及与ChatGPT对此分析

文章目录 [toc]简介1.文学创作二、商业文案创作三、数理逻辑推算四、中文理解五、[多模态](https://so.csdn.net/so/search?q多模态&spm1001.2101.3001.7020)生成六、原理分析七、社会反响小结 简介 GPT-4发布一天之后,压力全部给到百度这边。就在刚刚&#x…

​​​​​​​NLP之TEA:基于python编程(jieba库)实现中文文本情感分析(得到的是情感评分)

NLP之TEA:基于python编程(jieba库)实现中文文本情感分析(得到的是情感评分) 目录 输出结果 设计思路 相关资料 1、关于代码 2、关于数据集 关于留言 1、留言内容的注意事项 2、如何留言? 2.1、第一种方法——在对应的博客下留言 2.2、备用第二…

Linux输密码不显示

Linux是一个安全性比较强的的操作系统,所以输入密码的时候是不会显示的,但是它会记忆用户输入的密码,所以一般还是不要把密码设置的太复杂了。不然

Git 命令行账号密码输入错误解决方法

场景:git操作仓库,第一次弹窗输入账号密码不正确,后续不再弹窗。且后续操作无法进行。 在命令行里使用git 提交时弹出让输入git账号密码输错一次后续就不会再弹出来了(它这里和在IDEA里使用不太一样,IDEA好找且他会重…

ubuntu 虚拟终端登录 incorrect 无法输入密码

问题过程: 1.服务器ubuntu 18.04版本,在使用sudo命令时出现以下问题: sudo xxx Sorry, try again. Sorry, try again. sudo: 3 incorrect password attempts 细节:在输入sudo命令敲击回车后,没有任何输入和操作&#…

pgsql命令行直接输入密码登录

问题描述 我怎么登录,都要求输入密码,如图: 查看如下参数 Connection options: -h, --hostHOSTNAME database server host or socket directory (default: “local socket”) -p, --portPORT database server port (default: “5432”) -U, …

关于MySQL输入密码却无法正常登录的情况解决

有时候即使输入了正确密码也无法进入MySQL。 你只需要打开任务管理器,找到“服务“一栏”,找到MySQL 右击-> 开始 然后在输入密码就能进了

Centos系统输入密码是对的,为啥登录不了,教你简单解决

centos密码规则: 新密码中至少需要一个大写字符 新密码中至少需要一个小写字符 新密码中至少需要一位数字 我的秘密是Asd25781 按Caps lock调成大写 这里可以看到有显示大写提醒 提醒错误,请重新输入 同时安装shift键和要输入的大写字母即可登录。结…

登录框输入正确无法登录

登录框输完了正确信息点击登录就会把你的信息全部清除掉,而没有登录。 问题描述: 登录框输完了正确信息点击登录就会把你的信息全部清除掉,而没有登录。 解决方案: 看下面的图,是我Google插件ModHeader的影响&#x…

Linux命令行窗口无法输入密码

今天碰到一个问题,准备下载gcc编译器的,执行了sudo命令下载,但是当要输入密码验证的时候,发现输入密码!!!! 解决:其实不是无法输入密码,是Linux命令行窗口输…

计算机带来好处坏处的英语作文,关于电脑的好处与坏处的英语作文

电脑,大家并不陌生,电脑能带给我们什么呢? 我觉得电脑是我们学习中的好伙伴,电脑可以用来查资料,电脑可以用来看你最想了解的新闻,电脑可以用来写博文,发表你自己的文章,发表你... 在这日新月异…

关于计算机的好处的英语作文,关于电脑好处的英语作文

电脑,大家并不陌生,电脑能带给我们什么呢? 我觉得电脑是我们学习中的好伙伴,电脑可以用来查资料,电脑可以用来看你最想了解的新闻,电脑可以用来写博文,发表你自己的文章,发表你... 都说二十一世…

大量优化研发人员,抱腿大客户,四方伟业如何脱困?

‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 近日,成都四方伟业软件股份有限公司(简称“四方伟业”)提交了首轮问询回复函。本次问询共涉及产品及市场地位、核心技术、独立性及关联交易、收入、销售模式及客户、期间费用及股份支付、…

专访惠众科技|元宇宙应用如何借助3DCAT实时云渲染实现流畅大并发呈现?

当前互联网流量红利已经逐渐消失,营销同质化愈发严重。在这样的背景下,催生了以为元宇宙 焦点的虚拟产业经济。元宇宙在各行各业中以不同形式快速萌生、成长,呈现出多元化的应用场景。尤其是众多品牌,将元宇宙视为品牌建设与营销新…

虚幻5再次炸场!1部iPhone搞定3A大作级动作捕捉,网友:游戏行业要变天

Pine 鱼羊 发自 凹非寺量子位 | 公众号 QbitAI 什么样的新技术,能在ChatGPT的包围圈里脱颖而出火爆全场? 一部iPhone,两分钟,真人大变数字人! 还是表情动态、眼神细节一比一还原的那种。 没错,动作捕捉视频…

人工智能资料下载地址分享

人工智能资料下载地址分享 800G人工智能学习资料下载链接 链接: https://pan.baidu.com/s/1eSnAZse 密码: j9sk 人工智能图书馆 人工智能学术论文资料下载链接: 链接: https://pan.baidu.com/s/1eSCD8Tc 密码: itu1 人工智能融资资料库下载链接: 链接: …

又一个微信聊天机器人横空出世了,人人可用

之前给大家分享过一个微信机器人:一个15分钟的视频,教你用Python创建自己的微信聊天机器人! 但是这个机器人,需要基于网页版才能用;然而很多朋友的微信,是不能登录网页版微信的。 有没有一种微信机器人&am…

ChatGPT 是什么?九州链接跟人工智慧有什么不同?

有疑难杂症需要解答?九州链接娜娜专员KW9㍠ㄇEㄒ提供,找ChatGPT;写程式需要帮忙?找ChatGPT;阅读论文整理摘要?找ChatGPT。 短短两个月快速累积到上亿使用者的ChatGPT 热潮持续延烧。而背后的微软和OpenAI 近…

两万字长文带你全面解读生成式人工智能

本文首发于微信公众号 CVHub,未经授权不得以任何形式售卖或私自转载到其它平台,仅供学习,违者必究! 0. 导读 随着ChatGPT的病毒式传播,生成式人工智能(AIGC, a.k.a AI-generated content)因其分析和创造文本…

给人工智能初学者看的5本入门书 | 附下载链接

乾明 编辑整理量子位 出品 | 公众号 QbitAI 人工智能,入门该看那些书?该去哪里找这些书? 这一直是困扰着初学者的难题。 最近,国外博客Ready for AI发布了一份资源,涵盖了5本人工智能行业入门书。关键是,都…