我曾尝试在 excel 电子表格上使用 Alter table 向现有电子表格添加新列,但发现我无法在 excel 上使用 alter table。
通过浏览网络,我发现我可以使用 select into 创建一个包含新列的重复工作表。这是此代码。
static private bool CopyAndCreateNewSheet()
{
try
{
DataTable dataTable = new DataTable();
using (OleDbConnection conn = new OleDbConnection(ConfigHelper.ConnectionStringReadWriteWorkBook))
{
conn.Open();
//string selectQuery = "SELECT 0 As IsProcessed, * INTO [Copy] FROM [" + ConfigHelper.WorkSheetName + "$]";
string selectQuery = "SELECT 0 As IsProcessed, * INTO [Excel 12.0;HDR= Yes;DATABASE=c:\\data\\Apr12.xlsx].[copyd] FROM [" + ConfigHelper.WorkSheetName + "$]";
OleDbCommand cmd = new OleDbCommand(selectQuery, conn);
int count = cmd.ExecuteNonQuery();
MessageBox.Show(count.ToString());
conn.Close();
}
}
catch (OleDbException e)
{
MessageBox.Show(e.Message.ToString());
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
return true;
}
我的连接字符串配置如下。
<add name="ReadWriteWorkBook" connectionString='Provider = Microsoft.ACE.OLEDB.12.0; Data Source="c:\data\Apr12.xlsx"; Extended Properties="Excel 12.0;HDR=Yes;READONLY=FALSE"'/>
我已经尝试使用注释查询和未注释查询来运行选择,但没有运气......
当我在上述方法调用后打开我的工作簿时,出现以下错误。“Excel 在文件中发现无法读取的连接。是否要恢复此工作簿的内容?如果您信任此工作簿的来源,请单击是。”
当我单击“是”时,我的新选项卡在那里,并且新标题也在那里,但没有数据,因为 excel 已从中删除数据。
非常感谢任何帮助。
提前致谢。