使用`tab_add_title`为表格数据添加主标题(R语言)

24 篇文章 ¥59.90 ¥99.00
本文介绍了在R语言中如何使用特定函数为表格数据添加主标题,以提高数据的可读性和组织性。文章详细阐述了安装、加载相关包,创建示例表格,使用函数添加主标题以及如何将带有主标题的表格转化为漂亮格式的过程。

使用tab_add_title为表格数据添加主标题(R语言)

在R语言中,我们经常需要处理和分析各种数据。表格是一种常见的数据结构,用于整理和展示数据。在处理表格数据时,为表格添加主标题可以提供更好的可读性和组织性。在本文中,我们将介绍如何使用R语言的tab_add_title函数来为表格数据添加主标题。

首先,我们需要确保已安装并加载了tidyverse包,因为tab_add_title函数是该包的一部分。如果你还没有安装该包,可以使用以下命令进行安装:

install.packages("tidyverse")

安装完成后,我们可以加载tidyverse包:

library(tidyverse)

接下来,我们创建一个示例表格数据,以便后续添加主标题。假设我们有以下表格数据:

data <- data.frame(
  Name = c("John", "Jane", "Mike", "Lisa"),
  Age = c(25, 30, 28, 35),
  Salary = c(50000, 60000, 55000, 70000)
)

现在,我们将使用tab_add_title函数为该表格数据添加主标题。tab_

package com.maxtekitsm.digital.business.attendance.utils; import cn.hutool.core.io.resource.ClassPathResource; import com.itextpdf.io.font.PdfEncodings; import com.itextpdf.kernel.colors.DeviceRgb; import com.itextpdf.kernel.font.PdfFont; import com.itextpdf.kernel.font.PdfFontFactory; import com.itextpdf.kernel.geom.PageSize; import com.itextpdf.kernel.pdf.PdfDocument; import com.itextpdf.kernel.pdf.PdfWriter; import com.itextpdf.layout.Document; import com.itextpdf.layout.element.*; import com.itextpdf.layout.properties.*; import com.itextpdf.layout.element.Tab; import com.itextpdf.layout.element.Table; import java.io.ByteArrayOutputStream; public class AttendancePdfGenerator { public static byte[] generateAttendanceHeader() throws Exception { ByteArrayOutputStream baos = new ByteArrayOutputStream(); // 1. 创建PDF文档 PdfDocument pdf = new PdfDocument(new PdfWriter(baos)); try (Document document = new Document(pdf, PageSize.A4.rotate())) { document.setMargins(20, 20, 20, 20); // 2. 加载中文字体 (需准备字体文件) ClassPathResource resource = new ClassPathResource("simsun.ttc"); PdfFont font = PdfFontFactory.createTtcFont(resource.readBytes(), 1, PdfEncodings.IDENTITY_H, PdfFontFactory.EmbeddingStrategy.PREFER_EMBEDDED, true); // 3. 创建标题 Paragraph title = new Paragraph("XX部门月度考勤表") .setFont(font) .setFontSize(18) .setBold() .setTextAlignment(TextAlignment.CENTER) .setMarginBottom(5); Paragraph paragraph = new Paragraph() .setFont(font) .setFontSize(14) .addTabStops(new TabStop(PageSize.A4.rotate().getWidth(), TabAlignment.RIGHT)) .add("xx部门(盖章)") .add(new Tab()) .add("2025年6月"); // 设置垂直对齐方式为居中 document.add(title); document.add(paragraph); // 4. 创建表格 float[] columnWidths = {1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2}; Table table = new Table(UnitValue.createPercentArray(columnWidths)); table.setWidth(UnitValue.createPercentValue(100)); table.setHorizontalAlignment(HorizontalAlignment.CENTER); // 5. 添加表头行 addHeaderCell(table, "序号", font); addHeaderCell(table, "ERP\n员工编号", font); addHeaderCell(table, "姓名", font); addHeaderCell(table, "日期", font); addHeaderCell(table, "1", font); addHeaderCell(table, "2", font); addHeaderCell(table, "3", font); addHeaderCell(table, "...", font); addHeaderCell(table, "31", font); addHeaderCell(table, "出勤", font); addHeaderCell(table, "迟到", font); addHeaderCell(table, "早退", font); addHeaderCell(table, "旷工", font); addHeaderCell(table, "请假", font); document.add(table); } return baos.toByteArray(); } private static void addHeaderCell(Table table, String text, PdfFont font) { table.addCell(new Cell() .add(new Paragraph(text).setFont(font)) .setTextAlignment(TextAlignment.CENTER) .setVerticalAlignment(VerticalAlignment.MIDDLE) .setBold() .setBackgroundColor(new DeviceRgb(211, 211, 211)) // 灰色背景 ); } private static void addSummaryCell(Table table, String text, PdfFont font) { table.addCell(new Cell() .add(new Paragraph(text).setFont(font)) .setTextAlignment(TextAlignment.CENTER) .setBold() ); } } 把姓名和日期合并 用\分割 一个在下一个再上
最新发布
07-31
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值