C# 如何在Excel中仅读取值在特定范围内的单元格-使用VSTO C

C# 如何在Excel中仅读取值在特定范围内的单元格-使用VSTO C,c#,visual-studio-2010,range,excel-addins,C#,Visual Studio 2010,Range,Excel Addins,我正在用VisualStudio 2010 for Excel 2007制作Excel插件。在我的Excel工作簿中,我有一个命名范围,我称之为MyRange。从C10单元到M25单元。如何仅读取MyRange中具有值的单元格。注意:我不想从其他单元格读取任何内容,仅在我的范围内?我想将包含值的单元格读入Word文档。我想我已经明白了 我曾尝试使用UsedRange,但它选择了A1-M25中的所有内容。我只想选择值为C10-M25的单元格。这是我到目前为止得到的 string FileName

我正在用VisualStudio 2010 for Excel 2007制作Excel插件。在我的Excel工作簿中,我有一个命名范围,我称之为MyRange。从C10单元到M25单元。如何仅读取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);

非常感谢您的帮助。谢谢。

要从“namedRange”中读取每个单元格值,您可以按如下方式在范围内循环:

foreach (Excel.Range cell in namedRange.Cells)
            {
                if (String.IsNullOrEmpty(cell.Value.ToString()))
                {
                    string thisCellHasContent = cell.Value.ToString();
                    string thisCellAddress = cell.Address.ToString();
                }
            } 

“选择”是指将值读入c还是在excel中选择?是的,我指的是读取。谢谢你指出这一点。英语不是我的第一语言:我现在已经改变了问题。非常感谢你的回答。接下来我要做的是将这些值写入Word中的表中。你知道我该怎么做吗?很酷,很高兴它成功了。那就把它标为正确答案吧!把你的下一个问题作为一个新问题问。对不起,我对Word没有任何经验。