c# - 从 .Net 将简单数据插入 Excel 文件的最简单方法

标签 c# .net excel

我有一个包含约 10 列和 1-20 行的 Excel 文件。我需要插入包含各种数据元素的 1-20 行。

我想知道是否有一种方法可以在 excel 文件中放置一些标签,以便可以找到并替换它们。将列标记为“名称”的东西。这样在代码中我可以说:

名称[0] = object.name;

我不确定这种确切的方法是否可行,但我真的不需要任何繁重的工作,我宁愿不对单元格位置进行硬编码,因为 excel 文件可能会随着时间的推移而改变。

我还必须在行中添加一个隐藏的“ID”单元格。不过我想我以后可以过那座桥。

最佳答案

使用 ADO.NET 可以很容易地向 Excel 工作表添加一行

string fileName = @"D:\test.xlsx"; 
string connectionString = String.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;" + 
        "Data Source={0};Extended Properties='Excel 12.0;HDR=YES;IMEX=0'", fileName); 

using(OleDbConnection cn = new OleDbConnection(connectionString))
{
    cn.Open();
    OleDbCommand cmd1 = new OleDbCommand("INSERT INTO [Sheet1$] " + 
         "([Column1],[Column2],[Column3],[Column4]) " + 
         "VALUES(@value1, @value2, @value3, @value4)", cn);
   cmd1.Parameters.AddWithValue("@value1", "Key1");
   cmd1.Parameters.AddWithValue("@value2", "Sample1");
   cmd1.Parameters.AddWithValue("@value3", 1);
   cmd1.Parameters.AddWithValue("@value4", 9);
   cmd1.ExecuteNonQuery();
}

上面的代码假定您的第一行的标题以 Column1... 作为列名。 此外,代码使用 Excel 2007 或 2010 的 ACE OleDB 提供程序而不是 Microsoft.Jet.OleDb.4.0。

编辑:要引用命名范围,您可以将 sql 命令更改为此命令

    OleDbCommand cmd1 = new OleDbCommand("INSERT INTO [yourNamedRange] " + 
                        "VALUES(@value1, @value2, @value3, @value4)", cn);

唉,我找不到引用各个列的方法。

关于c# - 从 .Net 将简单数据插入 Excel 文件的最简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12148111/

相关文章:

c# - C#两个几乎相同的线程,性能差异很大

c# - 按值更改字典键

.net - 我们如何向 COM 互操作公开 .NET 公共(public)常量

c# - 更改按钮中的图像背景不起作用

c# - 使用C#查询两个日期之间的Excel列

python - 当每个值都是字典时将数据框保存到 Excel

excel - VBA 不会从内存棒加载文件,但会从计算机加载。为什么?

c# - 从控制台应用程序调用生成的 Web 测试代码

c# - 在处理响应后使用 Amazon S3 响应流

c# - 现在 VS2015 已经出来了,支持调试 Roslyn 的方式是什么?