导入 Excel 文件时如何跳过特定工作表?您好 JMP 论坛,
我正在使用 JMP 16。我正在寻找一种方法来导入包含多个工作表的 Excel 电子表格,但希望跳过导入名为“Summary”的特定工作表。有没有办法为此编写脚本?
请注意:我定期使用此类 Excel 文件创建报告。工作表(除“摘要”外)的数量和名称每次都不同。
谢谢
数据访问视窗Re: 如何在导入 Excel 文件时跳过特定工作表?谢谢你,蒂埃里! 这很棒!
Re: 如何在导入 Excel 文件时跳过特定工作表?你好,
查看您的脚本后,我认为有一种更直接的方法可以达到相同的解决方案:
Names Default to Here (1);
xlfid = Pick File(
"Select the Excel File", //prompt
"$Documents", //starting path
{"Excel Files|xls;xlsx", "Excel Files|*"}, //file types
1,
0,
""
);
dt = Open(xlfid,
//Worksheets(),
Use for all sheets( 1 ),
Concatenate Worksheets( 1 ), //CONCATEMATE IS ON
Create Concatenation Column( 1 ), //CREATE CONCAT COLUMN IS ON
Worksheet Settings(
1,
Has Column Headers( 1 ),
Number of Rows in Headers( 7 ), // First seven rows are headers
Headers Start on Row( 1 ),
Data Starts on Row( 13 ), // Data starts on row 13
Data Starts on Column( 1 ),
Data Ends on Row( 0 ),
Data Ends on Column( 0 ),
Replicated Spanned Rows( 1 ),
Replicated Spanned Headers( 0 ),
Suppress Hidden Rows( 1 ),
Suppress Hidden Columns( 1 ),
Suppress Empty Columns( 1 ),
Treat as Hierarchy( 1 ),
Multiple Series Stack( 0 ),
Import Cell Colors( 0 ),
Limit Column Detect( 0 ),
Column Separator String( "_" )
)
);
dt << Select where (contains(:Source Table, "Summary"));
dt << Delete Rows;
抱歉,我采用了这种更简单的方法所采用的复杂方法。
最好的,
TS
Re: 如何在导入 Excel 文件时跳过特定工作表?你好,
尝试用以下代码片段替换脚本的最后部分:
tb_list = Get Data Table List ();
for (i = 1, i <= N Items (tb_list), i++,
if(i == 1, my_dt = tb_list [i],
concatenate(Data Table (my_dt), Data Table (tb_list[i]), "Append to first table")
)
);
值得注意的是,上面的脚本片段按原样运行良好,但如果添加开关“创建源列”,它就无法正常运行,因为每一轮连接都会创建新列,从而导致表标识符混乱
。最好的,
TS
Re: 如何在导入 Excel 文件时跳过特定工作表?嗨蒂埃里,
这是有效的——丢弃“摘要”数据表。 谢谢!
但是,我在使用 for() 循环进行连接时犯了一些错误。 下面分享我的代码。 在此感谢您的指导
Names Default to Here (1);
xlfid = Pick File(
"Select the Excel File", //prompt
"$Documents", //starting path
{"Excel Files|xls;xlsx", "Excel Files|*"}, //file types
1,
0,
""
);
dt = Open(xlfid,
//Worksheets(),
Use for all sheets( 1 ),
Concatenate Worksheets( 0 ),
Create Concatenation Column( 0 ),
Worksheet Settings(
1,
Has Column Headers( 1 ),
Number of Rows in Headers( 7 ), // First seven rows are headers
Headers Start on Row( 1 ),
Data Starts on Row( 13 ), // Data starts on row 13
Data Starts on Column( 1 ),
Data Ends on Row( 0 ),
Data Ends on Column( 0 ),
Replicated Spanned Rows( 1 ),
Replicated Spanned Headers( 0 ),
Suppress Hidden Rows( 1 ),
Suppress Hidden Columns( 1 ),
Suppress Empty Columns( 1 ),
Treat as Hierarchy( 1 ),
Multiple Series Stack( 0 ),
Import Cell Colors( 0 ),
Limit Column Detect( 0 ),
Column Separator String( "_" )
)
);
<BR />// Identifying and closing 'Summary' datatable
tb_list = Get Data Table List ();
for (i = 1, i <= N Items (tb_list), i++,
tb_name = tb_list [i] << Get Name;
if (contains(tb_name, "Summary"), Close (tb_list[i],NoSave))
);
<BR />// (1) Concatenating in to single datatable 'my_dt'.<BR />// (2) Closing individual datatables.<BR />
tb_list = Get Data Table List ();
for (i = 1, i <= N Items (tb_list), i++,
my_dt = Data Table( tb_list [1] ) << Concatenate(
Data Table( tb_list [i+1] ),
Create source column,<BR /> Close (tb_list[i],NoSave)
)
);Re: 如何在导入 Excel 文件时跳过特定工作表?这是一个简短的脚本,用于丢弃名称包含“摘要:
Names Default to Here (1);
tb_list = Get Data Table List ();
for (i = 1, i <= N Items (tb_list), i++,
tb_name = tb_list [i] << Get Name;
if (contains(tb_name, "Summary"), Close (tb_list[i],NoSave))
);
然后您可以重新运行 Get Data Table List() 命令并将剩余的表串联成一个新的数据表。
最好的,
TS
Re: 如何在导入 Excel 文件时跳过特定工作表?谢谢蒂埃里!
我不太熟悉使用 List(),所以一个示例脚本会很有帮助:)
我的计划是连接其余的工作表(不包括“摘要”)。
问候
Re: 如何在导入 Excel 文件时跳过特定工作表?你好,
处理此问题的一种简单“肮脏”方法是打开所有工作表,记录所有打开表的名称 [Get Data Table List()],并丢弃名称 ==“Summary”的表,[Close (dt, NoSave )]。
让我们知道您是否需要一个实际的脚本示例来组装这些命令?
最好的,
TS