首页
学习
活动
专区
工具
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

    86620

    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

    一次性学懂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

    Pandas透视及应用

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

    20910

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

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

    71410

    数据分析基础——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

    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
    领券