【问题标题】:OLEDB for EXCEL - Drop Table [SheetName$] - Doen't Delete SheetEXCEL 的 OLEDB - 删除表 [工作表名称 $] - 不会删除工作表
【发布时间】:2011-05-19 12:46:06
【问题描述】:

我正在使用 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();
}

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

【问题讨论】:

  • 如果 Excel 通过 SQL 语法不支持,则直接使用 Excel API 从应用程序中删除工作表。您必须找到 C# 语法。 Function DeleteSheet(strSheetName As String) As Boolean ' This function deletes a sheet based on the individual name provided ' If the sheet is not found the code moves on. On Error Resume Next Application.DisplayAlerts = False PriorityExcel.Sheets(strSheetName).Delete Application.DisplayAlerts = True End Function
  • 您能解释一下为什么需要删除工作表吗?我试着想一个可能的场景,但找不到。也许有解决办法?其次,可以在服务器上安装第三方组件吗?
  • @Juliusz 您在使用第三方组件方面是正确的,但到目前为止,由于某些 x 原因,我不能使用第三方组件 bcoz。潜在的场景是:一个master excel有所有学生的记录。每个学生的数据到一张excel表中,数据太多,所以每个班级需要单独的表。现在我想导出几个学生。然后复制excel表并删除不需要的学生表。 ....我希望你明白这一点。

标签: c# excel oledb


【解决方案1】:

很遗憾,您无法使用 ADO.NET for Excel 删除工作表。相反,您将需要使用 Excel 互操作来执行此任务。实际 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

【讨论】:

  • 感谢您的回复。问题是由于某些 X 原因,我无法在我的服务器上安装 excel。这意味着我不能使用 inerop :(.
  • @Baljeetsingh - 这太糟糕了,但我绝对理解。我会四处寻找其他选择,但我认为这可能是您唯一的(免费)选择。
  • @BiggsTRC - 据了解,Excel 不是免费的[?] 有一些开源库可以在服务器上没有 Excel 的情况下执行此操作。
  • @BiggsTRC - 对于 xls:code.google.com/p/excellibrary 对于 xlsx 我相信 epplus.codeplex.com 有能力做到这一点
  • @BiggsTRC - 我不知道这两年是从哪里来的:code.google.com/p/excellibrary/source/list。许可问题通常是由感知而不是真实的法律事实引起的。但回到主题 - 我能够使用该库读取和创建文件,所以如果您无法删除电子表格,我会感到惊讶。这可能是一行 - 从集合中删除对象。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多