C#创建的Excel图形-应为散线,但在其他计算机上为线型
我在将Excel图形类型显示为散线时遇到问题。奇怪的是,编译后,在我的计算机上它显示为散线,但在其他人的计算机上它显示为没有X轴的线型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();
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;