Member 12327226 Ответов: 2

Обновление ячеек, на которые ссылаются формулы, не попадает в событие изменения столбца в excel vsto


Я внедряю надстройку Excel, в которой требование состоит в том, что мы должны загрузить данные со уровня сервиса и отобразить их на листе Excel.Пользователь может внести некоторые изменения в данные, отображаемые в excel. Для отслеживания этих событий я использую событие изменения столбца таблицы данных, как я использую ado.net.

Проблема, с которой я сталкиваюсь, заключается в том, что в любой из ячеек я даю формулу, скажем, например. У меня есть 3 ячейки A1,B1, C1.

В ячейке A1 содержится значение 2. В1 содержится 3. в С1 я даю формулу =А1+В1, в ячейке показывает 5 и я в состоянии получить значение, когда я отладки.

Но когда я обновляю ячейки A1 & B1 до 5 и 6, ячейка C1 также меняется, но я не могу ее отследить.

Что я уже пробовал:

Вот код, который я использую

web = new WebClient();
url = string.Format("{0}/DownloadData?parm1={1}&parm2={2}&parm3={3}", baseUrl, userName, _value);

string  response = web.DownloadString(url);

// converting the data to DataTable as the response is XML Format
using (StringReader stringReader = new StringReader(response))
{
    _dsDownloadData = new DataSet();
    _dsDownloadData.ReadXml(stringReader);

}
// I am using column changed event of DataTable to track the changes.
 _dsDownloadData.Tables[1].ColumnChanged += new DataColumnChangeEventHandler(ProductRevenueData_ColumnChanged);

public static void ProductRevenueData_ColumnChanged(object sender, DataColumnChangeEventArgs e)
{
    try
    {
        // Trying to track the changes here
        clsProductUpdateXMLManager.Insert(e.Row, e.Column);

    }
    catch (Exception ex)
    {
        MessageBox.Show("Error", "Error-Window", MessageBoxButtons.OK, MessageBoxIcon.Warning);
        return;
    }
}

2 Ответов

Рейтинг:
1

Member 12327226

Поскольку я привязываю таблицу данных, и я хочу получить всю информацию о строке данных при изменении значения ячейки. так как же я могу это сделать?


Richard Deeming

Если вы хотите ответить на решение, нажмите кнопку "есть вопрос или комментарий?" кнопка под этим решением.

Не опубликуйте свой комментарий как новое "решение".

Рейтинг:
0

Maciej Los

Вы должны использовать Рабочий лист.Событие Изменения (Microsoft.Офис.Инструменты.Превосходить)[^] вместо ColumnChanged Обратите внимание, что это событие не происходит при изменении ячеек во время пересчета!

Если вы хотите поймать событие вычисления ячейки используйте appriopriate Рабочий лист.Вычислить событие[^].

Удачи вам!