我在网络上有一个txt文件,其中包含制表符分隔值(TSV / CSV),如下所示:
PRODUCT_ID
tab
{颜色{1}}价格tab
数量
项目1tab
{红{1}} $ 5.2tab
5
项目2tab
{蓝{1}} $ 7.5tab
10
我使用tab
公式将txt文件导入Google电子表格。问题是现在我需要将文本拆分为列。我尝试了以下公式但没有成功:
tab
我尝试的另一件事是使用tab
功能,但我无法弄清楚如何匹配Google Spreadsheets中的IMPORTDATA(url)
字符?
答案 0 :(得分:4)
使用标准粘贴粘贴文本时,默认情况下,页面会剥离标签。制表符分隔数据可以使用以下方式粘贴和自动解析:
右键单击 - >粘贴特殊 - >仅粘贴值
答案 1 :(得分:1)
事实证明,IMPORTDATA(url)
可以导入制表符分隔文件,但它希望文件名具有.tsv
扩展名。这与Excel不一致,其中以制表符分隔的导出会导致*.txt
。
如果您可以确保使用.tsv
扩展程序,则问题就解决了。
您还可以使用表单UI导入文件(导入新的电子表格)。选择File > Import...
,然后选择Upload > Select a file from your computer
。文件选择对话框打开后,将网址粘贴到file name
字段中,然后点击Open
。该文件将下载到您的PC,然后上传到云端硬盘,通过导入对话框,您可以选择分隔符。
(在Windows 8.1上使用Chrome验证;我不知道这将如何在其他操作系统或浏览器上运行。)
修改:请参阅this gist。
importFromCSV(string fileName, string sheetName)
使用位于用户GDrive中的CSV文件中读取的内容填充表格。如果未提供任何参数,该函数将打开inputBoxes以交互方式获取它们。
自动检测制表符或逗号分隔的输入。
答案 2 :(得分:1)
注意::我知道这个问题是在2014年提出的,大约5年后我将回答这个问题。我将答案发布在这里,希望其他人在这里用谷歌搜索的方式可以避免头疼,并且可以通过我设计解决方案的方式得到帮助。
问题摘要:默认情况下,仅当文件名以扩展名.TSV结尾时,IMPORTDATA()函数才能正确处理制表符分隔的文件
经过无数次尝试之后,我想出了如何诱使Google表格导入以制表符分隔的文件,而不管扩展名如何。
对于那些寻求快速而又肮脏的答案的人,请将以下内容复制到Google表格的单元格中进行尝试:
=ARRAYFORMULA(IFERROR(SPLIT(IMPORTDATA("https://iso639-3.sil.org/sites/iso639-3/files/downloads/iso-639-3_Latin1.tab"),CHAR(9),FALSE,FALSE)))
对于那些想了解更多的人,我将尝试解释每个嵌套函数如何帮助创建最终解决方案:
= ARRAYFORMULA(IFERROR(SPLIT(IMPORTDATA(URL-HERE),CHAR(9),FALSE,FALSE)))
IMPORTDATA()
-从Web提取数据文件的主要功能
SPLIT
-按选项卡分隔行,请注意使用char(09)生成选项卡字符;还需要注意的是,在我的情况下,最后一个参数使用FALSE,以确保空单元格不会一起折叠
IFERROR
-用于捕获导入可能失败的情况,该错误将被捕获且不会返回到电子表格
ARRAYFORMULA
-此函数可确保对文件中的每一行进行解析;否则,只有文件的第一行会返回到电子表格
答案 3 :(得分:0)
我很幸运使用split()并指示只有一个空格作为分隔符,即使我粘贴的数据有分隔每个“列”的标签:=SPLIT(A1, " ", True)
其中A1的数据间隔1个或更多空格。似乎粘贴TSV数据会导致从制表符转换为空格。
答案 4 :(得分:0)
IMPORTDATA(url)似乎会自动处理标签,正如其他人之前提到的那样,如果网址以" .tsv"结尾。
我尝试从Dropbox导入文件时遇到问题,即使文件名为" something.tsv",因为网址是
"https://www.dropbox.com/s/xxxxxxx/something.tsv?dl=1"
我设法通过向url添加虚拟查询参数来解决问题:
"https://www.dropbox.com/s/xxxxxxx/something.tsv?dl=1&x=.tsv"