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();
}
ado excel при insert добавляются апострофы в каждую ячейку
У меня такая проблема. Подключаюсь к Excel файлу через ADO для генерирования отчета. И при insert'e в каждой ячейке перед текстом стоит апостроф.
Почитал на форумах - это для того, чтобы excel считал данные за текст.
Как можно сделать без апострофов?
Код:
Цитата: cursor
Как можно сделать без апострофов?
Пользоваться параметрами команды.
Цитата: 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();
objCmd.Parameters.Add("price", OleDbType.VarChar);
objCmd.Parameters[0].Value = rdr.GetString(0);
objCmd.Parameters[1].Value = price;
obj.Cmd.ExecuteNonQuery();
Все равно в ячейках экселя перед значением ставится апостроф (например слово туфли станет 'туфли)
Вместо VarChar перепробовал и Char и BSTR...
Может я не в ту сторону копаю?
вроде у меня было нечто похожее но точно не помню. может быть попробовать поменять формат ячейки с самом шаблоне. тестовый, общий или что-то типа.
Цитата: bagie2
может быть попробовать поменять формат ячейки с самом шаблоне. тестовый, общий или что-то типа.
Находил на форумах такое решение.
В моем случае запись в шаблон исключена. Файл создается для отчетов, название всегда разное.
Также находил решения вместо ADO использовать ODBC.
К сожалению, не помогло.
Мне кажется, проблема в том, что программа .NET Framework.
Видимо, надо писать dll для экспорта на c++, используя ODBC.
АПД. Кстати Excel данные отображает коректно, но вот в ячейке они записаны с апострофом, по видимому, этим символизируется их принадлежность к строковому типу.
Цитата:
Видимо, надо писать dll для экспорта на c++, используя ODBC.
тоже не помогло.
Видимо действительно через com интерфейсы...
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);