Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# OLEDB for EXCEL-下拉表[SheetName$]-Doen';不要删除工作表_C#_Excel_Oledb - Fatal编程技术网

C# OLEDB for EXCEL-下拉表[SheetName$]-Doen';不要删除工作表

C# OLEDB for EXCEL-下拉表[SheetName$]-Doen';不要删除工作表,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"; connec

我正在使用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互操作来执行此任务。实际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文件中的最后一张工作表。如果你不看的话,这个问题会让你头疼的

以下是一些帮助您解决问题的链接:


如果Excel不支持SQL语法,则直接使用Excel API从应用程序中删除工作表。你必须找到C#语法<代码>函数DeleteSheet(strSheetName As String)作为布尔值“此函数根据提供的单个名称删除工作表”,如果找不到工作表,代码将继续。错误时继续下一个Application.DisplayAlerts=False PriorityExcel.Sheets(strSheetName)。删除Application.DisplayAlerts=True End Function您能解释一下为什么需要删除工作表吗?我试图想出一个可能的方案,但没有找到。也许有工作要做?第二,你能在服务器上安装第三方组件吗?@Juliusz你使用第三方组件是正确的,但由于某些原因,我现在不能使用第三方组件bcoz。可能的情况是:一个excel大师有所有学生的记录。每个学生的数据放在一张excel表格中,数据太多,所以每个班级需要单独的表格。现在我想输出几个学生。然后复制excel表并删除不需要的学生表。。。。我希望你能理解这一点。谢谢你的回复。问题是,由于某些X原因,我无法在服务器上安装excel。这意味着我不能使用InReop:(.@Baljeetsingh-那太糟糕了,但我完全理解。我会四处寻找其他选项,但我认为这可能是你唯一的(免费)选项。@BiggsTRC-Excel就我们所知不是免费的[?]有一些open soource库可以在服务器上不使用Excel的情况下执行此操作。@BiggsTRC-对于xls:对于xlsx,我相信可以执行此操作it@BiggsTRC-我不知道这两年是从哪里来的:。许可证问题通常是由感知而不是真实的法律事实引起的。但回到主题上来-我能够阅读和理解使用该库创建一个文件,所以如果无法删除电子表格,我会感到惊讶。它可能是一行-从集合中删除对象。