Load list of Excel files
Hi all,
I'm trying to load a list of Excel files into waves in code. Previously I asked here for help with loading a list of txt files: https://www.wavemetrics.com/forum/general/integer-division-convertation-double-integer-loading-list-waves-point-corresponding
I took the function https://www.wavemetrics.com/code-snippet/load-all-files-folder-assumes-each-file-contains-one-column-numbers
Now I slightly modified this function and below you can see the current view of it:
String pathName // Name of an Igor symbolic path or "" to get a dialog
String extension // File name extension - e.g., "txt" or ".dat"
if (strlen(pathName) == 0)
NewPath/O/M="Choose a folder containing data files" DataFilesPath
if (V_flag != 0)
return -1 // User cancelled
endif
pathName = "DataFilesPath"
endif
Variable numFilesLoaded = 0
String fileName
Variable index
index = 0
do
fileName = IndexedFile($pathName, index, extension)
print "fileName=",fileName
if (strlen(fileName) == 0)
break // No more files.
endif
String wName = ParseFilePath(3, fileName, "\\", 0, 0) // Remove extensions
print "wName=",wName
//wName = CleanupName(wName, 0) // Make legal standard Igor wave name
//Variable existsCode = exists(wName)
//if (existsCode!=0 && existsCode!=1)
// wName conflicts with some name other than a wave name so make it unique
// wName = UniqueName(wName, 1, 0)
//endif
//String columnInfoStr
//sprintf columnInfoStr, "N='%s';", wName
//LoadWave/G/D/P=$pathName/A/O/B=columnInfoStr/Q fileName
XLLoadWave/S="Sheet1"/R=(A1,B15)/D/Q fileName
//Wave w = $wName // Create a wave reference
// Do something with w if you wish
Wave ColumnA, ColumnB
Duplicate/O ColumnA, $wName+"_Time"
Duplicate/O ColumnB, $wName+"_Int"
KillWaves/Z ColumnA, ColumnB
numFilesLoaded += 1
index += 1
while (1)
Printf "Loaded %d files\r", numFilesLoaded
End
macro loadFilesFromFolder()
LoadAllFilesFromFolder("", ".xlsx")
end
The function works not properly. The first problem - when I run macro loadFilesFromFolder(), it requests for selecting data folder, I select data folder, press 'Open', and then it again requests for selecting folder. I again select folder, and now I see Excel files in that folder. I manually select each Excel file, one by one, each time dialog window appears. Finally, the program loads all selected files. But of course I'd like to load all files at once, without dialog windows. Could you please tell me, how can I solve these problems? Please find attached three test Excel files. Each file contains two columns of numbers.
You need to add /P=$pathName to the XLLoadWave command.
May 12, 2019 at 05:24 pm - Permalink
In reply to You need to add /P=$pathName… by hrodstein
Thanks a lot!
May 13, 2019 at 01:06 am - Permalink