C# 使用互操作从excel提取数据-忽略不包含数据的某些单元格
我使用c#和visual studio从excel工作表中提取数据,将其放入数组(在每个字符串的末尾添加逗号),然后将其输出到.CSV文件 现在我遇到了一个障碍,当一个单元格没有数据,或者没有预期的数据(即图像)时就会发生 我假设这是在excel工作表的读取端,而不是输出到.CSV,因为当我得到这个错误时,我没有将任何数据放入数组 下面是我正在使用的代码片段,它改编自Microsoft使用互操作访问Excel数据的示例C# 使用互操作从excel提取数据-忽略不包含数据的某些单元格,c#,visual-studio-2008,excel-2007,C#,Visual Studio 2008,Excel 2007,我使用c#和visual studio从excel工作表中提取数据,将其放入数组(在每个字符串的末尾添加逗号),然后将其输出到.CSV文件 现在我遇到了一个障碍,当一个单元格没有数据,或者没有预期的数据(即图像)时就会发生 我假设这是在excel工作表的读取端,而不是输出到.CSV,因为当我得到这个错误时,我没有将任何数据放入数组 下面是我正在使用的代码片段,它改编自Microsoft使用互操作访问Excel数据的示例 //Get a range of data.
//Get a range of data.
range = objSheet.get_Range(ranges1, ranges2);
//Retrieve the data from the range.
Object[,] saRet;
saRet = (System.Object[,])range.get_Value(Missing.Value);
//Determine the dimensions of the array.
long iRows;
long iCols;
iRows = saRet.GetUpperBound(0);
iCols = saRet.GetUpperBound(1);
//Build a string that contains the data of the array.
String valueString;
valueString = "Prices";
System.IO.StreamWriter OutWrite = new System.IO.StreamWriter("h:\\out.csv");
for (long rowCounter = 1; rowCounter <= iRows; rowCounter++)
{
for (long colCounter = 1; colCounter <= iCols; colCounter++)
{
//Write the next value into the string.
valueString = String.Concat(valueString,
saRet[rowCounter, colCounter].ToString() + ", ");
}
//Write in a new line.
valueString = String.Concat(valueString, "\n");
}
//获取一系列数据。
范围=对象表。获取范围(范围1,范围2);
//从范围中检索数据。
物体[,]纱布;
saRet=(System.Object[,])range.get_值(缺少.Value);
//确定数组的维度。
长长的彩虹;
长图标;
iRows=saRet.GetUpperBound(0);
iCols=saRet.GetUpperBound(1);
//生成包含数组数据的字符串。
字符串值字符串;
valueString=“价格”;
System.IO.StreamWriter OutWrite=新的System.IO.StreamWriter(“h:\\out.csv”);
对于(长rowCounter=1;rowCounter这条线是危险的:
valueString = String.Concat(valueString, saRet[rowCounter, colCounter].ToString() + ", ");
由于saRet[rowCounter,colCounter]
的结果可能为空。如果空单元格可以接受空字符串,请使用Convert.ToString()
,这将把空字符串解释为空字符串:
valueString = String.Concat(valueString, Convert.ToString(saRet[rowCounter, colCounter]) + ", ");
我怀疑这就是为什么您会得到NullReferenceException
,它确实为我提供了更合理的数据并避免了错误。非常感谢!