我在使用 C# 中的 OLDEDB 将条目写入 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""";
{filename} 稍后在代码中被替换为文件的路径
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) 之类的东西不起作用。如果我只是突出显示一个条目并按回车键,它将自动变为文本。我尝试将列格式化为模板中的数字,如您所见,我删除了 sql 中的双引号。
如何让 excel 立即将这些条目视为数字,以便所有计算都有效?
谢谢