将单元格中的数据分配给变量时出现问题
本文关键字:变量 问题 分配 单元格 数据 | 更新日期: 2023-09-27 18:21:59
我正在编写代码,从一个excel文档中获取数据并将其放入另一个文档中。我的想法是将开始工作簿中的数据写入一个变量,然后使用该变量将数据写入结束工作簿。这是我的代码:
sApp = new Excel.Application
sApp.Visible = false;
sBook = sApp.Workbooks.Open(SfilePath.ToString());
sSheet = (Excel.Worksheet)sBook.Sheets[1];
这只是进入工作簿的介绍代码,这是我遇到问题的代码:
formNumber = (string)(sSheet.Cells["J2"] as Excel.Range).Value2.ToString();
当我运行程序时,我收到一个错误,上面写着
ArgumentException未处理。mscorlib.dll中发生类型为"System.ArgumentException"的未处理异常。其他信息:参数不正确。(HRESULT异常:0x80070057(E_INVALIDARG))
当我研究这个错误代码(HRESULT:0x80070057)时,我发现其他人也有同样的问题。然而,所有给出的解决方案对我来说都不起作用(即清除垃圾箱,清除临时文件)。
有人能给我什么见解吗?如果你认为你可能需要了解更多关于代码的信息,请告诉我。
谢谢。
我发现了我的错误,我试图用它们的名字"J2","K2"调用这些细胞。但你不能这样做,必须根据它们的点位置。感谢所有提交答案的人,我很感激。
试试这个。。
Excel.Range workSheetUsedRange = sSheet.UsedRange;
string formNumber = string.Empty;
if ((workSheetUsedRange.Cells[rowIndex, columnIndex] as Excel.Range).Value2 != null)
{
formNumber = (workSheetUsedRange.Cells[rowIndex, columnIndex] as Excel.Range).Value2.ToString();
}
excelUtil.SaveWorkBook(file, ref workbook);
您可以使用此代码来获取使用rowIndex和columnIndex的任何单元格的值。检查您要读取的单元格的值是否为空是一种很好的做法。如果该值为null,则会得到一个异常。
它很简单,如果您将字符串地址值与Cell["J2"]一起使用,那么它将抛出无效参数错误。
唯一需要更改的是将"单元格"替换为"范围",这样它就可以毫无问题地工作。
string formNumber = sSheet.Range["J2"].Text.ToString();
或者,如果你只是出于某种原因想使用Cell,那么就用这种方式,
// Note J = 10
using xl = Microsoft.Office.Interop.Excel;
string formNumber = (sSheet.Cells[10, 2] as xl.Range).Text.ToString();
最后一行是保存工作簿。看起来我使用实用程序库粘贴了一个代码。您可以使用代码进行保存。除了您提到的错误代码外,您收到的错误消息是什么?您能否提供其他有助于理解问题/错误的详细信息?