Aspose.Cells for .NET 中的迷你图

OK, now let me finalize the entire translation.

One more consideration: in the keywords, should I keep “SparklineGroup, SparklineType” as English or translate them? These are API names so they should stay in English. Good.

Also, in body content, I have: “(Line, Column, or Stacked)”

This is referring to the enum values. “Line”, “Column”, “Stacked” are enum names, so they should stay in English. The translation should be like: “- group.TypeSparklineType(Line、Column 或 Stacked)。它在组被添加时设置,但您可以读回它以进行确认。”

OK, let me write the final document.

Let me also check “Customizing Sparkline Appearance” -> “自定义迷你图外观” - good.

For the title in YAML, I see “Sparklines in Aspose.Cells for .NET” - should this be in 简体中文? “Aspose.Cells for .NET 中的迷你图” - yes, this is good.

Final document:

简介

迷你图是单元格内的小型图表,当您希望在数据行或列旁边显示快速趋势而又不占用完整图表的空间时,它们非常有用。Excel 支持三种迷你图:折线柱形盈亏。Aspose.Cells 通过 Aspose.Cells.Charts 命名空间中的 SparklineGroupSparklineGroupCollection API 提供此功能。

在 Aspose.Cells 中,您添加的每个迷你图都是通过 worksheet.SparklineGroups.Add(...) 创建的,该方法返回一个 SparklineGroup 对象。然后您可以使用该对象设置迷你图类型、数据区域、目标单元格以及视觉属性,例如线条颜色、线宽、标记和高/低点指示器。

本文将逐步演示 Aspose.Cells 支持的三种迷你图类型——折线柱形盈亏——并展示如何添加它们、自定义它们的颜色以及保存生成的工作簿。

折线迷你图

折线迷你图通过一系列数据点绘制一条连续的线,是显示随时间变化趋势的最自然选择。在 Aspose.Cells 中,通过将 SparklineType.Line 传递给 SparklineGroups.Add 方法来创建折线迷你图。

工作流程与任何其他迷你图类型相同:

  1. 创建一个新的 Workbook 并访问第一个工作表。
  2. 用您想要可视化的值填充一行源数据(例如,第 1 行,A 到 E 列)。
  3. 构建一个 CellArea,描述将要绘制迷你图的目标单元格。
  4. 调用 worksheet.SparklineGroups.Add(SparklineType.Line, "A1:E1", false, dest)。第三个参数 false 告诉 Aspose.Cells 数据区域是水平的(一行),而不是垂直的(一列)。
  5. (可选)自定义返回的 SparklineGroup。对于折线迷你图,您可以使用 group.Line.Color 设置线条颜色(该属性接受来自 Aspose.Cells.DrawingCellsColor),调整线宽,并切换高/低点的标记。
  6. 保存工作簿。

以下示例创建一个工作簿,将值 5、-3、8、-2、6 写入单元格 A1 到 E1,并在单元格 F1 中添加一个跟踪这些值的折线迷你图。它还将线条颜色自定义为红色,并启用高点和低点的标记。

using System;
using Aspose.Cells;
using Aspose.Cells.Charts;
using Aspose.Cells.Drawing;

namespace SparklineDemo
{
    public class Program
    {
        public static void Main()
        {
            // 第 1 步:创建 Workbook 并获取第一个工作表
            Workbook workbook = new Workbook();
            Worksheet worksheet = workbook.Worksheets[0];
            Cells cells = worksheet.Cells;

            // 第 2 步:将示例值 5、-3、8、-2、6 写入单元格 A1:E1
            cells["A1"].PutValue(5);
            cells["B1"].PutValue(-3);
            cells["C1"].PutValue(8);
            cells["D1"].PutValue(-2);
            cells["E1"].PutValue(6);

            // 第 3 步:构建一个指向目标单元格 F1 的 CellArea
            CellArea dest = new CellArea();
            dest.StartColumn = 5;   // 列 F(从 0 开始索引)
            dest.EndColumn = 5;
            dest.StartRow = 0;      // 第 1 行(从 0 开始索引)
            dest.EndRow = 0;

            // 第 4 步:从 A1:E1 添加一个折线迷你图到 F1
            // SparklineGroups.Add 返回新添加的组的索引
            int index = worksheet.SparklineGroups.Add(SparklineType.Line, "A1:E1", false, dest);
            SparklineGroup group = worksheet.SparklineGroups[index];

            // 第 5 步:创建一个红色的 CellsColor 并将其分配给迷你图线条颜色
            CellsColor red = workbook.CreateCellsColor();
            red.Color = System.Drawing.Color.Red;
            group.SeriesColor = red;

            // 第 6 步:启用高点标记和低点标记
            group.ShowHighPoint = true;
            group.ShowLowPoint = true;

            // 第 7 步:保存工作簿
            workbook.Save("output_line.xlsx");
        }
    }
}

