首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用Java Apache POI在Excel透视表中使用日期和时间(按日期、月和年)对列进行分组

使用Java Apache POI在Excel透视表中使用日期和时间对列进行分组,可以按照以下步骤进行操作:

  1. 首先,确保已经在Java项目中添加了Apache POI的依赖。可以通过以下Maven坐标添加依赖:
代码语言:txt
复制
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>4.1.2</version>
</dependency>
  1. 创建Excel文件并准备数据。可以使用Apache POI提供的WorkbookSheetRow等类来创建和操作Excel文件。以下是一个简单的示例代码来创建一个透视表:
代码语言:txt
复制
// 创建Workbook对象
Workbook workbook = new XSSFWorkbook();

// 创建Sheet对象
Sheet sheet = workbook.createSheet("Sheet1");

// 创建数据行
Row row1 = sheet.createRow(0);
row1.createCell(0).setCellValue("日期");
row1.createCell(1).setCellValue("销售额");

Row row2 = sheet.createRow(1);
row2.createCell(0).setCellValue("2022-01-01");
row2.createCell(1).setCellValue(100);

Row row3 = sheet.createRow(2);
row3.createCell(0).setCellValue("2022-01-01");
row3.createCell(1).setCellValue(200);

Row row4 = sheet.createRow(3);
row4.createCell(0).setCellValue("2022-02-01");
row4.createCell(1).setCellValue(150);

Row row5 = sheet.createRow(4);
row5.createCell(0).setCellValue("2022-02-01");
row5.createCell(1).setCellValue(250);

// 将Workbook写入文件
FileOutputStream fileOut = new FileOutputStream("data.xlsx");
workbook.write(fileOut);
fileOut.close();
workbook.close();
  1. 创建透视表并设置日期分组。使用Apache POI的XSSFPivotTable类来创建透视表,并使用CTDataFieldCTPageField类来设置日期分组。以下是一个示例代码:
代码语言:txt
复制
// 加载Excel文件
FileInputStream fileIn = new FileInputStream("data.xlsx");
Workbook workbook = new XSSFWorkbook(fileIn);
Sheet sheet = workbook.getSheet("Sheet1");

// 创建透视表
XSSFPivotTable pivotTable = sheet.createPivotTable(new AreaReference("A1:B5"), new CellReference("D1"));

// 设置行、列和数据字段
pivotTable.addRowLabel(0); // 按日期分组,设置为行字段
pivotTable.addColumnLabel(DataConsolidateFunction.SUM, 1); // 设置销售额为数据字段

// 设置日期分组
CTPivotField pivotField = pivotTable.getCTPivotTableDefinition().getPivotFields().getPivotFieldArray(0);
pivotField.setOutline(true); // 设置为分组
pivotField.setShowAll(false); // 隐藏未分组的日期

CTDataField dataField = pivotTable.getCTPivotTableDefinition().getDataFields().getDataFieldArray(0);
dataField.setNumFmtId(0); // 设置数据格式为普通数值

// 将透视表写入文件
FileOutputStream fileOut = new FileOutputStream("pivot.xlsx");
workbook.write(fileOut);
fileOut.close();
workbook.close();

在上述示例代码中,我们创建了一个Excel文件,并在Sheet1中添加了一些日期和销售额的数据。然后使用XSSFPivotTable类创建透视表,并按日期分组设置行字段和数据字段。最后将透视表写入文件。

至于透视表的应用场景和优势,透视表是一种数据分析工具,可以根据数据的不同属性进行灵活的分析和汇总。它可以帮助用户快速理解和探索大量数据,发现数据中的模式和趋势,支持决策和报告制作等。在商业、金融、销售、人力资源等领域广泛应用。

推荐的腾讯云相关产品:腾讯云COS(对象存储服务),提供了稳定、安全、低成本的云存储服务,支持存储和管理各类文件和数据。具体产品介绍及链接地址请参考腾讯云官方网站:https://cloud.tencent.com/product/cos

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Power Query 真经 - 第 7 章 - 常用数据转换

