Unix bash:在excel文件中获得正确的行数



是否有合适的方法来查找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

相关内容

  • 没有找到相关文章

最新更新