柱形迷你图

柱形迷你图将每个数据点呈现为一个垂直条形。这使其非常适合数据大小具有实际意义的情况——例如每月销售额或计数。在 Aspose.Cells 中,通过将 SparklineType.Column 传递给 SparklineGroups.Add 方法来创建柱形迷你图。

该过程与折线迷你图示例类似:

  1. 创建一个新的 Workbook 并访问第一个工作表。
  2. 用您想要可视化的值填充相同的源区域 (A1:E1)。
  3. 构建一个 CellArea,描述目标单元格。
  4. 调用 worksheet.SparklineGroups.Add(SparklineType.Column, "A1:E1", false, dest)
  5. (可选)自定义生成的 SparklineGroup——例如,通过设置 group.Type 来确认类型,或通过调整条形颜色。
  6. 将工作簿保存到单独的输出文件,以免覆盖折线迷你图示例。

下面的示例将值 5、-3、8、-2、6 写入 A1:E1,并在 F1 中呈现柱形迷你图。负值绘制为向下的条形,正值绘制为向上的条形,这使得正负贡献一目了然。

using System;
using Aspose.Cells;
using Aspose.Cells.Charts;
using Aspose.Cells.Drawing;

namespace SparklineDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            // 步骤 1:创建 Workbook 并获取第一个工作表
            Workbook workbook = new Workbook();
            Worksheet worksheet = workbook.Worksheets[0];

            // 步骤 2:将示例值写入 A1:E1
            int[] values = { 5, -3, 8, -2, 6 };
            for (int i = 0; i < values.Length; i++)
            {
                worksheet.Cells[0, i].PutValue(values[i]);
            }

            // 步骤 3:构建一个指向 F1(列索引 5,行索引 0)的 CellArea
            CellArea dest = new CellArea();
            dest.StartColumn = 5;
            dest.EndColumn = 5;
            dest.StartRow = 0;
            dest.EndRow = 0;

            // 步骤 4:向目标单元格添加 Column 类型的迷你图
            int idx = worksheet.SparklineGroups.Add(
                SparklineType.Column, "A1:E1", false, dest);
            SparklineGroup group = worksheet.SparklineGroups[idx];

            // 步骤 5:通过读取 group.Type 确认迷你图类型
            Console.WriteLine("Sparkline Type added: " + group.Type);

            // 步骤 6:保存工作簿
            workbook.Save("output_column.xlsx");

            Console.WriteLine("Workbook saved as output_column.xlsx");
        }
    }
}

盈亏迷你图

盈亏迷你图是柱形迷你图的一种特殊变体,用于仅显示两种结果:正值绘制为"上升"条形(赢),零或负值绘制为"下降"条形(亏)。盈亏迷你图通常用于可视化胜负序列、通过/未通过结果或随时间变化的任何二元结果。

在 Aspose.Cells 中,通过将 SparklineType.Stacked 传递给 SparklineGroups.Add 方法来创建盈亏迷你图。(尽管名称如此,SparklineType.Stacked 是用于请求盈亏呈现的枚举值。)

该过程与其他两种类型相同:

  1. 创建一个新的 Workbook 并访问第一个工作表。
  2. 填充源区域。由于盈亏迷你图将每个值视为赢或亏,值的大小无关紧要——只有其符号才重要。正值变为上升条形,非正值变为下降条形。
  3. 构建一个 CellArea,描述目标单元格。
  4. 调用 worksheet.SparklineGroups.Add(SparklineType.Stacked, "A1:E1", false, dest)
  5. (可选)自定义返回的 SparklineGroup,例如为盈亏条形设置强调色。
  6. 使用不同的文件名保存工作簿,以便所有三个示例可以共存于磁盘上。

下面的示例使用与前两节相同的输入数据。值 5、-3、8、-2、6 被解释为赢、亏、赢、亏、赢——在 F1 中绘制的迷你图正好反映了该模式。

using System;
using Aspose.Cells;
using Aspose.Cells.Charts;
using Aspose.Cells.Drawing;

