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$]
我正在尝试使用 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$]