.net 尝试使用Excel Interop与Visual C#向图表表中的图表添加标题时出现问题

ia2d9nvy  于 2023-03-24  发布在  .NET
关注(0)|答案(1)|浏览(91)

我试图使图表在Excel从数据表;我设法制作了图表,但有些图表没有更改样式并且没有标题。这是制作图表并使用ChartWizard更改其格式的代码:

Excel.Chart[] GráficasFrecuenciaGanancia = new Excel.Chart[numberOfTables];

            //Para trabajar con cada gráfica.
            for (int i = 1; i <= numberOfTables; i++)
            {
                GráficasFrecuenciaGanancia[i - 1] = currentWorkbook.Charts.Add(Type.Missing, Type.Missing, Type.Missing, Type.Missing); //Colocamos una hoja de trabajo para gráficas y la asignamos al objeto.
                               
                if (GráficasFrecuenciaGanancia[i-1] == null)
                {
                    MessageBox.Show("Error", "Null found");                    
                }                          
                

                GráficasFrecuenciaGanancia[i - 1].ChartWizard(
                    Gallery: XlChartType.xlLineMarkers,
                    PlotBy: XlRowCol.xlColumns,
                    CategoryLabels: 45,
                    SeriesLabels: 5,
                    HasLegend: true,
                    Title: allTheCells.Item[1 + ((i - 1) * 54), 1].Value2,
                    CategoryTitle: "Frecuencias (Hz)",
                    ValueTitle: "Ganancias (dB)",
                    ExtraTitle: "Extra"
                    );

然后,我决定手动改变他们的风格(而且成功了),但改变标题给出了一个例外;当它试图改变GráficasFrecuenciaGanancia[13]的标题时,发生异常。

GráficasFrecuenciaGanancia[i - 1].ChartType = XlChartType.xlLineMarkers;
                GráficasFrecuenciaGanancia[i-1].HasTitle = true;
                Excel.ChartTitle TítuloGráfica = null;
                TítuloGráfica = GráficasFrecuenciaGanancia[i - 1].ChartTitle;
                TítuloGráfica.Text = allTheCells.Item[1 + ((i - 1) * 54), 1].Value2; //This is the line that gives the exception.

这是一个例外:(0x80004005(E_FAIL))”- System.Runtime.InteropServices.COMException
这很奇怪,因为给出异常的那一行并没有对前面的图表造成任何问题,而且我还在运行代码之前删除了所有的图表。

yc0p9oo0

yc0p9oo01#

为了记录在案,我解决了修剪字符串的问题,字符串有260个字符长,它有很多转义字符(制表符,回车符和换行符)。似乎可以分配给.Text属性的字符有限制,我不知道限制是在字符还是在点,但这就是我解决问题的方式。

相关问题