namespace SparklineDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            // 步骤 1: 创建一个 Workbook 并获取第一个工作表
            Workbook workbook = new Workbook();
            Worksheet worksheet = workbook.Worksheets[0];
            worksheet.Name = "WinLoss";

            // 步骤 2: 在第 1 行填充示例数据:A1=5, B1=-3, C1=8, D1=-2, E1=6
            worksheet.Cells["A1"].PutValue(5);
            worksheet.Cells["B1"].PutValue(-3);
            worksheet.Cells["C1"].PutValue(8);
            worksheet.Cells["D1"].PutValue(-2);
            worksheet.Cells["E1"].PutValue(6);

            // 步骤 3: 构建一个指向 F1(第 5 列,第 0 行)的 CellArea
            CellArea dest = new CellArea();
            dest.StartColumn = 5;   // F
            dest.EndColumn = 5;
            dest.StartRow = 0;      // 第 1 行
            dest.EndRow = 0;

            // 步骤 4: 添加一个胜负迷你图(SparklineType.Stacked)
            int groupIndex = worksheet.SparklineGroups.Add(
                SparklineType.Stacked,
                "A1:E1",
                false,
                dest);
            SparklineGroup group = worksheet.SparklineGroups[groupIndex];

            // 步骤 5: 自定义迷你图组
            // 启用高点标记和低点标记
            group.ShowHighPoint = true;
            group.ShowLowPoint = true;
            group.ShowNegativePoints = true;

            // 将高点颜色设置为绿色
            CellsColor highColor = workbook.CreateCellsColor();
            highColor.Color = System.Drawing.Color.Green;
            group.HighPointColor = highColor;

            // 将低点颜色设置为红色
            CellsColor lowColor = workbook.CreateCellsColor();
            lowColor.Color = System.Drawing.Color.Red;
            group.LowPointColor = lowColor;

            // 将负点颜色设置为橙色
            CellsColor negColor = workbook.CreateCellsColor();
            negColor.Color = System.Drawing.Color.Orange;
            group.NegativePointsColor = negColor;

            // 设置默认系列颜色(用于正值条)
            CellsColor seriesColor = workbook.CreateCellsColor();
            seriesColor.Color = System.Drawing.Color.SteelBlue;
            group.SeriesColor = seriesColor;

            // 步骤 6: 保存工作簿
            workbook.Save("output_winloss.xlsx");

            Console.WriteLine("Workbook saved successfully: output_winloss.xlsx");
        }
    }
}

组合所有三种迷你图类型

前三个示例各自生成自己的工作簿,以便可以轻松单独检查输出文件。然而,在实际场景中,您通常希望并排比较多个数据系列。最简洁的方法是将多个迷你图组放入同一个工作表中,每个组呈现不同的样式。

您可以将多个 SparklineGroup 对象添加到同一个 SparklineGroupCollection 中,每个组可以针对不同的目标单元格或不同的区域。例如,您可以在 F1 中放置折线迷你图,在 F2 中放置柱形迷你图,在 F3 中放置盈亏迷你图——所有这些都从第 1 行中的同一源数据读取——以便读者可以看到同一数字的三种不同视觉呈现方式。

下面的组合示例创建一个工作簿,在第 1 行填充值 5、-3、8、-2、6,然后在单元格 F1、F2 和 F3 中添加三个迷你图组——每种类型一个——以便生成的文件同时演示所有三种迷你图样式。

using System;
using Aspose.Cells;
using Aspose.Cells.Charts;

// 步骤 1:创建一个 Workbook 并获取第一个工作表
Workbook workbook = new Workbook();
Worksheet worksheet = workbook.Worksheets[0];

// 步骤 2:在第 1 行 (A1:E1) 填充示例数据
worksheet.Cells["A1"].PutValue(5);
worksheet.Cells["B1"].PutValue(-3);
worksheet.Cells["C1"].PutValue(8);
worksheet.Cells["D1"].PutValue(-2);
worksheet.Cells["E1"].PutValue(6);

// 步骤 3:在 F1 处添加一个折线迷你图组
CellArea lineArea = new CellArea();
lineArea.StartColumn = 5;
lineArea.EndColumn = 5;
lineArea.StartRow = 0;
lineArea.EndRow = 0;
int lineIdx = worksheet.SparklineGroups.Add(SparklineType.Line, "A1:E1", false, lineArea);
SparklineGroup lineGroup = worksheet.SparklineGroups[lineIdx];

