2011-02-23 9 views
0

여기 워크 시트를 가져 와서 그래프를 생성하는 함수가 있습니다. 내가 .delete을 (시도를 저장 한 후 나는 엑셀 시트에서 그래프를 삭제하려면)하지만 그건 그냥 던져 버리고 오류가, 어떻게엑셀 파일에서 그래프 삭제하기

private void GenerateGraph(Worksheet worksheet, int lastRow, int lastColumn, string filename) 
    { 
     string topLeft = ToCell(0, 0); 
     string bottomRight = ToCell(lastRow - 1, lastColumn - 1); 

    worksheet.get_Range(ToCell(0, 0), missing).Formula = "Max(B2:" + bottomRight + ")"; 
    worksheet.get_Range(ToCell(0, 0), missing).FormulaHidden = true; 
    worksheet.get_Range(ToCell(0, 0), missing).Calculate(); 
    Range range = (Range)worksheet.Cells[1,1]; 

    string small = (string)range.Value2; 
    double min = Convert.ToDouble(small); 
    worksheet.get_Range(ToCell(0,0),missing).Formula = ""; 

    //Generates the graph 
    range = worksheet.get_Range(topLeft, bottomRight); 
    ChartObjects Xlchart = (ChartObjects)worksheet.ChartObjects(missing); 
    ChartObject chart = (ChartObject)Xlchart.Add(20, 160, 600, 500); 
    Excel.Chart myChart = chart.Chart; 
    myChart.SetSourceData(range, missing); 

    //sets the y axis 
    Axis axis = (Axis)myChart.Axes(XlAxisType.xlValue, XlAxisGroup.xlPrimary); 
    axis.MinimumScaleIsAuto = true; 
    axis.MaximumScaleIsAuto = true; 
    axis.HasTitle = true; 
    axis.AxisTitle.Text = "Measure (m)"; 
    axis.CrossesAt = (int)(min-1); 

    //sets the x axis 
    Axis xAxis = (Axis)myChart.Axes(XlAxisType.xlCategory, XlAxisGroup.xlPrimary); 
    xAxis.HasTitle = true; 
    xAxis.AxisTitle.Text = "Position (m)"; 

    //makes the graph a line graph 
    myChart.ChartType = XlChartType.xlXYScatterLinesNoMarkers; 

    //titles the graph 
    myChart.HasTitle = true; 
    myChart.ChartTitle.Text = "Profiles"; 

    //saves the graph 
    myChart.Export(filename, "JPG", missing); 

    // 
    //here is where I would like to delete the graph 
    // 
} 

답변

0

이 mychart.delete가 아무튼 경우 것으로 일을 가야합니까 그럴 필요가 없다면 mychart.parent.delete를 시도하십시오.

+0

행운은 없습니다. 부모는 객체이고 객체는 삭제되지 않습니다. –

+0

부모는 ChartObject이고, **는 ** .Delete 메소드를 가지고 있습니다. –