在Excel中迭代并填充命名范围

时间:2013-12-19 10:13:38

标签: c# winforms excel

我有一个用C#编写的WinForms应用程序,我想以编程方式将一些数据导出到Excel模板中的某些命名区域。我看过这些论坛和其他地方,我能找到的最接近的代码如下 -

private Excel.Workbook m_workbook;
object missing = Type.Missing;

   public void testNamedRangeFind()
    {
        m_workbook = Globals.ThisAddIn.Application.ActiveWorkbook;
        int i = m_workbook.Names.Count;
        string address = "";
        string sheetName = "";

        if (i != 0)
        {
            foreach (Excel.Name name in m_workbook.Names)
            {
                string value = name.Value;
                //Sheet and Cell e.g. =Sheet1!$A$1 or =#REF!#REF! if refers to nothing
                string linkName = name.Name;
                //gives the name of the link e.g. sales
                if (value != "=#REF!#REF!")
                {
                    address = name.RefersToRange.Cells.get_Address(true, true, Excel.XlReferenceStyle.xlA1, missing, missing);
                    sheetName = name.RefersToRange.Cells.Worksheet.Name;
                }
                Debug.WriteLine("" + value + ", " + linkName + " ," + address + ", " + sheetName);
            }
        }    
    }

但是我收到一条错误,说'当前上下文中没有Globals这个名字'。

有人可以解释它是什么我不理解这段代码,或者另外指出一些其他代码,这些代码可以让我将数据库中的值发布到名为range的Excel模板中。

1 个答案:

答案 0 :(得分:0)

此代码在VSTO(Office的Visual Studio工具)上运行,并使用Microsoft.Office.Interop.Excel

因此,您应该在Visual Studio中创建Office Excel工作簿解决方案: File - > New - > Visual C# - > Office - > [ Select your Office version ] - > Excel Workbook