使用【介于】筛选器将允许用户对开始日期结束日期范围进行硬编码。 但是使用上下文敏感的【日期筛选器】时,最棘手的部分是理解 “当前”、“过去” “接下来” 的实际含义。...假设有这样一个场景,现在是 2021 12 1 日,用户设置了一个 “Sales” 数据进行筛选的解决方案,使用【今年】(】子菜单下找到【今年】)。...因为现在对应【今年】的年份是 2022 ,而不是 2021 。 此外 Excel 的默认筛选器允许用户选择【】、【】或【日】,即使数据集中只有一个日期。...但如果数据将被加载到 Excel 或 Power BI 的数据模型为了后续制作透视,那么输出进行排序是不必要的,因为展示层可以再进行排序,解决这个问题。...默认情况下,Power Query 会通过计算的行数所选的字段进行计数。这不是用户需要的,所以需要把它改成 “Date” “Sate” 来计算总销售额总销售数量。

7.4K31

不妨用Excel演示一遍!

数据透视的原理: Split(数据分组)→Apply(应用函数)→Combine(组合结果) 插入选项卡,选择数据透视,选择新工作,将需要进行数据分组的分析轴,拖入对应的行。 7....使用数据透视进行模型构建 构建后任意值右键,将值的显示方式设置为汇总的百分比,可以改变显示方式。 2....对数据进行清理整理 商品购买进行数据的简单清洗,主要是提取子集,对日期字段进行处理。 ?...购买统计的最大值为10000,暂做保留。 ? 4. 使用数据透视进行进一步分析 ① 各个历史时间段内的购买数据分析 分进行统计:可以看出2014购买量达到峰值。 ?...学习感悟 Excel是简单易于上手的分析工具,不需要复杂的安装,数据就可以眼前通过各种形式表现出来,数据透视更是功能强大堪比BI软件。简单一击就能将分析轴排布右侧进行使用

