Мне нужно было автоматизировать этот процесс на моем Mac. Первоначально я пытался использовать catdoc/xls2csv
, как предложено mpowered, но xls2csv
не мог определить исходную кодировку документа, и не все документы были одинаковыми. В итоге я установил выходную кодировку веб-страницы по умолчанию равной UTF-8
и затем предоставил файлы в Apple Automator, применив действие Convert Format of Excel Files
для преобразования в Web Page (HTML)
. Затем, используя PHP
, DOMDocument
и XPath
, я запросил документы и отформатировал их в CSV
.
Это скрипт PHP (process.php):
<?php
$pi = pathinfo($argv[1]);
$file = $pi['dirname'] . '/' . $pi['filename'] . '.csv';
$fp = fopen($file,'w+');
$doc = new DOMDocument;
$doc->loadHTMLFile($argv[1]);
$xpath = new DOMXPath($doc);
$table = [];
foreach($xpath->query('//tr') as $row){
$_r = [];
foreach($xpath->query('td',$row) as $col){
$_r[] = trim($col->textContent);
}
fputcsv($fp,$_r);
}
fclose($fp);
?>
И это команда оболочки, которую я использовал для преобразования документов HTML в csv:
find . -name '*.htm' | xargs -I{} php ./process.php {}
Это действительно очень окольный способ, но это был самый надежный метод, который я нашел.