【发布时间】:2014-03-09 16:13:49
【问题描述】:
我正在使用额外的功能区创建自己的 Excel 搜索和替换功能。我想在 excel 文档中找到某个字符串(不是现有文档,Visual Studio 在我运行应用程序时会自动打开 excel)。问题是他找不到我们在电子表格的编辑框(txtFind)中给出的值。当我创建一个单元对象时,应用程序在我的循环中给出了一个错误。
这是代码:
Excel.Application exc = new Excel.Application();
if (exc == null)
{
Console.WriteLine("ERROR: EXCEL couldn't be started!");
}
Workbooks workbooks = exc.Workbooks;
Workbook workbook = workbooks.Add(XlWBATemplate.xlWBATWorksheet);
Sheets sheets = workbook.Worksheets;
Worksheet worksheet = (Worksheet)sheets.get_Item(1);
if (worksheet == null)
{
Console.WriteLine("ERROR: worksheet == null");
}
for (int i = 1; i < 150; i++)
{
for (int j = 1; j < 150; j++)
{
var cell = (worksheet.Cells[i, j] as Excel.Range).Value;
if (cell == txtFind.Text.ToString())
{
MessageBox.Show("FOUND");
}
else
{
cell.FindNext();
}
}
}
【问题讨论】:
-
您的应用程序给出的错误是什么?
-
var cell = (worksheet.Cells[i, j] as Excel.Range).Value;在这一行他给出了一个错误,System.NullReferenceException
-
可能是您的转换
as Excel.Range失败或i,j范围内没有值。通过保留断点检查您在什么范围内收到此错误。 -
当我在那一行放了一个断点,应用程序失败了,那么他确实表明变量“cell”的值是空的......
标签: c# excel replace find add-in