2009-04-01 2 views
0

Проект, над которым я работаю, требует значений из приложения C# для обновления 6 значений в листе Excel. Этот лист excel заполняет именованный диапазон элементов и цен, управляемый рядом формул и рабочих листов VLOOKUP в том же файле Excel.Datatable не возвращает значения из Excel (значения из формул)

Два столбца в диапазоне называются «Пункт» & «Цена».

«Элемент» - это столбец элементов, конкатенированный с формулами в электронной таблице, и они выглядят отлично в DataTable. Однако ни одно из значений в столбце «Цена» (все значения чисел из формул VLOOKUP) не отображается в DataTable.

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

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

Таким образом, единственное, что я могу думать, вызывает проблему, заключающуюся в том, что формулы не пересчитываются после того, как значения передаются в нее.

Есть ли способ открыть файл Excel на C# и заставить его пересчитать все формулы?

+0

Какой драйвер вы используете, чтобы открыть лист excel? OLEDB или ODBC? – jdecuyper

+0

извините, OLEDB как за запрос обновления (добавление значений на листе), так и для запроса выбора, который заполняет DataTable – lazygamer

ответ

1

Никогда не ум,

Заменены обновление OLEDB с Interop Excel, открывая Excel файл с Interop позволяет формулы пересчитывать.

Смежные вопросы