在C#2008下,想从EXCEL模板中取得CHART,但是用下记代码总是报错。
Excel.Application app = new Excel.Application();
Excel.Workbook tworkbook;
Object missing = System.Reflection.Missing.Value;
 app.Workbooks.Add(missing);
//调用模板
tworkbook = app.Workbooks.Open(mode.FullName, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing);
//在这里出错,跟踪是发现app.Charts的Count为空,但是在模板中已定义好了一个Graph了。
Excel.Chart xlChart = (Excel.Chart)app.Charts.get_Item(1);
使用的是 using Excel = Microsoft.Office.Interop.Excel;//引用的版本是11.0
如有更好的方法请赐教。
为什么取不到呢,请各位指教。

解决方案 »

  1.   

    给段代码参考下,是生成图表的
     Excel.Application myExcel = null;
                Excel.Workbook myBook = null;
                Excel.Worksheet mySheet;          
                object m_objOpt = System.Reflection.Missing.Value;
                DataTable dt;
               
                try
                {
                    myExcel = new Excel.ApplicationClass();
                    myExcel.Application.Workbooks.Add(true);
                    myExcel.Application.Visible = true;
                    myBook = myExcel.Workbooks[1];
                    mySheet = (Excel.Worksheet)myBook.ActiveSheet;
                  
                    for (int i = 0; i < (cEndTime.Year - cStartTime.Year) * 12 + cEndTime.Month - cStartTime.Month + 1; i++)
                    {
                        ((Excel.Range)mySheet.Columns["A:"+(Char)('A' + i) , m_objOpt]).ColumnWidth = 18;
                    }
    Excel.Chart mycChart = (Excel.Chart)myBook.Charts.Add(m_objOpt, m_objOpt, 1, m_objOpt);
                    mycChart.SetSourceData(mySheet.get_Range(string.Format("A{0}", 2),
                        string.Format("{0}{1}", indexChar,  cResultDS.Tables.Count +2)), Excel.XlRowCol.xlRows);
                    mycChart.ChartType = Excel.XlChartType.xl3DColumnStacked;
                    mycChart.Location(Excel.XlChartLocation.xlLocationAsObject, mySheet.Name);
                    mySheet.Shapes.Item(1).Left = 5;
                    mySheet.Shapes.Item(1).Top = float.Parse(mySheet.get_Range(mySheet.Cells[1, 1], mySheet.Cells[ cResultDS.Tables.Count +3, 1]).Height.ToString());
      

  2.   

    谢谢,但是我是想从模板中取得一个CHART的对象,而不是想新建一个。
    我总是取不到,这是为什么呢