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

C#使用OLEDB在excel上更改添加列,c#,oledb,alter-table,alter,oledbexception,C#,Oledb,Alter Table,Alter,Oledbexception,我试图使用ALTER语句在带有OLEDB的Excel工作表中添加一列。我做不到。 我尝试了以下代码,但没有成功 sqladd = "ALTER TABLE Data ADD NewRow varchar(50)"; 这里,Data是Excel中的工作表名称,NewRow是要添加的列名 遗憾的是,OleDb不支持ALTERTABLE语句,但您可以通过在现有工作表上使用CREATETABLE语句添加列,并在末尾定义新列。这实际上只会添加新列,而保留现有数据不变 您必须以读写模式打开工作簿,并且扩展

我试图使用ALTER语句在带有OLEDB的Excel工作表中添加一列。我做不到。 我尝试了以下代码,但没有成功

sqladd = "ALTER TABLE Data ADD NewRow varchar(50)";
这里,Data是Excel中的工作表名称,NewRow是要添加的列名


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

您必须以读写模式打开工作簿,并且扩展属性中不能包含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();
这个电子表格已经在表格1上有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();
}
您也可以将数据复制到新工作表中并删除原始工作表,但删除操作只会清除内容,因为您无法使用OleDB实际删除工作表

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

Drop Table [Sheet1$]

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

您必须以读写模式打开工作簿,并且扩展属性中不能包含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();
这个电子表格已经在表格1上有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();
}
您也可以将数据复制到新工作表中并删除原始工作表,但删除操作只会清除内容,因为您无法使用OleDB实际删除工作表

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

Drop Table [Sheet1$]

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

您必须以读写模式打开工作簿,并且扩展属性中不能包含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();
这个电子表格已经在表格1上有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();
}
您也可以将数据复制到新工作表中并删除原始工作表,但删除操作只会清除内容,因为您无法使用OleDB实际删除工作表

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

Drop Table [Sheet1$]

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

您必须以读写模式打开工作簿,并且扩展属性中不能包含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();
这个电子表格已经在表格1上有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();
}
您也可以将数据复制到新工作表中并删除原始工作表,但删除操作只会清除内容,因为您无法使用OleDB实际删除工作表

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

Drop Table [Sheet1$]