gpt4 book ai didi

c# - 使用 ADO.NET 写入空白 Excel 工作表

转载 作者:行者123 更新时间:2023-11-30 19:49:51 25 4
gpt4 key购买 nike

我正在尝试使用 ADO.NET 连接并写入 excel 文件。我用默认的 Excel 工作表创建了一个空白文件(我也尝试过使用自定义工作表。)

出于某种原因,我无法将整行数据写入工作表。如果我创建一个新工作表它工作正常,但是我有太多工作表并且我无法删除任何工作表。

要将一行数据写入空白表,您需要做些什么特别的事情吗?

我尝试做:

path= the path including my file. 

connString = String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=\"Excel 8.0;HDR=NO;\"", Server.MapPath(path));

dbCmd.CommandText = "Update [Sheet1$] Set F1 = 'Col1', F2 = 'Col2', F3 = 'Col3', F4 = 'Col4'";
dbCmd.ExecuteNonQuery();

最佳答案

下面是一个创建全新电子表格的示例,创建一个工作表 (Sheet1),然后向其中插入一行。此示例的大部分内容基于来自 David Hayden 的博客条目(对于这项任务来说很棒的博客条目,顺便说一句!!)。

另外,你应该看看这个 Microsoft KB article从 ADO.NET 读取/写入 Excel——它确实涉及很多细节。

    //Most of this code was from David Hayden's blog:
// http://www.davidhayden.com/blog/dave/archive/2006/05/26/2973.aspx
static void Main(string[] args)
{
string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Temp\TestSO1.xls;Extended Properties=""Excel 8.0;HDR=NO;""";
DbProviderFactory factory =
DbProviderFactories.GetFactory("System.Data.OleDb");

using (DbConnection connection = factory.CreateConnection())
{
connection.ConnectionString = connectionString;
using (DbCommand command = connection.CreateCommand())
{
connection.Open(); //open the connection

//use the '$' notation after the sheet name to indicate that this is
// an existing sheet and not to actually create it. This basically defines
// the metadata for the insert statements that will follow.
// If the '$' notation is removed, then a new sheet is created named 'Sheet1'.
command.CommandText = "CREATE TABLE [Sheet1$] (F1 number, F2 char(255), F3 char(128))";
command.ExecuteNonQuery();

//now we insert the values into the existing sheet...no new sheet is added.
command.CommandText = "INSERT INTO [Sheet1$] (F1, F2, F3) VALUES(4,\"Tampa\",\"Florida\")";
command.ExecuteNonQuery();

//insert another row into the sheet...
command.CommandText = "INSERT INTO [Sheet1$] (F1, F2, F3) VALUES(5,\"Pittsburgh\",\"Pennsylvania\")";
command.ExecuteNonQuery();
}
}
}

我发现的唯一问题是,即使连接字符串声明不使用标题,您仍然必须为工作表定义列名,并且 ADO.NET 在您创建具有行标题名称的工作表时插入一行.除了插入所有内容并删除第一行之后,我似乎找不到解决方法。不是很优雅。

希望对您有所帮助!!如果您还有其他问题,请告诉我。

关于c# - 使用 ADO.NET 写入空白 Excel 工作表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3258678/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com