我想从Excel文件中删除图表。 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);
现在我需要在该代码之前删除现有的Chart。
像
这样的东西 Excel._Chart asdf = Sheet.ChartObjects("Chart01").Chart;
if (asdf != null)
{
asdf.Delete();
}
这找不到名称为“Übersicht”的图表,但有一个标题为“Übersicht”的图表
编辑: 现在的问题是,它无法删除图表:HRESULT的异常:0x800A03EC
答案 0 :(得分:4)
在Excel中,确保图表实际存在并带有名称。
您可以使用
重命名图表Sheets("Sheet1").ChartObjects(1).Name = "Chart01"
然后当您点击电子表格视图中的图表时,您可以看到它实际上已重命名
在C#方面,我建议像这样的最小例子
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"));
}
答案 1 :(得分:0)
尝试将图表名称重命名为普通英语,如:'Chart01'。 问题可能是由于Unicode支持。