OLEDB для EXCEL - Drop Table [SheetName $] - Не удалять лист - PullRequest
2 голосов
/ 19 мая 2011

Я использую перетаскиваемую таблицу [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 Ответ

5 голосов
/ 19 мая 2011

К сожалению, вы не можете удалить лист с помощью ADO.NET для 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

ТАК вопрос об удалении листа в Excel с помощью Interop

...