У меня проблема с использованием 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""";
{имя_файла} будет заменено позже в коде на путь к файлу
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 обрабатывает данные как текст, поэтому такие вещи, как sum (c2: c100), не работают. Если я просто выделю запись и нажму Enter, она автоматически превратится в текст. Я попытался отформатировать столбец под номер в шаблоне и, как вы можете видеть, удалил двойные кавычки в sql.
Как я могу заставить Excel сразу обрабатывать эти записи как числовые, чтобы все вычисления работали?
Спасибо