C# 使用 OLEDB 在 excel 上更改添加列

C# Alter add column on excel with OLEDB

我正在尝试使用 ALTER 语句在 Excel sheet 中添加一列与 OLEDB。我做不到。 我尝试了以下代码,但没有成功

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

Here, Data is the Sheet name in Excel and NewRow is column name to be added.

遗憾的是,OleDb 不支持 Alter Table 语句,但您可以通过在现有 sheet 上使用 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();

此跨页sheet Sheet1 上已有 Col1、Col2 和 Col3,那么...

string sSql = "Create Table [Sheet1$] (Col1 Int, Col2 Int, Col3 Int, NewColumn Int)";

using (OleDbCommand oCmd = new OleDbCommand(sSql, oConnection))
{
    oCmd.ExecuteNonQuery();
}

您也可以将数据复制到新的 sheet 中并删除原始数据,但删除只会清除内容,因为您实际上无法使用 OleDB 删除 sheets...

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

Drop Table [Sheet1$]