使用OLEDB在excel中添加列

本文关键字:添加 excel OLEDB 使用 | 更新日期: 2023-09-27 18:06:28

我试图通过使用ALTER语句在Excel表中添加OLEDB列。我不能做这件事。我尝试了下面的代码,但它不工作

sqladd = "ALTER TABLE Data ADD NewRow varchar(50)";

这里,Data是Excel中的工作表名,NewRow是要添加的列名。

使用OLEDB在excel中添加列

遗憾的是OleDb不支持Alter Table语句,但是您可以通过在现有工作表上使用Create Table语句添加列,并在末尾定义新列。这实际上只会添加新列,而不影响现有的数据。

您必须以读写模式打开工作簿,并且在扩展属性中不包含IMEX=1。所以首先定义并打开连接…

string sConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" +
                           "Data Source=e:''Test.xlsx;Mode=ReadWrite;" +
                           "Extended Properties='"Excel 12.0;HDR=Yes'"";
OleDbConnection oConnection = new OleDbConnection();
oConnection.ConnectionString = sConnectionString;
oConnection.Open();

这个电子表格已经有Col1, Col2和Col3在Sheet1上,所以然后…

string sSql = "Create Table [Sheet1$] (Col1 Int, Col2 Int, Col3 Int, NewColumn Int)";
using (OleDbCommand oCmd = new OleDbCommand(sSql, oConnection))
{
    oCmd.ExecuteNonQuery();
}

您也可以将数据复制到新工作表中并删除原始工作表,但是删除只能清除内容,因为您实际上不能使用OleDB删除工作表…

Select [Sheet1$].*, Null As NewColumn Into [Sheet2] From [Sheet1$]
Drop Table [Sheet1$]