Excel в CSV с кодировкой UTF8 - PullRequest
567 голосов
/ 19 ноября 2010

У меня есть файл Excel, содержащий несколько испанских символов (тильды и т. Д.), Которые мне нужно преобразовать в файл CSV для использования в качестве файла импорта.Однако, когда я делаю Save As CSV, он искажает «специальные» испанские символы, которые не являются символами ASCII.Похоже, что это также происходит с левыми и правыми кавычками и длинными черточками, которые, похоже, исходят от исходного пользователя, создающего файл Excel в Mac.

Поскольку CSV - это просто текстовый файл, я уверен, чтообрабатывать кодировку UTF8, поэтому я предполагаю, что это ограничение Excel, но я ищу способ перейти из Excel в CSV и сохранить нетронутыми символы, не входящие в ASCII.

Ответы [ 36 ]

0 голосов
/ 20 июня 2012

Другой способ - открыть файл CSV UTF-8 в Блокноте, где он будет отображаться правильно. Затем замените все "," на вкладки. Вставьте все это в новый файл Excel.

0 голосов
/ 30 июня 2014

А для тех, у кого есть возвышенный текст: сохранить с кодировкой utf-16 LE с BOM следует сделать это; -)

0 голосов
/ 13 сентября 2012

Вы можете сохранить excel как unicode текст, разделенный табуляцией.

0 голосов
/ 12 января 2012

Я использовал следующее решение: Mac Exel 2008> файл> Сохранить как и затем в формате использовать MS_DOS с разделением запятыми (.csv).Работал отлично.

0 голосов
/ 28 января 2015

У меня та же проблема, и я сталкиваюсь с этим дополнением, и оно отлично работает в Excel 2013 и Excel 2007 и 2010, для которых оно упоминается.

0 голосов
/ 07 июня 2016

Мне нужно было автоматизировать этот процесс на моем 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 {}

Это действительно очень окольный способ, но это был самый надежный метод, который я нашел.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...