Как читать только ячейки со значениями в определенном диапазоне в Excel - с помощью VSTO С#

Я делаю ExcelAddin в VisualStudio 2010 для Excel 2007. В моей книге Excel у меня есть именованный диапазон, который я называю MyRange. Он идет от ячеек C10 до M25. Как я могу читать только те ячейки, которые имеют значение в MyRange. Примечание. Я не хочу ничего читать из других ячеек, только внутри MyRange? Я хочу прочитать ячейки, в которых есть значения, в документ Word. Думаю, я это понял.

Я пытался использовать UsedRange, но он выбирает все из A1-M25 (я хочу выбрать только ячейки со значением из C10-M25). Вот что я получил до сих пор.

string FileName = @"C:\MyFile.xlsx";
Excel.Application xlApp = xlApp = new Excel.Application();
Excel.Workbook xlWorkBook = null;
Excel.Worksheet xlWorkSheet = null;

xlWorkBook = xlApp.Workbooks.Open(FileName);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);

object cell1 = "C10", cell2 ="M25";
//Here are some different versions that I tried. I also tried to use the SpecialCell    //method but it didn´t seem to work.
Excel.Range namedRange = (Excel.Range)xlWorkSheet.get_Range("C10", "M25");
Excel.Range last = (Excel.Range)xlWorkSheet.UsedRange;
Excel.Range usedRange = (Excel.Range)xlWorkSheet.get_Range("C10", last);

Любая помощь высоко ценится. Спасибо.


person Steini    schedule 11.07.2012    source источник
comment
Под «выбрать» вы имеете в виду прочитать значение в С# или выбрать в Excel?   -  person marvc1    schedule 11.07.2012
comment
Да, я имею в виду читать. Спасибо, что указали на это. Английский не мой родной язык :) Теперь я изменил вопрос.   -  person Steini    schedule 11.07.2012


Ответы (1)


Чтобы прочитать значение каждой ячейки из вашего 'namedRange', вы можете прокрутить диапазон следующим образом:

foreach (Excel.Range cell in namedRange.Cells)
            {
                if (String.IsNullOrEmpty(cell.Value.ToString()))
                {
                    string thisCellHasContent = cell.Value.ToString();
                    string thisCellAddress = cell.Address.ToString();
                }
            } 
person marvc1    schedule 11.07.2012
comment
Большое спасибо за ваш ответ marvc1. Далее я хочу записать эти значения в таблицу в Word. Любые идеи о том, как я это сделаю? - person Steini; 12.07.2012
comment
Круто, рад, что сработало. Тогда отметьте это как правильный ответ! И задайте свой следующий вопрос как новый вопрос. - person marvc1; 12.07.2012
comment
К сожалению, у меня нет опыта работы с Word. - person marvc1; 12.07.2012