C#创建的Excel图形-应为散线,但在其他计算机上为线型

C#创建的Excel图形-应为散线,但在其他计算机上为线型,c#,visual-studio-2010,visual-studio,excel,excel-2010,C#,Visual Studio 2010,Visual Studio,Excel,Excel 2010,我在将Excel图形类型显示为散线时遇到问题。奇怪的是,编译后,在我的计算机上它显示为散线,但在其他人的计算机上它显示为没有X轴的线型 private void showExcelXY_Open(ArrayList al) { ArrayList alX = new ArrayList(); ArrayList alY = new ArrayList(); alX.Clear(); alY.Clear();

我在将Excel图形类型显示为散线时遇到问题。奇怪的是,编译后,在我的计算机上它显示为散线,但在其他人的计算机上它显示为没有X轴的线型

    private void showExcelXY_Open(ArrayList al)
    {
        ArrayList alX = new ArrayList();
        ArrayList alY = new ArrayList();
        alX.Clear();
        alY.Clear();
        for (int i = 0; i < al.Count; i++)
        {
            string[] val = al[i].ToString().Split('^');
            alX.Add(val[0]);
            alY.Add(val[1]);
        }

        xla = new Microsoft.Office.Interop.Excel.Application();

        xla.Visible = true;
        Workbook wb = xla.Workbooks.Add(XlSheetType.xlWorksheet);
        Worksheet ws = (Worksheet)xla.ActiveSheet;

        // Now create the chart.
        ChartObjects chartObjs = (ChartObjects)ws.ChartObjects(Type.Missing);
        ChartObject chartObj = chartObjs.Add(100, 20, 500, 300);
        Microsoft.Office.Interop.Excel.Chart xlChart = chartObj.Chart;

        //add some data from your datasource like a dataset or like below.
        ws.Cells[1, 1] = "Pressure";
        ws.Cells[1, 2] = "Compression";

        ws.Cells[2, 1] = alX[0];
        ws.Cells[2, 2] = alY[0];

        ws.Cells[3, 1] = alX[1];
        ws.Cells[3, 2] = alY[1];

        ws.Cells[4, 1] = alX[2];
        ws.Cells[4, 2] = alY[2];

        ws.Cells[5, 1] = alX[3];
        ws.Cells[5, 2] = alY[3];

        ws.Cells[6, 1] = alX[4];
        ws.Cells[6, 2] = alY[4];

        ws.Cells[7, 1] = alX[5];
        ws.Cells[7, 2] = alY[5];

        ws.Cells[8, 1] = alX[6];
        ws.Cells[8, 2] = alY[6];

        //set the source data and the chart type.
        Range chartRange = ws.get_Range("A2", "B8");
        xlChart.SetSourceData(chartRange, Type.Missing);
        xlChart.ChartType = XlChartType.xlXYScatterLines;

        // Customize axes:
        Microsoft.Office.Interop.Excel.Axis xAxis = (Microsoft.Office.Interop.Excel.Axis)xlChart.Axes(XlAxisType.xlCategory, XlAxisGroup.xlPrimary);
        xAxis.HasMajorGridlines = true;
        xAxis.HasTitle = true;
        xAxis.AxisTitle.Text = "Above         Pressure (psi)          Below";

        Microsoft.Office.Interop.Excel.Axis yAxis = (Microsoft.Office.Interop.Excel.Axis)xlChart.Axes(XlAxisType.xlValue, XlAxisGroup.xlPrimary);
        yAxis.MajorTickMark = XlTickMark.xlTickMarkCross;
        yAxis.HasTitle = true;
        yAxis.AxisTitle.Text = "Compression (lbf)";

        // Add title:
        xlChart.HasTitle = true;
        xlChart.ChartTitle.Text = "XPak Performance Envelope" + '\n' + "(Open Top & Bottom)";

        // Remove legend:
        xlChart.HasLegend = false;
   }

任何想法都将不胜感激

两台计算机上的Excel版本是否相同?如果是,请尝试录制宏以在两台计算机上创建散线图,并查看VBA录制为什么。这可能会告诉你区别是什么。嘿,希德,谢谢你的建议。好主意!其他计算机都运行Excel 2010,包括我的。当它在我的电脑上运行,但在其他电脑上编译不起作用时,这是令人沮丧的。奇怪的是,它在我身上仍然很好用。当我发现他们的VBA包含什么内容时,我会向他们汇报。再次感谢!BobSid,我刚刚在其他机器上运行完宏,它们都创建了相同的代码,其中包括“ActiveChart.ChartType=xlXYScatterLinesNoMarkers”。我的宏看起来与其他宏完全相同,因此没有差异。有人建议更改其他计算机上的默认图表。我们看了一下,每个人的默认值都是“xlLine”。我将每个人的默认值重置为“xlXYScatterLinesNoMarkers”。我在他们的机器上重新运行了程序,程序运行正常。但是,每个人的默认值都必须更改!这对我很有用,但我不知道这是否是最好的解决方案。我注意到Interop中有一个
Chart.SetDefaultChart()
方法。我想知道玩这个游戏是否会产生一些效果?也许在开始创建图表之前设置它。看一看。如果有人的代码没有告诉我就更改了我的默认图表类型,并且没有将其更改回去,我可能会感到不安。记下当前默认值,更改为所需的值,然后再更改回原来的值。
xlChart.ChartType = XlChartType.xlXYScatterLines;