是否有合适的方法来查找unix中xlsx文件中的行数计数?让我们假设每个excel文件只有1个工作表。
wc -l
在这里不起作用,因为它给出了编码文件的行数,而不是实际的行数。
我找到了一个perl的方法来做它与电子表格模块。或者通过将Excel文件转换为CSV文件,然后计数行
是一个简单的方法,而不安装额外的模块?
这个问题很时髦,我喜欢!
任何以"x"结尾的新式办公文件像xlsx和.docx实际上是压缩的文件夹,里面充满了大量的。xml和其他内容。如果您想查看Unix中某个工作表的xml,您只需要解压缩它,然后开始查找。
为了更深入地研究,我从我的家庭服务器上用一台没有office软件包的linux机器抓取了一个电子表格,并验证了我上面的建议。
scott@chromebook-edgar:~/Downloads$ ls
'Monte Carlo Simulation.xlsx'
scott@chromebook-edgar:~/Downloads$ file 'Monte Carlo Simulation.xlsx'
Monte Carlo Simulation.xlsx: Microsoft Excel 2007+
scott@chromebook-edgar:~/Downloads$ unzip 'Monte Carlo Simulation.xlsx'
Archive: Monte Carlo Simulation.xlsx
inflating: [Content_Types].xml
inflating: _rels/.rels
inflating: xl/workbook.xml
inflating: xl/_rels/workbook.xml.rels
inflating: xl/worksheets/sheet1.xml
inflating: xl/worksheets/sheet2.xml
inflating: xl/theme/theme1.xml
inflating: xl/styles.xml
inflating: xl/sharedStrings.xml
inflating: xl/drawings/drawing1.xml
inflating: xl/charts/chart1.xml
inflating: xl/worksheets/_rels/sheet2.xml.rels
inflating: xl/drawings/_rels/drawing1.xml.rels
inflating: xl/calcChain.xml
inflating: docProps/core.xml
inflating: docProps/app.xml
scott@chromebook-edgar:~/Downloads$ ls
'[Content_Types].xml' docProps 'Monte Carlo Simulation.xlsx' _rels xl
scott@chromebook-edgar:~/Downloads$ cd xl
scott@chromebook-edgar:~/Downloads/xl$ ls
calcChain.xml charts drawings _rels sharedStrings.xml styles.xml theme workbook.xml worksheets
scott@chromebook-edgar:~/Downloads/xl$ vim workbook.xml
scott@chromebook-edgar:~/Downloads/xl$ cd worksheets/
scott@chromebook-edgar:~/Downloads/xl/worksheets$ ls
_rels sheet1.xml sheet2.xml
在xl/worksheets/文件夹中,我发现每个工作表的xml文档,其中包含没有真正格式化的xml(全部在一行中)。我使用广泛使用的xmllint工具对它进行了格式化,然后通读了一下。在里面,我找到了一个"维度"。字段,以及每行的单独格式化字段
scott@chromebook-edgar:~/Downloads/xl/worksheets$ xmllint --format sheet1.xml | grep dimension
<dimension ref="A1:G60"/>
scott@chromebook-edgar:~/Downloads/xl/worksheets$ xmllint --format sheet1.xml | grep 60
<dimension ref="A1:G60"/>
<v>0.94903607351434327</v>
<v>60</v>
<v>1.029702686080076</v>
<v>460</v>
<row r="60" spans="1:7" ht="13.2" thickBot="1" x14ac:dyDescent="0.25">
你可以这样算出我假设的数据
范围内的最低行是什么scott@chromebook-edgar:~/Downloads/xl/worksheets$ xmllint --format sheet1.xml | grep dimension | awk -F" '{print $2}' | awk -F: '{print $2}' | grep -o '[0-9]+'
60
scott@chromebook-edgar:~/Downloads/xl/worksheets$ xmllint --format sheet2.xml | grep dimension | awk -F" '{print $2}' | awk -F: '{print $2}' | grep -o '[0-9]+'
204