Я разрабатываю надстройку Excel 2007 с помощью Visual Studio Tools for Office (2008). У меня есть один лист с несколькими ListObjects на нем, которые привязаны к datatables при запуске. Когда они связаны, они автоматически настраиваются..NET - Excel ListObject autosizing on databind
Проблема возникает, когда они повторно связаны. У меня есть пользовательская кнопка на ленточной панели, которая возвращается в базу данных и извлекает различную информацию на основе некоторых критериев, которые вводит пользователь. Эти новые данные возвращаются и вновь связаны с 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 сокращается, а не только тогда, когда он растет.