我正在使用 Visual Studio Tools for Office (2008) 开发 Excel 2007 加载项。我有一张上面有几个 ListObjects 的工作表,它们在启动时绑定到数据表。当它们被绑定时,它们会正确地自动调整大小。
当他们重新绑定时,问题就来了。我在功能区栏上有一个自定义按钮,它返回到数据库并根据用户输入的某些标准检索不同的信息。这个新数据返回并重新绑定到 ListObjects - 但是,这次它们没有调整大小,我得到一个异常:
ListObject 无法绑定,因为无法调整其大小以适合数据。ListObject 未能添加新行。这可能是由于无法将对象移动到列表对象下方而导致的。
内部异常:“Range 类的插入方法失败”
原因:Microsoft.Office.Tools.Excel.FailureReason.CouldNotResizeListObject
我无法在 Google 或 MSDN 上找到有关此错误的任何非常有意义的内容。我一直试图弄清楚这一点,但无济于事。
基本代码结构:
//at startup
DataTable tbl = //get from database
listObj1.SetDataBinding(tbl);
DataTable tbl2 = //get from database
listObj2.SetDataBinding(tbl2);
//in buttonClick event handler
DataTable tbl = //get different info from database
//have tried with and without unbinding old source
listObj1.SetDataBinding(tbl); <-- exception here
DataTable tbl2 = //get different info from database
listObj2.SetDataBinding(tbl2);
请注意,即使在 ListObject 缩小时也会发生此异常,而不仅仅是在它增长时。