C#如何通过OleDb更新Excel中的数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#如何通过OleDb更新Excel中的数据相关的知识,希望对你有一定的参考价值。

目前已实现C#通过OleDb读取Excel文件,然后创建一个新文件,将结果通过Insert的方式添加到新文件中。可否通过Update直接在原文件中修改呢?具体如何,可否提供代码?

网上看到如下参考代码,试了一下,发现行不通
string strComm = "update [Sheet1$] set Name='张三' WHERE 工号='132'";
OleDbConnection myConn = new OleDbConnection(strConn);
myConn.Open();
OleDbCommand com = new OleDbCommand(strComm, myConn);
com.ExecuteNonQuery();
myConn.Close();

参考技术A string strConn = "Provider=Microsoft.Ace.OleDb.12.0;Persist Security Info=False;" + "data source=" + @excelPath + ";Extended Properties='Excel 12.0; HDR=yes; IMEX=2'";
OleDbConnection conn = new OleDbConnection();
conn.ConnectionString = strConn;
try

OleDbCommand cmd = null;
try

cmd = new OleDbCommand("在这里写Update的SQL语句", conn);//(A,B,C,D,E,F,G)
cmd.ExecuteNonQuery();

catch (System.Exception ex)

textBox1.Text += ( ex.Message);
textBox1.Text += ("\r\n");
参考技术B 可以用EXCEL做简单的数据存储,不过数据库的索引、表分区等数据库的特性就不能使用了。还有标准SQL的一些功能也无法使用。
通过C#连接EXCEL可以通过OleDb数据提供程序来处理
参考技术C 发我你的Excel表,邮箱 M978718484@163.com 我应该能给你做出个例子来的

例子已发你邮箱了本回答被提问者采纳

通过 C# 和 OleDb 在 Excel 电子表格中插入一行

【中文标题】通过 C# 和 OleDb 在 Excel 电子表格中插入一行【英文标题】:Inserting a row into Excel Spreadsheet via C# and OleDb 【发布时间】:2012-01-20 15:58:55 【问题描述】:

我需要多次以编程方式将一行插入 Excel 电子表格。我需要实际插入一个新行而不是插入数据,也就是说,我需要将所有其他行实际下移一位。

我目前正在使用 OleDB 插入数据本身,如下所示:

//Note I have missed some code out for simplicities sake, this all works fine however
OleDbConnection oledbConn = null;

OleDbCommand cmd = null;

OleDbConnection = new OleDbConnection(connString);           
OleDbConnection.Open();

string connString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=0;Extended Properties=\"Excel 8.0; \"", TargetFile);

sting InsertCommand = string.Format("INSERT INTO [0$1:1] Values(2)", WorksheetName, Coord, valuestring);

cmd = new OleDbCommand(InsertCommand, oledbConn);

cmd.ExecuteNonQuery();

//close etc

我希望能够以类似的方式插入一行。这可能吗?

【问题讨论】:

您可能需要考虑使用外部库来处理 Excel 文件,例如 npoi.codeplex.com 而不是 OleDB。 【参考方案1】:

一目了然,需要指定读写,默认为只读。也许: “提供者=Microsoft.Jet.OLEDB.4.0;” &_ “数据源=C:\Docs\Test.xls;” &_ "Mode=ReadWrite;Extended Properties=""Excel 8.0;HDR=No"""

再看一遍,我认为Interop 可能是最好的选择。

【讨论】:

干杯,其实我可以写得很好,问题是我需要插入一行而不是向现有行添加数据。 对不起,我不明白你的意思。我虽然我指的是插入一个新行(***.com/questions/5027899/…) 对不起,我没有很好地表达这一点。我提供的代码工作正常,我的连接字符串允许我在插入数据时读/写。我需要添加一行,向下移动所有现有的行/内容。 @Damien 啊,对不起!我认为 ODBC 不适合你,我认为你需要互操作 (***.com/questions/1111935/c-sharp-and-excel-interop) 如果您想将其添加为答案(使用互操作),我可以接受。可能比我接受这个更有意义。【参考方案2】:

ipavlic 是对的,您最好为此使用外部第三方库。有几种可用。 OfficeWriter 就是一个例子:

http://www.officewriter.com

使用 OfficeWriter 打开工作簿后,您可以在 Worksheet 类上使用此方法插入行。它模仿 Excel 的行为,包括更新/扩展公式和其他更新:

public void InsertRows(int rowNumber, int rowCount)

【讨论】:

以上是关于C#如何通过OleDb更新Excel中的数据的主要内容,如果未能解决你的问题,请参考以下文章

使用 c# 将数据更新到 Excel 工作表中

C# 使用OleDB写数据到excel的插入数据语句!!!

从 C# 通过 OLEDB 执行更新时出错

如何使用 oledb 在 c# 中将下拉列数据插入到 excel 中

通过 C# 和 OleDb 在 Excel 电子表格中插入一行

C#从Excel中读取数据为空了,该怎么解决啊?