C Sharp ExcelParser 在空单元格上抛出异常
C Sharp ExcelParser throws exceptions on empty cells
所以,我正在尝试制作一个 Excel 文档解析器,一切顺利,直到它遇到 Excel 中的空单元格。然后它抛出异常 *"Microsoft.CSharp.RuntimeBinder.RuntimeBinderException" occurred in System.Core.dll"
namespace ExcelParser {
class Program
{
static void Main(string[] args)
{
Excel.Application excelApp = new Excel.Application();
excelApp.Visible = true;
string _sourceFile = "F:\Bullshit\book1.xlsm";
excelApp.Workbooks.Open(_sourceFile);
int row = 1;
Excel.Worksheet currentSheet = (Excel.Worksheet)excelApp.Workbooks[1].Worksheets[1];
Console.WriteLine("Initializing");
while (currentSheet.get_Range("A" + row).Value2 != null)
{
List<string> tempList = new List<string>();
for (char column = 'A'; column < 'J'; column++)
{
Console.Write(column + row.ToString());
Excel.Range cell = currentSheet.get_Range(column + row.ToString());
Console.WriteLine(cell.Value2.ToString() != "" ? cell.Value2.ToString() : "null!"); // the problem line
}
row++;
}
Console.ReadKey();
}
}
}
如果没有对象,则不能转换对象的 ToString 方法。它会 return 为空,但 null
与 ""
不同 尝试使用此行:
Console.WriteLine(("" + cell.Value2).ToString() != "" ? cell.Value2.ToString() : "null!");
摆脱异常的一种快速而肮脏的方法就是
try
{
Console.WriteLine(cell.Value2.ToString() != "" ? cell.Value2.ToString(): "null!");
}
catch(exception e)
{
Console.WriteLine(e.Argument);
}
我猜 cell.Value2
对于空单元格来说是空的。在那种情况下,您不能对其调用 .ToString()。
不过您可以检查一下:
Console.WriteLine(cell.Value2 != null ? cell.Value2.ToString() : "null!");
所以,我正在尝试制作一个 Excel 文档解析器,一切顺利,直到它遇到 Excel 中的空单元格。然后它抛出异常 *"Microsoft.CSharp.RuntimeBinder.RuntimeBinderException" occurred in System.Core.dll"
namespace ExcelParser {
class Program
{
static void Main(string[] args)
{
Excel.Application excelApp = new Excel.Application();
excelApp.Visible = true;
string _sourceFile = "F:\Bullshit\book1.xlsm";
excelApp.Workbooks.Open(_sourceFile);
int row = 1;
Excel.Worksheet currentSheet = (Excel.Worksheet)excelApp.Workbooks[1].Worksheets[1];
Console.WriteLine("Initializing");
while (currentSheet.get_Range("A" + row).Value2 != null)
{
List<string> tempList = new List<string>();
for (char column = 'A'; column < 'J'; column++)
{
Console.Write(column + row.ToString());
Excel.Range cell = currentSheet.get_Range(column + row.ToString());
Console.WriteLine(cell.Value2.ToString() != "" ? cell.Value2.ToString() : "null!"); // the problem line
}
row++;
}
Console.ReadKey();
}
}
}
如果没有对象,则不能转换对象的 ToString 方法。它会 return 为空,但 null
与 ""
不同 尝试使用此行:
Console.WriteLine(("" + cell.Value2).ToString() != "" ? cell.Value2.ToString() : "null!");
摆脱异常的一种快速而肮脏的方法就是
try
{
Console.WriteLine(cell.Value2.ToString() != "" ? cell.Value2.ToString(): "null!");
}
catch(exception e)
{
Console.WriteLine(e.Argument);
}
我猜 cell.Value2
对于空单元格来说是空的。在那种情况下,您不能对其调用 .ToString()。
不过您可以检查一下:
Console.WriteLine(cell.Value2 != null ? cell.Value2.ToString() : "null!");