我试图通过使用ALTER语句在Excel表中添加OLEDB列。我不能做这件事。我尝试了下面的代码,但它不工作
sqladd = "ALTER TABLE Data ADD NewRow varchar(50)";
这里,Data是Excel中的工作表名,NewRow是要添加的列名。
遗憾的是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$]