Обновление ячейки Excel с нечисловыми данными в C # - PullRequest
1 голос
/ 24 марта 2010

У меня есть запрос, который

ExcelQuery = "Update [Sheet1$] "
               +"set CITIZEN_ID = #" + value 
               + " where CITIZEN_ID = " + value; 

Как видите, я просто добавляю "#" к полю CITIZEN_ID. значение является целым / числовым значением. Таким образом, если бы у меня было «256» в столбце CITIZEN_ID, оно было бы преобразовано в «# 256»

Когда я выполняю это, я получаю OleDbException Syntax error in date in query expression, поэтому я заключил часть запроса в одинарные кавычки, как это,

ExcelQuery = "Update [Sheet1$] "
               +"set CITIZEN_ID = '#" + value + "' "
               +"where CITIZEN_ID = " + value; 

После этого я получаю еще одно исключение OleDbException с Data type mismatch in criteria expression.

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

Спасибо!

Ответы [ 2 ]

1 голос
/ 25 марта 2010

Похоже, вы пытаетесь использовать SQL для INSERT текстового значения в столбце, который СУБД (компонент Database Engine Access) видит как DOUBLE FLOAT и, следовательно, получает ошибку несоответствия типов. Возможно, вы сможете изменить значения реестра, чтобы убедить механизм считать столбец текстовым, см .:

Внешние данные - смешанные типы данных

1 голос
/ 24 марта 2010

Разве вы не можете просто изменить формат номера, чтобы он отображал «#» перед каждым номером в поле CITIZEN_ID.

Это не решит вашу заявленную проблему .. но этого избежать: -)

Обновление: В этом вопросе StackOverflow ( excel-cell-formatting ) говорится о форматировании ячеек с использованием C #

...