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

SpringBoot整合POIExcel: 实现导入导出Excel功能

通过使用POI库,我们可以方便地读取和写入Excel文件,为项目的数据管理提供了便利。 引言 在许多企业应用程序中,Excel文件是一种常见的数据交换和管理方式。...POI库是Apache软件基金会的一个项目,提供了Java操作Microsoft Office格式文件的功能。结合Spring Boot和POI库,我们可以轻松地实现Excel文件的导入和导出。...序列数转换为 Java 日期 * * @param excelDate Excel 中的日期序列数 * @return Java 日期对象 */ private...static Date convertExcelDateToJavaDate(double excelDate) { // Excel 的起始日期是 1900 年 1 月 1 日...// Excel 序列数中,1 对应于 1900 年 1 月 1 日 // 所以需要减去 1,然后使用 Date 类的构造函数转换为 Java 的 Date 对象 return

35610
  • 不妨用Excel演示一遍!

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

    2.1K41

    终于有一款组件可以全面超越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.4K10

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

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

    1.5K20

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

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

    1.2K20

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

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

    85210

    一次性学懂Excel中的Power Query和Power Pivot使用

    但是,如果使用Excel中的Power Query和Power Pivot商务智能组件,即使是上百万行数据,也可以在短时间内快速完成处理和分析。...那么,有没有一本书可以一次性讲解Power Query和Power Pivot在Excel中的使用呢?...合并列常用的方法 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.3K20

    Power Pivot中忽略维度筛选函数

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

    8K20

    Pandas透视表及应用

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

    23110

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

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

    2.1K10

    数据分析基础——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一般数据库存的性别例如0和1,导出的值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.9K81

    Python报表自动化

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

    4.1K41

    Power Query 真经 - 第 8 章 - 纵向追加数据

    将一月份的文件导入并转换为表格格式。 将数据转化为正式的 Excel 表格。 根据 Excel 表格建立分析报告。 保存该文件。 然后,在每月的基础上按进行如下操作。 导入并转换新收到的数据文件。...行数将显示在界面的左下方。 为了验证和可视化加载到 Excel 中的数据量,可以在这里用数据透视表来汇总数据。 选择 “Transaction” 表中的任何单元格【插入】【数据透视表】。...图 8-12 一月到三月的记录现在显示在一个【数据透视表】中 【注意】 记住,如果查询被加载到 Excel 或 Power BI 的数据模型中,点击一次【刷新】就可以更新数据源和任何透视或可视化对象。...按这个逻辑,这意味着 “TranDate” 列(出现在三月的查询中)在一月和二月中被填充为 “null” 值,因为 “Jan 2008” 的查询没有 “TranDate” 列。...虽然每个表格也是以年和月命名,但这些日期部分用 “_” 字符分隔的( Jan_2008,Feb_2008,等)因为表格名称中不允许有空格。

    6.8K30

    数据透视表:动态计算近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.8K30

    报表技术

    现在已经停止更新和 维护,所以本课程中只时简单地演示一下jxl的代码,不会把它作为重点, 2.2.2 POI POI是apache的项目,可对微软的Word,Excel,PPT进行操作,包括office2003...Apache POI是Apache软件基金会的开源项目,由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
    领券