Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

ado excel при insert добавляются апострофы в каждую ячейку

5.4K
04 декабря 2009 года
cursor
114 / / 05.01.2008
Здравствуйте.
У меня такая проблема. Подключаюсь к Excel файлу через ADO для генерирования отчета. И при insert'e в каждой ячейке перед текстом стоит апостроф.
Почитал на форумах - это для того, чтобы excel считал данные за текст.
Как можно сделать без апострофов?

Код:
String sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + saveFileDialog1.FileName + ";Extended Properties=Excel 8.0;";
OleDbConnection objConn = new OleDbConnection(sConnectionString);
objConn.Open();
OleDbCommand objCmd = new OleDbCommand("CREATE TABLE analyses (a varchar(100), b varchar (100))", objConn);
objCmd.ExecuteNonQuery();
string price;
while (rdr.Read())
{
                objCmd.CommandText = "INSERT INTO analyses (a, b) VALUES ('" + rdr.GetString(0) + "', '" + rdr.GetString(1) + "')";
                objCmd.ExecuteNonQuery();
}
5
04 декабря 2009 года
hardcase
4.5K / / 09.08.2005
Цитата: cursor

Как можно сделать без апострофов?

Пользоваться параметрами команды.

5.4K
07 декабря 2009 года
cursor
114 / / 05.01.2008
Цитата: hardcase
Пользоваться параметрами команды.


Попробовал вот так:

 
Код:
objCmd.Parameters.Add("item1", OleDbType.VarChar);
objCmd.Parameters.Add("price", OleDbType.VarChar);
objCmd.Parameters[0].Value = rdr.GetString(0);
objCmd.Parameters[1].Value = price;
obj.Cmd.ExecuteNonQuery();

Все равно в ячейках экселя перед значением ставится апостроф (например слово туфли станет 'туфли)
Вместо VarChar перепробовал и Char и BSTR...
Может я не в ту сторону копаю?
8.2K
08 декабря 2009 года
bagie2
299 / / 26.10.2008
вроде у меня было нечто похожее но точно не помню. может быть попробовать поменять формат ячейки с самом шаблоне. тестовый, общий или что-то типа.
5.4K
09 декабря 2009 года
cursor
114 / / 05.01.2008
Цитата: bagie2
может быть попробовать поменять формат ячейки с самом шаблоне. тестовый, общий или что-то типа.


Находил на форумах такое решение.
В моем случае запись в шаблон исключена. Файл создается для отчетов, название всегда разное.
Также находил решения вместо ADO использовать ODBC.
К сожалению, не помогло.
Мне кажется, проблема в том, что программа .NET Framework.
Видимо, надо писать dll для экспорта на c++, используя ODBC.

5
09 декабря 2009 года
hardcase
4.5K / / 09.08.2005
Терминальный вариант - работать с Excel напрямую через COM интерфейсы.

АПД. Кстати Excel данные отображает коректно, но вот в ячейке они записаны с апострофом, по видимому, этим символизируется их принадлежность к строковому типу.
5.4K
10 декабря 2009 года
cursor
114 / / 05.01.2008
Цитата:
Видимо, надо писать dll для экспорта на c++, используя ODBC.


тоже не помогло.
Видимо действительно через com интерфейсы...

56K
23 декабря 2009 года
magic_b
1 / / 23.12.2009
Столкнулся с такой же проблемой, решила так:

var InsertCommand = new OleDbCommand("insert into [products$] ([product], [count], [price]) values (@product, @count, @price)", con);
InsertCommand.Parameters.Add("@product", OleDbType.VarChar, 255, "product");
InsertCommand.Parameters.Add("@count", OleDbType.Double).SourceColumn = "count";
InsertCommand.Parameters.Add("@price", OleDbType.Double).SourceColumn = "price";
da.InsertCommand = InsertCommand;
da.Update(this._table);

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог