2014-03-31 2 views
5

Excel 파일에서 차트를 삭제하고 싶습니다. Excel 파일은 차트가있는 자동 생성 된 기록 파일입니다. 문제는 그 기록을 갱신 할 때마다 새 차트가 만들어 지지만 이전 차트는 삭제되어야한다는 것입니다 ... this is :C# Excel 차트 삭제

   Excel.Workbook ExcelWorkBook = ExcelApp.Workbooks.Open(path); 
       ExcelApp.Visible = true; 
       Excel.Worksheet Sheet = (Excel.Worksheet)ExcelWorkBook.Worksheets.get_Item(1); 
       Excel.Range range = Sheet.UsedRange; 
       int i = 2; 
       while (Convert.ToString((range.Cells[i, 1] as Excel.Range).Value2) != null) 
       { 
        i++; 
       } 

       Excel.Range oRange; 
       Excel._Chart oChart; 
       Excel.Series oSeries; 
       oChart = (Excel._Chart)ExcelWorkBook.Charts.Add(Missing.Value, Missing.Value, 
       Missing.Value, Missing.Value); 
       oRange = Sheet.get_Range("A2:H" + i).get_Resize(Missing.Value, 8); 
       oChart.ChartWizard(oRange, Excel.XlChartType.xlLineStacked, Missing.Value, 
       Excel.XlRowCol.xlColumns, Missing.Value, Missing.Value, Missing.Value,"Chart01"); 
       oSeries = (Excel.Series)oChart.SeriesCollection(1); 
       oSeries.XValues = Sheet.get_Range("A2", "A" + i); 
       oChart.Location(Excel.XlChartLocation.xlLocationAsObject, Sheet.Name); 

이제 코드를 삭제하기 전에 기존 차트를 삭제해야합니다.

뭔가

  Excel._Chart asdf = Sheet.ChartObjects("Chart01").Chart; 
      if (asdf != null) 
      { 
       asdf.Delete(); 
      } 

처럼이 이름이 "Übersicht"와 차트를 발견하지 않지만 제목 "Übersicht"

편집과 차트가 : 문제점, 그것은 그 문이 안 열려 지금은 차트를 삭제하십시오. HRESULT에서 예외 : 0x800A03EC

+0

은 Excel._Chart asd입니다. f = null입니까? –

+0

나는 그 시점에 도달하지도 않는다. 코드는 Excel._Chart asdf = ...에서 끝난다. – jochot

+0

@jochot 1. 어떻게 Chart를 'Chart01'로 이름을 바꿨습니까 ?? –

답변

4

Excel에서 차트가 실제로 이름과 함께 존재하는지 확인하십시오.

당신은 스프레드 시트보기에서 차트를 클릭하면 다음 실제로 나는 것 C#을 측면에서

enter image description here

개명 것을 볼 수 있습니다

Sheets("Sheet1").ChartObjects(1).Name = "Chart01" 

를 사용하여 차트의 이름을 바꿀 수 있습니다 이런 최소한의 예를 제안하십시오.

bool deleted = false; 
try 
{ 
    ChartObject myChart = ws.ChartObjects("Chart01"); 
    myChart.Delete(); 
    deleted = true; 
} 
catch 
{ 
    MessageBox.Show("Chart with this name could not be found"); 
    //throw new Exception("Chart with this name could not be found"); 
} 
finally 
{ 
    MessageBox.Show("the chart was " + (deleted ? "deleted" : "not deleted")); 
} 
+0

당신의 그림과 같은 차트의 이름이 바뀌었지만 차트를 찾았지만 삭제할 수 없습니다. 예외는 HRESULT에서 _Exception입니다 : 0x800A03EC_ – jochot

+0

ChartObject '하지'_Chart'? –

+1

죄송합니다. 내 잘못입니다. 코드가 작동합니다. 감사합니다. :) – jochot

0

차트 이름을 'Chart01'과 같이 일반 영어로 바꾸어보십시오. 유니 코드 지원이 원인 일 수 있습니다.

+0

_ 지정된 이름의 항목을 찾을 수 없습니다 ._ "Chart01"도 함께, ArgumentException – jochot