2010-11-04 105 views
2

我想知道是否有一种方法可以通过编程方式检查并查看Excel工作簿中是否存在工作表?VB.NET - 以编程方式检查Excel中是否存在工作表

基本上我正在做的是检查是否存在一个Excel文档,打开它并检查指定的表是否存在。我目前不知道如何检查并查看工作表是否存在。任何帮助都是极好的!谢谢。

UPDATE

他们给了我一些很好的代码,使这项工作。我现在缺少的是正确的进口。

我已经搜查,发现该进口:

Imports Tools = Microsoft.Office.Tools.Excel 

但无法识别某些原因。我必须配置VS以某种方式使其工作?或者我只是使用错误的导入?

+1

您可能需要的工具DLL的引用添加到您的VS项目,你可以做到这一点之前。 – 2010-11-04 15:10:20

回答

4

你可以得到的工作表收集和重复检查的名字,这是C#

foreach (Sheet xlsSheet in xlsxWorkbooks) 
{ 
    if (xlsSheet.Name.equals("NameYouAreLookingFor")) // Maybe add ToLower() incase of case issues 
    { 
     //Return First Cell Value 
    } 
} 
+0

有什么我必须导入这个工作? Imports Tools = Microsoft.Office.Tools.Excel ?? – Johnrad 2010-11-04 14:58:42

+1

我参考互操作程序集,我相信它是Microsoft.Office.Interop.Excel或其他东西关闭,对不起,我没有意识到你没有使用互操作 – kd7 2010-11-04 15:47:08

+0

这非常好......非常感谢你!我的问题已解决。 – Johnrad 2010-11-04 16:24:06

1

再我的例子是在C#中,但这应该得到你想要的东西。


bool sheetExist = false; 
OleDbConnection objConn = new OleDbConnection(connString); 
objConn.Open(); 
DataTable dt = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); 
if (dt == null) 
    if (dt.Rows.Count > 0) 
    { 
     DataRow[] rows = dt.Select("TABLE_NAME = 'Sheet1$'") 
     if (rows != null) 
      sheetExist = rows.count > 0 
    } 
+0

我现在了解代码但我正在尝试为VB.NET找到正确的导入 – Johnrad 2010-11-04 15:11:27

1
var containsSheet = 
    (workBookIn.Sheets.Cast<object>() 
     .Select(sheetValue => sheetValue as Worksheet)) 
     .Any(workbookSheet => workbookSheet != null && workbookSheet.Name == sheetName);