用于EXCEL的OLEDB - 删除表[工作表名称$] - 不删除工作表

时间:2011-05-19 04:21:36

标签: c# 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();
}

任何帮助/指针都表示赞赏! 感谢

1 个答案:

答案 0 :(得分:5)

不幸的是,您无法使用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 on deleting sheeting in Excel

Post discussing the possibility of using ADO.NET to DROP a sheet in Excel

SO question about deleting a sheet in Excel using the Interop