C# - 在Word中添加图表

时间:2015-02-14 11:54:06

标签: c# charts vsto office-interop

我正在开发一个VSTO加载项,它应与所有版本的Word兼容。

我编写了以下代码,在Word文件中添加了一个图表。

private void AddToNewChart()
{
     // add chart
    Word.Chart chart;
    Word.InlineShape inlineShape;
    string chartType = ((ComboBoxItem)cmbChartType.SelectedItem).Content.ToString();

    if (chartType.Equals("Pie Chart"))
        inlineShape = currDoc.InlineShapes.AddChart(Core.XlChartType.xlPie, Type.Missing);
    else
        inlineShape = currDoc.InlineShapes.AddChart(Core.XlChartType.xlColumnClustered, Type.Missing);

    inlineShape.AlternativeText = newChartName + "__TabularChart";
    chart = inlineShape.Chart;

    // get references
    dynamic chartWB = chart.ChartData.Workbook;
    dynamic chartTable = chartWB.Sheets[1].ListObjects("Table1");
    chartTable.DataBodyRange.ClearContents();
    dynamic chartRange = chartTable.Range.Resize[2, 2];

    // update data
    chartTable.Resize(chartRange);
    chartRange.Cells[chartRange.Rows.Count, 1] = namedRange;
    chartRange.Cells[chartRange.Rows.Count, 2] = excelValue;
    chartRange.Cells[chartRange.Rows.Count, 9] = string.Format("{0}->{1}->{2}", fileId, worksheet, namedRange);

    this.FillChartDropdown();

    chartWB.Close(1);
    chartWB.Application.Quit();
    chartWB.Application = null;
}

这适用于 Office 2010 , 但在Office 2013中,Excel进程不会在结束时终止,因此在添加图表后Word会完全冻结。

那么我该怎样做才能终止Excel流程呢?

0 个答案:

没有答案