C# Excel 图表可选文本

本文关键字:文本 Excel | 更新日期: 2023-09-27 18:35:12

我正在使用Visual Studio 2013与Excel 2013连接以生成图表。我尝试访问图表上的替代文本。如果图表在工作表上,我正在使用这个脚本:

        Excel.Application oXL;
        Excel.Workbook oWB;
        Excel.Worksheet oSheet;
        oXL =(Excel.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application");
        oWB = (Excel.Workbook)oXL.ActiveWorkbook;
        oSheet = (Excel.Worksheet)oWB.ActiveSheet;
        oSheet.Shapes.Item(1).Title = "2016-02-17 A$16$";
在图表

在工作表上之前它可以工作,问题是当图表是独立图表时,在这种情况下我使用以下代码:

        Excel.Application oXL;
        Excel.Workbook oWB;
        Excel.Chart cht;
        oXL = (Excel.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application");
        oWB = (Excel.Workbook)oXL.ActiveWorkbook;
        cht = (Excel.Chart)oWB.ActiveChart;
        chart.Shapes.Item(1).Title = "2016-02-17 A$16$";

在这种情况下,当我尝试计数形状时,给我 0,我不知道如何访问替代文本。

我也在 VBA 中检查过,但是如果我使用此代码,则在 C# 事件中:

        Excel.Application oXL;
        Excel.Workbook oWB;
        Excel.Worksheet oWS;

        oXL = (Excel.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application");
        oWB = (Excel.Workbook)oXL.ActiveWorkbook;
        oWS = (Excel.Worksheet)oWB.Worksheets[1];
        oWS.Shapes.Item(1).Title = "2016-02-17 A$16$";
        oWS.Shapes.Item(1).AlternativeText= "2016-02-17 A$16$";

如果图表是独立的图表工作表,则形状的计数仍为 0。

C# Excel 图表可选文本

在 Excel 中,可以将可选文字分配给嵌入在工作表或图表工作表中的形状。嵌入在工作表中的图表实际上包含在一个形状(称为 ChartObject 的特殊形状)中。当您使用

活动工作簿.形状.项目(1)

您引用的是嵌入在工作表中的形状,在您的情况下,该形状也是包含图表的 ChartObject。您正在将替代文本分配给此图表对象(图表的容器),而不是图表本身。

好的,所以这对你有用。

图表

本身工作表上的图表不会嵌入到形状中。它既是图表又是工作表(不是工作表,也是工作表,而是图表工作表)。没有要为其分配可选文字的形状。

您可以在 Excel UI 中为图表工作表指定可选文字,如果将图表的位置从图表工作表更改为嵌入在另一个工作表中的对象,Excel 会记住 Atl 文本。

但是图表工作表的替代文本的 OM 看起来坏了。如果我在将替代文本分配给嵌入式图表(图表对象名称为"图表 1")时录制 Excel VBA 宏,则代码如下:

ActiveSheet.Shapes("Chart 1").Title = "Embedded Chart Alt Text"
ActiveSheet.Shapes("Chart 1").AlternativeText = "Embedded Chart Description"

如果我在将替代文本分配给图表工作表(工作表名称"Chart1")时录制 Excel VBA 宏,我会得到几乎相同的代码:

ActiveSheet.Shapes("Chart 1").Title = "Chart Sheet Alt Text"
ActiveSheet.Shapes("Chart 1").AlternativeText = "Chart Sheet Description"

替代文本和说明已保存,因为我使用 Excel UI 分配它们,但代码没有意义。活动表是图表,它不包含任何形状,尤其是不包含名为"图表 1"的形状。我不知道"图表 1"从何而来,因为在我将其移动到自己的图表工作表之前,图表是"图表 2"。

这是一个错误。我在 Excel 对象模型中看不到图表工作表的替代文本的钩子(事实上,它实际上只对嵌入的形状有意义,因为它用于嵌入在网页中的图像中)。将 Alt 文本分配给图表工作表时记录的代码毫无意义,播放会导致错误,因为找不到"图表 1"。

我会报告这个错误,但你可能应该回到使用嵌入式图表。