我有一个用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模板中。
答案 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