如何取得 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 檔案只是帶有一組定義工作簿的屬性、結構和元素的 XML 檔案的 ZIP 檔案。
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 中許多我不知道或不再記得的事情的貢獻中學到了很多東西。