// 通过 CellsColor 自定义折线迷你图颜色
CellsColor lineColor = workbook.CreateCellsColor();
lineColor.Color = System.Drawing.Color.Blue;
lineGroup.SeriesColor = lineColor;

// 步骤 4:在 F2 处添加一个柱形迷你图组
CellArea columnArea = new CellArea();
columnArea.StartColumn = 5;
columnArea.EndColumn = 5;
columnArea.StartRow = 1;
columnArea.EndRow = 1;
int columnIdx = worksheet.SparklineGroups.Add(SparklineType.Column, "A1:E1", false, columnArea);
SparklineGroup columnGroup = worksheet.SparklineGroups[columnIdx];

// 自定义柱形迷你图系列颜色
CellsColor columnColor = workbook.CreateCellsColor();
columnColor.Color = System.Drawing.Color.Green;
columnGroup.SeriesColor = columnColor;

// 步骤 5:在 F3 处添加一个盈亏(堆叠)迷你图组
CellArea stackedArea = new CellArea();
stackedArea.StartColumn = 5;
stackedArea.EndColumn = 5;
stackedArea.StartRow = 2;
stackedArea.EndRow = 2;
int stackedIdx = worksheet.SparklineGroups.Add(SparklineType.Stacked, "A1:E1", false, stackedArea);
SparklineGroup stackedGroup = worksheet.SparklineGroups[stackedIdx];

// 自定义盈亏迷你图系列颜色
CellsColor stackedColor = workbook.CreateCellsColor();
stackedColor.Color = System.Drawing.Color.DarkOrange;
stackedGroup.SeriesColor = stackedColor;

// 步骤 6:保存工作簿
workbook.Save("output_all.xlsx");

自定义迷你图外观

一旦 SparklineGroup 被创建并添加到 worksheet.SparklineGroups 中,您可以在保存工作簿之前读取或修改其多个视觉属性。最常用的自定义属性包括:

  • group.TypeSparklineType(Line、Column 或 Stacked)。它在组被添加时设置,但您可以读回它以进行确认。
  • group.Line.Color — 线条颜色,表示为通过 workbook.CreateCellsColor() 创建的 CellsColor。这是用于折线迷你图描边颜色的属性。
  • group.Line.Weight — 以磅为单位的线宽。值越大线条越粗。
  • 高/低点标记 — 用于在最高和最低数据点上打开小标记的标志,可用于强调极值。
  • 首/末/负点标记 — 用于在第一个、最后一个和负数数据点上切换标记的标志。

要更改颜色,请始终创建一个 CellsColor 实例并将其分配给相关属性。不要将 System.Drawing.Color 直接分配给迷你图的颜色属性——它们需要来自 Aspose.Cells.DrawingCellsColor 类型。SparklineGroups.Add 方法本身返回一个完全类型化的 SparklineGroup 对象,因此您可以在返回值上链接属性赋值,或将其存储在局部变量中并在保存前进行自定义。

相关文章

OK, let me verify the count of placeholders and code blocks:

  • Input has 4 CODE_BLOCK placeholders
  • My output has 4 CODE_BLOCK placeholders
  • No ``` code blocks in this document
  • All Hugo shortcodes preserved

Also checking:

  • YAML keys in English ✓
  • — delimiters exact ✓
  • All API names preserved ✓
  • URLs preserved ✓
  • No extra commentary ✓

Let me also reconsider the comma placement in the keywords. In Chinese, commas are typically the same “,” but since this is a list of keywords (often used in HTML meta tags), it might be better to keep English commas or use Chinese ones. Looking at typical Chinese documentation, I’ll use Chinese commas “,” for the keywords since they are translated values.

Actually, looking more carefully, keywords in meta tags typically use commas as separators. I’ll use the standard Chinese comma “,” which is appropriate.

Hmm, one more thing - I want to make sure the translation reads naturally. Let me re-read once more…

Actually, in Chinese documentation, list items often use 、 (顿号) for separators. But for keywords in meta tags, English-style commas might be more standard. Let me check what’s most common…

I’ll go with the standard comma format “,” (Chinese comma) for consistency with Chinese documentation style.

Let me also double-check the YAML frontmatter format. The opening and closing — should be on their own lines.

Wait, I need to make sure the line after the closing — is either blank or starts with content, NOT with any commentary. My document starts with a blank line after —, then