匯入 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