【问题标题】:VB.NET - Programatically check to see if a Sheet exists in ExcelVB.NET - 以编程方式检查 Excel 中是否存在工作表
【发布时间】:2011-05-05 02:42:00
【问题描述】:

我想知道是否有办法以编程方式检查 Excel 工作簿中是否存在工作表?

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

更新

我得到了一些很好的代码来完成这项工作。我现在缺少的是正确的进口。

我已经搜索并找到了这个导入:

Imports Tools = Microsoft.Office.Tools.Excel

但由于某种原因无法识别。我是否必须以某种方式配置 VS 才能使其工作?还是我只是使用了错误的导入?

【问题讨论】:

  • 您可能必须先将工具 DLL 的引用添加到您的 VS 项目中,然后才能执行此操作。

标签: vb.net visual-studio excel


【解决方案1】:

您可以获取工作表集合并迭代并检查名称,这是c#

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

【讨论】:

  • 我必须导入一些东西才能让它工作吗?导入工具 = Microsoft.Office.Tools.Excel??
  • 我提到了互操作程序集,我相信它是 Microsoft.Office.Interop.Excel 或类似的东西,抱歉我没有意识到你没有使用互操作
  • 没关系...非常感谢!我的问题已经解决了。
【解决方案2】:

我的例子还是在 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
    }

【讨论】:

  • 我现在了解代码但我正在尝试为 VB.NET 找到正确的导入
【解决方案3】:
var containsSheet = 
    (workBookIn.Sheets.Cast<object>()
        .Select(sheetValue => sheetValue as Worksheet))
        .Any(workbookSheet => workbookSheet != null && workbookSheet.Name == sheetName);

【讨论】:

    猜你喜欢
    • 2013-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多