我在网上找到了一个可用于解压缩docx
文件的命令,但我无法调整它来解压缩xlsx
文件。命令是
unzip -p some.docx word/document.xml | sed -e 's/<[^>]\{1,\}>//g; s/[^[:print:]]\{1,\}//g'
我无法理解第二个参数word/document.xml
及其使用方式。
当我尝试转换 xlsx 文件时,我尝试了:
unzip -p testexcel.xlsx excel/spreadsheet.xml | sed -e 's/<[^>]\{1,\}>//g; s/[^[:print:]]\{1,\}//g'
但我不知道在第二个参数中放入什么来代替excel/spreadsheet.xml
。
答案1
该参数是您要返回的word/document.xml
zip 存档中文件的路径。unzip
这是 docx 等文件类型标准结构的一部分。
对于 Excel xlsx 文件,您可能需要xl/worksheets/sheet1.xml
.如果还有其他工作表,则它们是sheet2.xml等。这与您为工作表指定的名称无关,这些工作表与一般电子表格信息一起存储在xl/workbook.xml中。
如果您不确定 zip 文件的结构,可以使用该-l
选项列出它包含的文件。
unzip -l some.docx
省略该选项只会将文件提取到当前目录。-p
您正在使用的命令中使用的 会将输出通过管道传输到 stdout,以便 sed 可以处理它。
答案2
您发布了这个命令:
unzip -p some.docx word/document.xml | sed -e 's/<[^>]\{1,\}>//g; s/[^[:print:]]\{1,\}//g'
首先,澄清它的作用:
word/document.xml
它提取一个从 .docx 文件中调用的文件- 它通过管道传输到
sed
命令,该命令通过删除所有格式信息以某种方式“美化”输出
因此,要了解如何使用 来做到这一点.xlsx
,请尝试unzip foo.xlsx
。您现在可以看到您感兴趣的文件可能是xl/worksheets/sheet1.xml
.
.xlsx
但如果你想提取我强烈推荐的内容不是使用这种方式。
有几种工具可以.xlsx
将CSV,它基本上包含以逗号分隔的表格内容。
这个问题关于如何将表单转换.xlsx
为 CSV 有多个答案。