如何获取 Excel 工作簿中的工作表列表?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />我遇到过一种情况,我正在使用 Open Database() 打开 Excel 工作表。
这是一个很好的方法,因为我想要特定工作表中的特定列,因此使用 SQL SELECT 语句是理想的选择。
我现在发现工作表名称没有标准化。 所以我想要做的是查询 Excel 工作簿并获取其中的工作表列表。 然后,我可以在代码中使用一些逻辑来决定我真正想要哪些(因为虽然没有标准化,但有足够的“相似性”,我可以通过检查工作表名称是否包含 StringA 或 StringB 来找出我想要的内容以 StringC 为例)
我不知道如何在 JSL 中完成此操作。 在网上搜索,有很多使用 VBScripting 等的代码示例,这些示例将返回 Excel 工作簿中的工作表,但这没有太大帮助。
我还尝试找到一些可以执行此操作的 SQL 语句,但我不知道可以列出工作簿中的“表”/工作表的表名称。
我知道 JMP 可以做到这一点,因为如果我使用文件 -> 数据库 -> 打开表并连接到 Excel 数据源,它将列出架构 - 表列中的所有可用工作表。 同样,如果我设置用户首选项来选择单个 Excel 工作表并使用 Open() 命令,它会要求我选择要打开的工作表。
所以我的问题是,有人知道 JMP 是否向脚本语言公开了计算 Excel 工作表名称的功能吗?
非常感谢
托马斯
回复:如何获取 Excel 工作簿中的工作表列表?如果您在打开 Excel 工作表之前打开了数据表,那么最后一步可能会让您陷入困境。快速修正是
for(i=1, i <= nSheets, i++, dtname = 数据表(i +之前计数) << 获取名称);
如何获取 Excel 工作簿中的工作表列表?请注意,上面的代码片段已被更正。
回复:如何获取 Excel 工作簿中的工作表列表?这是一种非常笨拙的方法,如果表非常大,甚至可能不可行。 只是一个片段...
1. 设置首选项以在“文件”>“打开”上打开所有 Excel 工作表。
2. countBefore = N 表();
3.使用open()打开Excel文件
4. countAfter = N 表();
5. nSheets = countAfter - countBefore
5. dtname = {};
5. for(i=1, i <= nSheets, i++, dtname = 数据表(i) << 获取名称);
然后 dtname 是您可以使用的工作表名称列表,您可以关闭不需要的表。
消息编辑者:mpb
更正了代码片段中的索引。
回复:如何获取 Excel 工作簿中的工作表列表?这是一个老话题,但我发现它很有用。这里有一个脚本,它通过直接打开 XLSX 文件的内容来执行此操作。XLSX 文件只是 ZIP 文件,其中包含定义工作簿的属性、结构和元素的 XML 文件集合。
Names Default To Here( 1 );
filename = pick file("Choose Excel File", "$DOCUMENTS", {"Excel Files|xlsx"} );
zipxlsx = Open( filename, Zip );
zip_file = zipxlsx << read( "xl/workbook.xml", Format( blob ) );
// Open the file
zz = Open(
zip_file,
invisible,
xml,
XML Settings(
Stack( 0 ),
Row( "/workbook/sheets/sheet" ),
Col(
"/workbook/sheets/sheet/@name",
Column Name( "name" ),
Fill( "Use Once" ),
Type( "Character" ),
Format( {"Best"} ),
Modeling Type( "Nominal" )
)
)
);
worksheets=(zz:name << get values);
close(zz, nosave);
write(worksheets);回复:如何获取 Excel 工作簿中的工作表列表?
回复:如何获取 Excel 工作簿中的工作表列表?真的吗?我怎么不知道这个。不过还是谢谢你,很有帮助!
回复:如何获取 Excel 工作簿中的工作表列表?你怎么会不知道呢......因为你是人。没有人能够了解 JMP 的所有内容,而且每隔 18 个月左右,新版本就会推出大量新特性和功能。就我个人而言,我从你和你的贡献中学到了很多东西,这些贡献让我对 JMP 中很多我不知道或不再记得的东西有了更多的了解。