c#互操作.excel get_range调用失败,Null引用异常
本文关键字:失败 Null 引用 异常 调用 range 互操作 excel get | 更新日期: 2023-09-27 18:10:58
我试图在Windows窗体应用程序中的工作表访问值。我首先通过按钮(btnBrowse)打开电子表格文件,然后一旦打开,用户在文本框(txtBatchIDCell)中输入单元格值,值的内容显示在另一个文本框(txtBatchID)中。
然而,虽然我可以在首先打开电子表格的函数中查询单元格(使用getRange),但我不能在txtBatchIDCell_textchanged子例程中查询它们,我得到一个空引用错误(即使我将单元格值硬编码到get_Range调用中:
public partial class ImportXLS : Form
{
public Excel.Application xlApp = new Excel.Application();
public Excel.Workbook xlWorkBook;
public Excel.Worksheet xlWorkSheet;
public object none = Type.Missing;
public ImportXLS()
{
InitializeComponent();
}
private void btnBrowse_Click(object sender, EventArgs e)
{
openFileDialog1.ShowDialog();
txtSpreadsheet.Text = openFileDialog1.FileName;
xlWorkBook = xlApp.Workbooks.Open(
txtSpreadsheet.Text, //FileName
0, //UpdateLinks
true, //ReadOnly
5, //Format
none, //Password
none, //WriteResPassword
true,//IgnoreReadOnlyRecommended
Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, //Origin
"'t", //Delimiter
false, //Editable
false, //Notify
0, //Converter
false, //AddToMRU
1, //Local
0 //CorruptLoad
);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); //get worksheet
MessageBox.Show("Sheet open!");
}
private void txtBatchIDCell_TextChanged(object sender, EventArgs e)
{
txtBatchID.Text = xlWorkSheet.get_Range(txtBatchIDCell.Text, txtBatchIDCell.Text).Value2.ToString();
}
}
我已经使工作簿公开,但它仍然给我相同的NullReference异常。
更新:get_range调用现在也不能在btnBrowse中工作。我做错了什么?
解决:事实证明它实际上工作得很好,除了所讨论的单元格是空的,因此为什么它会抛出异常,我没想到它会回来。