假设我有 fieldA、fieldB 和 fieldC 的背景,我想将 CSV 文件加载到堆栈中。CSV 文件有 A、B 和 C 三列。“加载”按钮的脚本是什么样的?
问问题
2358 次
3 回答
2
如果您只想逐字加载内容,那么
on mouseUp
put url ("file:" & pathToFile) into tContents
end mouseUp
会成功的。要将列放入字段中,您必须做更多的工作。单程:
on mouseUp
put url ("file:" & pathToFile) into tContents
-- set the itemDelimiter to tab -- if necessary
repeat for each line tLine in tContents
put item 1 of tLine & cr after field "fieldA"
put item 2 of tLine & cr after field "fieldB"
put item 3 of tLine & cr after field "fieldC"
end repeat
end mouseUp
于 2013-04-18T21:09:48.273 回答
0
如果数据是干净的,CSV 文件通常具有由“;”分隔的字段 所以你可以用选项卡替换它们并使用“基本表字段”:
put url ("file:" & pathToFile) into tData
replace ";" with tab in tData
put tData into field "data"
如果您的数据是 UTF8 或其他格式,您需要先对其进行翻译。
于 2013-04-19T04:30:01.810 回答
0
要将数据读入变量 lCsvData:
local lCsvData
on importCsv
answer file "Chooose CSV file..."
if it is not empty then
put it into myPath
put url ("binfile:" & myPath) into myData
现在我们可以解码数据:
put urlDecode(urlEncode(myData,"UTF8")) into myData
问题:数据可以包含返回。让我们从项目中删除退货。如有必要,您可以单独处理每个项目。
put empty into lCsvData
set the itemDel to semicolon
repeat for each line myLine in myData
repeat for each item myItem in myLine
put replaceText(myItem,cr,numToChar(14)) after lCsvData
end repeat
put cr after lCsvData
end repeat
end if
end importCsv
现在你有了干净的数据。您可以通过以下方式选择一行并将其放入字段中:
on showLine theLine
put line theLine of of lCsvData into myLine
set the itemDel to semicolon
repeat for each item myItem in myLine
put replaceText(myLine,numToChar(14),tab) into fld 1
end repeat
end showLine
其中 theLine 是一个整数。您可以使用 cr 代替 tab,并且可以以任何您想要格式化输出字段的方式调整此脚本。
于 2013-04-20T22:52:09.160 回答