c# - EXCEL 的 OLEDB - 删除表 [工作表名称$] - 不会删除工作表

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

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

最佳答案

遗憾的是,您无法使用 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

关于c# - EXCEL 的 OLEDB - 删除表 [工作表名称$] - 不会删除工作表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6053732/

相关文章:

c# - 通过 OleDbConnection 获取单个记录的最佳方法是什么?

c# - 具有相同方法名称并沿类层次结构覆盖的多个接口(interface)

c# - Web 服务 API 设计 - 输入验证和错误响应?

c# - 使用 C# 在 Powerpoint 2013 中创建具有多个系列的图表

vba - 将数据从网站拉入 VBA

使用 OleDbConnection 的 Open 方法时,C# Excel 不会自行关闭

c# - 仅从多个 CSV 文件中读取特定列

c# - VLC 命令行 - 转码

C# - 如何迭代 Excel._Worksheet 中的所有行?

c# - 将巨大的 Excel 工作表导入 Datatable