用于EXCEL的OLEDB – 删除表 – 不删除工作表

我正在使用drop table [SheetName $]从excel中删除工作表。

这只是清除表单的数据,但不会删除表单。

我曾尝试使用xls和xlsx。 不适用于两个版本!

OleDbConnection connection = new OleDbConnection(); try { connection.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties='drop.xlsx"; connection.Open(); OleDbCommand command = new OleDbCommand("Drop Table [MySheetName_1$]", connection); command.ExecuteNonQuery(); } finally { connection.Close(); } 

任何帮助/指针赞赏! 谢谢

不幸的是,您无法使用ADO.NET for Excel删除工作表。 相反,您将需要使用Excel Interop来执行此任务。 实际DELETE语句的基本代码如下所示:

 using MSExcel = Microsoft.Office.Interop.Excel; private MSExcel._Application excel; private MSExcel._Workbook workbook; private MSExcel._Worksheet worksheet; private MSExcel.Sheets sheet; Excelapp.DisplayAlerts = false; ((Excel.Worksheet)workBook.Worksheets[3]).Delete(); Excelapp.DisplayAlerts = true; 

这是如何看起来的基本破坏。 DisplayAlerts行旨在解决一些人删除工作表时遇到的问题。 另请注意, 您不能删除Excel文件中的最后一个工作表 。 如果你不看,这个问题会得到你。

这里有一些链接可以帮助你:

MSDN在Excel中删除工作表

讨论使用ADO.NET在Excel中删除工作表的可能性

所以有关使用Interop在Excel中删除工作表的问题