【问题标题】:Why does Excel sometimes put a $ on sheet name?为什么 Excel 有时会在工作表名称上加上 $?
【发布时间】:2015-05-29 22:38:23
【问题描述】:

我发现有时但并非总是如此,Excel 会在工作表名称的末尾放置一个 $,但在 Excel 中看不到,只有在尝试使用 C# 将其导入 SQL Server 时。我遇到了很多不同的情况。

  1. 它会保留原始工作表,但还会创建第二个空的“隐藏”工作表,最后带有 $
  2. 只有 1 个工作表,其中包含数据,但名称后附加了“$”。
  3. 原始工作表带有$,另一个副本带有$_filteredDatabase。 (我发现_filteredDatabase 是 Excel 存储“过滤”数据的地方。)

我问的原因是过去我能够告诉我的应用程序导入是否只有 1 个工作表或者它不以$ 结尾。但是有几次我最终得到了“worksheet$”和“worksheet$_”。

所以我只是想知道是否有人知道$ 是什么或为什么/何时添加它?

【问题讨论】:

  • 我没有答案;据我所知,Excel 2007 到 2013 已经暴露了通过 OLEDB 附加 $ 的工作表名称。 Excel 中的 Sheet1 通过 OLEDB 公开为 Sheet1$。
  • 它是否必须与具有表(VBA ListObject)的工作表有关。这些也出现在导入对话框中,我认为它们没有 $ 符号。我想您还会在工作表参考的末尾看到一个 $。

标签: sql-server excel worksheet


【解决方案1】:

当您使用 Excel Source -Excel 源从 Microsoft Excel 工作簿中的工作表或范围中提取数据时 - SQL Server Books-Online 说:

重要提示:
在 Excel 中,工作表或区域相当于表或视图。 Excel 源和目标编辑器中的可用表列表显示现有工作表(由附加到工作表名称的 $ 符号标识,例如 Sheet1$)和命名范围(由缺少 $ 符号标识,如MyRange)。

数据来源
Excel 工作簿中的数据源可以是必须附加$ 符号的工作表(例如Sheet1$)或命名范围(例如MyRange)。在 SQL 语句中,必须对工作表的名称进行分隔(例如,[Sheet1$])以避免$ 符号导致的语法错误。查询生成器会自动添加这些分隔符。当您指定工作表或范围时,驱动程序会从工作表或范围左上角的第一个非空单元格开始读取连续的单元格块。因此,源数据中不能有空行,或者标题行或标题行与数据行之间不能有空行。

【讨论】:

    【解决方案2】:

    这意味着美元符号之后的行或列在提到的工作表中被锚定或绝对。

    例如:[Sheet1$A1:B4] 表示引用 Sheet 中的特定范围 如果你想获得数据范围需要像上面那样给出

    示例 1:[Sheet1$] 表示引用 Sheet1 中的所有行和列

    【讨论】:

    • 感谢您的回复,但这不是我所指的 $。将工作表导入 SQL 数据库(或使用 C# 从工作表中提取表)时,有时查看工作表时,有一个 Sheet1 和一个 Sheet1$,有时只是 Sheet1$。不涉及一系列单元格。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-20
    • 1970-01-01
    • 2021-12-12
    • 1970-01-01
    相关资源
    最近更新 更多