2016-03-13 1 views
0

Я пытаюсь что-то сделать, но мне тяжело. Идея заключается в том, что я просто зацикливаю на листе excel и нахожу все диаграммы, устанавливаю его источник, а затем перемещаю этот лист в конец рабочей книги.C# set Excel chart source

Я использую C# и Microsoft.Office.Interop.Excel

EDIT

Причина, почему мне нужен цикл Еогеасп, это потому что я не знаю, сколько карт я буду иметь на что лист, как я хочу, чтобы позволить пользователю просто поставить диаграммы в лист, после того, как я динамически получать данные из SQL и поместить его в другой лист, мне нужно обновить эти диаграммы

Это то, что я пытался до сих пор

// Get source for charts 
Excel.Range ChartSourceRange = xlWorkSheet3.Range["A4", "G5"]; 

// Here becomes the problem ...I don't know how to go foreach in excel sheet 
foreach (Microsoft.Office.Interop.Excel.ChartObject item in xlWorkBook.Sheets[2]) 
{ 
    item.Chart.SetSourceData(ChartSourceRange); 
} 

int totalSheets = xlWorkBook.Sheets.Count; 
xlWorkBook.Sheets[2].Move(xlWorkBook.Sheets[totalSheets]); 

Этот код дает мне исключение ...

Unable to cast COM object of type 'System.__ComObject' to 
interface type 'System.Collections.IEnumerable'. 
This operation failed because the QueryInterface call on the COM component for the 
interface with IID '{496B0ABE-CDEE-11D3-88E8-00902754C43A}' failed 
due to the following error: 'No such interface 
supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE))' 
and the COM component does not support IDispatch::Invoke calls for DISPID_NEWENUM. 

Можете ли вы бросить мне советы, как изменить этот код, так что мой Еогеасп может пройти через Excel лист?

Спасибо

ответ

1

Try:

foreach (xl.ChartObject item in xlWorkBook.Sheets[2].ChartObjects()) 
{ 
    item.Chart.SetSourceData(ChartSourceRange); 
} 

Кроме того, я предлагаю вам посмотреть here для того, чтобы знать, как использовать Excel в C# (или VB.Net). Поскольку это COM-объект, вам необходимо его правильно отпустить:

+0

Спасибо, человек! Он работал как шарм. – Veljko89

+0

. Добро пожаловать. – ehh