通过 foreach 循环从 Excel 导入
Import from Excel via foreach loop
我打算 import
并通过 foreach
循环处理各种 Excel 文件。 import
本身不起作用,因为 Stata 不会将“x”识别为 Excel 文件名的替代。
local excelfiles "bb_01 bit0_2 bun comp_03 comp_c01m LLU-ck"
foreach item of local excelfiles {
import excel using "D:\...\...\...\Data\Files\`x'.XLS", sheet("DynamicReport") cellrange(A2:AI201) firstrow
keep v1 v2 v3 v4
save "D:\...\...\...\...\`x'.dta", replace
我得到的错误是file D:\...\...\...\...\Data\Files.XLS not found
这里有各种各样的问题。
您的代码不一致。您在 foreach
语句中声明了 item
,但在循环中引用了 x
。因此,就 Stata 而言,本地宏 x
从未定义过。这本身并不是错误,但 Stata 将对不存在(为空)的本地宏的引用替换为空字符串,结果是您报告的。
如果您将对 x
的引用替换为对 item
的引用,您的代码仍然无法运行。请参阅(例如)http://www.stata.com/manuals14/u.pdf 18.3.11 and http://www.stata-journal.com/sjpdf.html?articlenum=pr0042,了解有关在本地宏引用后立即跟上反斜杠的警告。问题是反斜杠既是转义字符又是完整 Windows 文件路径中的分隔符。应该通过在文件路径中使用正斜杠来解决冲突,即使在 Windows 中也是如此。
在您显示的代码段中,循环永远不会关闭。
否则我无法检查您的代码,因为您的代码不可重现。我假设三点 ...
不是字面意思,而是替换了不重要的细节。
我打算 import
并通过 foreach
循环处理各种 Excel 文件。 import
本身不起作用,因为 Stata 不会将“x”识别为 Excel 文件名的替代。
local excelfiles "bb_01 bit0_2 bun comp_03 comp_c01m LLU-ck"
foreach item of local excelfiles {
import excel using "D:\...\...\...\Data\Files\`x'.XLS", sheet("DynamicReport") cellrange(A2:AI201) firstrow
keep v1 v2 v3 v4
save "D:\...\...\...\...\`x'.dta", replace
我得到的错误是file D:\...\...\...\...\Data\Files.XLS not found
这里有各种各样的问题。
您的代码不一致。您在
foreach
语句中声明了item
,但在循环中引用了x
。因此,就 Stata 而言,本地宏x
从未定义过。这本身并不是错误,但 Stata 将对不存在(为空)的本地宏的引用替换为空字符串,结果是您报告的。如果您将对
x
的引用替换为对item
的引用,您的代码仍然无法运行。请参阅(例如)http://www.stata.com/manuals14/u.pdf 18.3.11 and http://www.stata-journal.com/sjpdf.html?articlenum=pr0042,了解有关在本地宏引用后立即跟上反斜杠的警告。问题是反斜杠既是转义字符又是完整 Windows 文件路径中的分隔符。应该通过在文件路径中使用正斜杠来解决冲突,即使在 Windows 中也是如此。在您显示的代码段中,循环永远不会关闭。
否则我无法检查您的代码,因为您的代码不可重现。我假设三点 ...
不是字面意思,而是替换了不重要的细节。