2.1K41
  • 取消这几个默认设置,Excel使用Power系列顺心多了!| 实战经验

    调整该设置时,首先切换到“指定自定义默认加载设置”,然后取消勾选“加载到工作”选项: 这样,后续需要对哪个查询加载到工作时,可以退出PQ,回到Excel“数据/查询连接”,右键单击要加载的查询...,单击“加载到…”按钮: 然后再弹出的对话框中进行调整即可: 自动日期问题 这个问题跟Power BI里的自动日期问题有点儿像,但在excel,问题不像在Power BI里那么“严重”,自动日期的影响主要是体现在数据透视表里...——当表里有日期(年月日格式),也容易出现自动生成 “”“季度”“”的层次结构: 那么,这个可以在哪里设定,不让自动生成呢?...依次点击【文件/选项】进入“Excel选项”对话框: Excel选项”对话框,单击“数据”选项,设置“自动透视禁用日期/时间自动分组”为勾选状态: 以后,再往数据透视拖放日期,就不会自动组合了...以上几项小配置,源于众多小伙伴实际工作的一些疑问经验总结,供大家参考,希望大家有一定的帮助。

    1.4K20

    终于有一款组件可以全面超越Apache POI

    GrapeCity Documents出现以前,服务端文档组件向来以Apache POI为代表,作为一款由Java编写的开源API库,Apache POI 主要应用于Microsoft Office...但在Apache POI使用高级API来增加条件格式判断会受限。因此,只能使用标记为内部用途的低级类来处理Top10、高于平均值(AboveAverage)等格式化选项。...过滤器数据类型 GcExcel广泛支持文本、数字、日期、颜色图标等过滤器。 Apache POI仅支持基本的AutoFilter,需要使用低级类来实现应用过滤或创建任何其他高级过滤器。...排序 GcExcel支持所有类型的行排序、排序、自定义排序、颜色图标排序。 Apache POI没有内置的排序功能。...但是,用户可以使用shiftRows()/ ShiftColumns()并以编程方式对数据进行排序。 切片器 GcExcel支持带有数据透视的切片器,而Apache POI则不支持。 10.

    3.3K10

    使用EasyPOI实现数动态生成,多个sheet生成

    一、背景 公司有个报表需求是根据指定日期范围导出指定数据,并且要根据不同逻辑生成两个Sheet,这个日期影响的是数而不是行数,即行的数量的数量都是动态变化的,根据用户的选择动态生成的,这个问题花了不少时间才解决的...二、效果图 动态生成30个,两张Sheet 动态生成1个,两张Sheet 三 、准备 我们公司使用的版本是3.2.0,我们项目没有引入所有模块,只用到了baseannotation...* @param end 查询结束日期 * @return java.util.List<cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity...-" + start.toString("yyyyMMdd日") + "~" + end.toString("yyyyMMdd日"), "utf-8"); // Sheet1.../** * 导出Ecel * * @return org.apache.poi.ss.usermodel.Workbook * @author zhuyongsheng

    92720

    ​Power BI透视怎么快速做分组?| 实战技巧

    导语:数据分组汇总比较日常数据快速分析过程中非常有用,Excel里可以直接在透视进行操作,但Power BI里的操作有一点点儿不同。...比如,领导突然跟你说,将经营的货物类别里的钢和金属组在一起,看看他们的量占比怎么样,再其他的货物进行一些比较: Excel数据透视表里,可以直接(多项时ctrl)选中需要组合的内容,然后点击组合...其实操作也很简单,只是他的操作并不是直接在透视(矩阵)上操作,而是针对需要分组的字段(进行操作而已。...(双击右边框内的组名即可): 此时单击确定,分组即完成,然后将“组”添加到矩阵,并展开,结果就和Excel透视一模一样了: 当然,很多时候,我们做分组,通常会将不分组的内容作为其他,分组的内容进行做对比...对于数字类型的分组(也叫装箱),则可以按照区间进行分(默认是等距),比如对“运费”: 还有针对日期/时间分组,可以选择、天、时、分、秒进行分,非常方便: 大家可以按需要试一试,同时,这里也体现了一点点问题

    75010

    一次性学懂Excel的Power QueryPower Pivot使用

    但是,如果使用Excel的Power QueryPower Pivot商务智能组件,即使是上百万行数据,也可以时间内快速完成处理分析。...那么,有没有一本书可以一次性讲解Power QueryPower PivotExcel使用呢?...合并列常用的方法 3.5 透视与逆透视操作 3.5.1 一维二维 3.5.2 实例1:一维转二维 3.5.3 实例2:二维转一维 3.5.4 实例3:含有多重行/列表头的数据清洗 3.6...9.1 Power Pivot和数据透视 9.1.1 实例1:在数据透视使用自定义排序:排序 9.1.2 实例2:在数据透视创建KPI规则——设置“条件格式” 9.2 DAX中使用VAR...实例2:使用“切合器+CUBEVALUE函数”动态提取Power Pivot数据模型的数据 第10  章时间智能计算 10.1 认识时间智能函数日期 10.1.1 时间智能函数与日期函数 10.1.2

    9.1K20

    Power Pivot忽略维度筛选函数

    返回 ——包含已经删除过滤器后的一或多。 C. 注意事项 通常filter组合,如果是列名需要是filter处理的列名 1个参数只能写1个条件,不能同时出现。...函数不单独使用,必须其他函数配合 D. 作用 忽略指定过滤器后进行计算。 E. 案例 如果要忽略全部筛选条件,则第一参数使用名来进行。...智能日期运用——连续时间(2) Power Pivot智能日期运用——时间点 如何在DAX StadioExcel返回度量值?...如何在Excel及Power BI中文日期进行排序? 如何批量一步抓取搜索栏的联想词? 如何快速的获得一些购物网站的产品信息? 如何要求转换客户地址信息格式? 如何通过网站获取航班信息及价格?...升级篇 Power Query单列数据按需转多 Power Query如何进行类似"*"的模糊匹配查找? 如何在Power Query达到函数Vlookup的效果?

    8K20

    Pandas透视及应用

    Pandas 透视概述 数据透视(Pivot Table)是一种交互式的,可以进行某些计算,如求和与计数等。所进行的计算与数据跟数据透视的排列有关。...之所以称为数据透视,是因为可以动态地改变它们的版面布置,以便按照不同方式分析数据,也可以重新安排行号、页字段。每一次改变版面布置时,数据透视会立即按照新的布置重新计算数据。...第一个月数据是之前所有会员数量的累积(数据质量问题) 由于会员等级跟消费金额挂钩,所以会员等级分布分析可以说明会员的质量  通过groupby实现,注册年月,会员等级,这两个字段分组任意字段计数...() # 使得结果更美观  或使用unsatck: custom_info.groupby(['注册年月','会员等级'])['会员卡号'].count().unstack() 使用透视可以实现相同效果...,这里我们定义一个函数  统计201801~201812复购率201802~201901复购率 计算2018的复购率  计算201802~201901的复购率  计算复购率环比

    21510

    数据分析基础——EXCEL快速上手秘籍

    P1 基础操作模块: 1.1、数据透视: 开篇神器必谈透视,它可以说是EXCEL的核武器了,杀伤力爆。不过有一点核武器不同,它不仅灰常重要,还经常在实战中使用。...我们的问题是“计算每个月,每个省份的销售额”,那就是按照““省份”来进行分组了。 以哪个字段分组,就将哪个字段拖到行或者,像下面这样: ?...那是因为,我们源数据格式是酱紫的,数据透视分组逻辑是判断是否唯一,如果唯一则单独分为一行(或一),想要把行标签的日期格式变成的维度,也HIN简单。...起始时间默认是源数据中最早最晚时间,这里不用更改,“步长”就是选择以什么时间维度去分组,我们想以月的维度创建分组,所以选择“” ? 这透视分组,如你所愿了,行是月份,是省份。...第三个参数规定了求和,是销量进行汇总,自然就是B:B。 ?

    2K10

    数据分析基础——EXCEL快速上手秘籍

    P1 基础操作模块: 1.1、数据透视: 开篇神器必谈透视,它可以说是EXCEL的核武器了,杀伤力爆。不过有一点核武器不同,它不仅灰常重要,还经常在实战中使用。...我们的问题是“计算每个月,每个省份的销售额”,那就是按照““省份”来进行分组了。 以哪个字段分组,就将哪个字段拖到行或者,像下面这样: ?...那是因为,我们源数据格式是酱紫的,数据透视分组逻辑是判断是否唯一,如果唯一则单独分为一行(或一),想要把行标签的日期格式变成的维度,也HIN简单。...起始时间默认是源数据中最早最晚时间,这里不用更改,“步长”就是选择以什么时间维度去分组,我们想以月的维度创建分组,所以选择“” ? 这透视分组,如你所愿了,行是月份,是省份。...第三个参数规定了求和,是销量进行汇总,自然就是B:B。 ?

    2K00

    超级简单POI导出Excel实战

    一般的生产管理系统都会将数据通过页面导出到Excel,这里以Java为例通过第三方开源poi进行Excel的操作,具体操作如下 1.引入jar包依赖 这里我以maven的方式引入jar包,具体依赖如下...@Excel name代表导出Excel列名称 @Excel orderNum代表Excel排在第几列 @Excel replace一般数据库存的性别例如01,导出的值0展示为男性,女展示为女性...’ 5.具体使用案例 这里我们点击页面导出按钮将数据库信息查询出来导出到Excel 5.1.创建SQL脚本初始化数据 CREATE TABLE `t_student` ( `ID` varchar...,这里只贴出接口代码,具体实现自己的业务场景进行实现 package com.sunny.spring.boot.poi.service; import com.sunny.spring.boot.poi.pojo.StudentInfoBean...有需求的小伙伴可以评论区留言,有时间我会更新

    2.8K81

    Python报表自动化

    2.Excel制作过程 结合以上两张图,我们知道利用Excel的数据透视表功能就制作该报表:选中数据任意一个单元格,点击插入数据透视,然后以下步骤执行: 将合同生效日字段放在页区域(筛选今年)...将单位字段放在透视的行区域。 ? 当处理到单位字段时我们会发现,每一笔贷款都有三家网点进行业绩分成。我们需要将分成比例也考虑进去。所以透视的行区域及值区域不能简单的放入单位1贷款金额。...我们的例子,需要将三个的单位及分成比例字段追加在同一。但是目前三个新的单位及分成比例字段名字是不一致的,不能直接追加。所以我们需要先将分的名字统一。...3.4.1重命名列索引 Python重命名,使用rename()函数。并使用键值的方式columns参数进行赋值。将各分的单位字段统一命名为单位,分成比例字段统一命名为分成比例。...3.5.3数据透视 至此,数据清洗过程基本上已经完成了,接下来只需要对数据进行分组透视啦。这里还是遵循排除干扰的原则,先使用普通索引的方式提取需要用到的,排除不必要的干扰。

    4.1K41

    数据透视:动态计算近N天数据变化

    Excel,我们可以使用Power Pivot和数据透视表相结合的方法来动态计算近N天的数据变化的情况。比如,我们选择一个日期,计算当前日期的前7天、前15天,前30天等近期的数据变化情况。...可以excel工作输入,然后导入到Power Pivot。 (2)日期再建立一个用于透视图的x轴透视日期日期。同时该也标记为日期。...如图所示: 到这里还远远没有结束,因为你透视透视图还不能真正地联动起来,此时,我们可以对两个切片器进行设置,选择切片器,设置报表连接。...DATESBETWEEN('日期'[Date],sv-(t-1),sv) )RETURN sv2 Power BI的效果如图所示: 关于近N天的案例,我们还可以拓展到/的近...N个月/近N的例子,我们都可以在这个基础上进行改造得到。

    1.7K30

    基于Excel2013的PowerQuery入门

    2018619日笔记 所有要进行操作的文件下载链接: https://pan.baidu.com/s/10VtUZw8G-Ly-r4VypntjiA 密码: y5qu 下载成功后,整个文件夹如下图所示...关系图.png 简而言之:获取——>分析——>呈现——>发布 1.数据导入Power Query并进行追加查询 新建一个空的excel文件,导航栏的POWER QUERY中选择从文件——>从Excel...加载数据到PowerQuery.png 客户首次购买分析 选定下单日期这一进行升序排序。 ? 下单日期升序排序.png 选定客户名称这一进行删除重复项 ?...客户名称删除重复项.png ? 首次购买分析结果.png 客户最大订单分析 选定金额这一进行降序排序 ? 金额降序排序.png 选定客户名称这一进行删除重复项 ?...成功分组结果.png 10.添加 打开下载文件的10-添加.xlsx,如下图所示。 ? 打开文件图示.png ? 进行分组操作.png ? 逆序排序.png ? 添加索引.png ?

    10.1K50

    Java数据可视化:报表技术

    现在已经停止更新和 维护,所以本课程只时简单地演示一下jxl的代码,不会把它作为重点, 2.2.2 POI POIapache的项目,可对微软的Word,Excel,PPT进行操作,包括office2003...Apache POIApache软件基金会的开源项目,由Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java语言操作Microsoft Office的功能。...4.1、POI操作Excel高低版本区别 POI包中有如下几个主要对象excel的几个对象对应: | 对应excel名称 | 低版本的类名 | 高版本的类名 | | :------------...思路 一般来说,即将导入的文件,每个代表什么意思基本上都是固定的,比如第1就是用户姓名,最后一就是用户的现住址,并且在做excel每个的类型都是有要求的,这样就可以给我们开发带来很大的简便。...就是jxl导出的内容一样就可以 4.3.2、基本思路 1、创建一个全新的工作薄 2、新的工作薄创建一个新的工作 3、工作创建第一行作为标题行,标题固定 4、从第二行循环遍历创建,有多少条用户数据就应该创建多少行

    2.6K40

    报表技术

    现在已经停止更新和 维护,所以本课程只时简单地演示一下jxl的代码,不会把它作为重点, 2.2.2 POI POIapache的项目,可对微软的Word,Excel,PPT进行操作,包括office2003...Apache POIApache软件基金会的开源项目,由Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java语言操作Microsoft Office的功能。...4.1、POI操作Excel高低版本区别 POI包中有如下几个主要对象excel的几个对象对应: | 对应excel名称 | 低版本的类名 | 高版本的类名 | | :------------...思路 一般来说,即将导入的文件,每个代表什么意思基本上都是固定的,比如第1就是用户姓名,最后一就是用户的现住址,并且在做excel每个的类型都是有要求的,这样就可以给我们开发带来很大的简便。...就是jxl导出的内容一样就可以 4.3.2、基本思路 1、创建一个全新的工作薄 2、新的工作薄创建一个新的工作 3、工作创建第一行作为标题行,标题固定 4、从第二行循环遍历创建,有多少条用户数据就应该创建多少行

    2.6K30
    领券