У меня проблема с использованием OLDEDB из C # для записи записей в файл Excel. По сути, я хочу использовать файл шаблона Excel для форматирования некоторой информации. Идея состоит в том, что пользователи могут выполнить запрос, он заполняет результаты в файл Excel, где пользователь может затем продолжать использовать Excel для манипулирования результатами.
Для этого я создаю вкладку «raw_data» и использую OLEDB для записи в нее, как в таблице. Однако я сталкиваюсь с проблемой, где предустановленные расчеты. Некоторые столбцы являются текстовыми, другие являются числами, и формальные должны ссылаться на эти столбцы, как только лист открывается.
Excel Версия 2003
C # /. Net 3.5
Вот моя строка подключения
string connectString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={filename};Extended Properties=""Excel 8.0;HDR=YES;IMEX=0""";
{имя_файла} get будет заменено позже в коде с путем к файлу
DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.OleDb");
using (DbConnection connection = factory.CreateConnection())
{
connection.ConnectionString = connectString;
using (DbCommand command = connection.CreateCommand())
{
connection.Open();
query = "INSERT INTO [raw_prod$] (correlationid, created, ipaddr, nai, started, delta, csid, bytesin, bytesout, cause, bsid, servopt, svzone) VALUES (\"{correlationid}\", \"{created}\", \"{ipaddr}\", \"{nai}\", \"{started}\", {delta}, \"{csid}\", {bytesin}, {bytesout}, {cause}, \"{bsid}\", \"{servopt}\", \"{zone}\")";
//Replace {} code with actual values skipped
command.CommandText = query;
command.ExecuteNonQuery();
}
}
Когда этот прогон получает данные, как и ожидалось, но Excel обрабатывает данные как текст, поэтому такие вещи, как сумма (c2: c100) не работают. Если я просто выделю запись и нажму ввод, она автоматически станет текстом. Я попытался отформатировать столбец в число в шаблоне, и, как вы можете видеть, я удалил двойные кавычки в SQL.
Как получить Excel, чтобы сразу обрабатывать эти записи как числовые, чтобы все вычисления работали?
Спасибо