我正在开发一个 Excel 加载项来对 Excel 工作表执行多项检查。检查用于布局、文本和公式。我创建了一个功能区,当您按下按钮时它会调用 WinForm。在表格上,您可以设置不同的选项,然后单击“检查”进行全面检查。
工作表总是有相同的标题,所以我有一个类来检查标题中的布局。在这个类中,我有检查对齐、字体、高度等的方法。这是检查单元格对齐的方法的代码。它需要 3 个参数,范围、预期的水平对齐和垂直对齐。
private void CheckRangeAlignment(Excel.Range range, Excel.XlHAlign expHA,
Excel.XlVAlign expVA) {
Excel.XlHAlign actHA = Excel.XlHAlign.xlHAlignLeft;
Excel.XlVAlign actVA = Excel.XlVAlign.xlVAlignTop;
if (!Convert.IsDBNull(range.HorizontalAlignment))
actHA = (Excel.XlHAlign)range.HorizontalAlignment;
if (!Convert.IsDBNull(range.VerticalAlignment))
actVA = (Excel.XlVAlign)range.VerticalAlignment;
if (expHA != Excel.XlHAlign.xlHAlignLeft) {
if (actHA != expHA || actVA != expVA) {
this.FeedbackItems.AddDataItem(range.Row, range.Column, "Uitlijning");
this._errors++;
}
} else {
if (actHA != expHA && actHA != Excel.XlHAlign.xlHAlignGeneral || actVA != expVA) {
this.FeedbackItems.AddDataItem(range.Row, range.Column, "Uitlijning");
this._errors++;
}
}
MRCO(actHA);
MRCO(actVA);
}
一些床单上发生了一件奇怪的事情。该范围的属性“HorizontalAlignment”为空。在 VS2012 中调试时,它会给出'{}'。所以代码给出了一个错误,说它无法将 Microsoft.Office.Interop.Excel.XlHAlign 转换为 System.DBNull。这就是我现在检查 DBNull 值的原因。现在这是真正奇怪的事情:我有一个文件没有问题,而另一个文件有问题。它也发生在 Font.Size、VerticalAlignment、Font.Bold 和 Font.Underline 等其他属性上。
有人可以帮我解决这个问题吗?我对 C# 中的 Excel 很陌生,所以也许我忽略了一些东西?提前致谢