Excel в CSV с кодировкой UTF8

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

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

Простым обходным путем является использование Google Spreadsheet. Вставить (значения, только если у вас сложные формулы) или импортировать лист, а затем загрузить CSV. Я просто попробовал несколько персонажей, и он работает довольно хорошо.

ПРИМЕЧАНИЕ. В Google Таблицах есть ограничения при импорте. См. Здесь .

ПРИМЕЧАНИЕ. Будьте осторожны с конфиденциальными данными с помощью Google Таблиц.

EDIT: Еще одна альтернатива – в основном они используют макрос VB или дополнения, чтобы заставить сохранять как UTF8. Я не пробовал ни одно из этих решений, но они звучат разумно.

Я нашел приложение OpenSffice для работы с электронными таблицами, Calc, действительно хорошо справляется с данными CSV.

В диалоговом окне «Сохранить как …» нажмите «Параметры форматирования», чтобы получить разные кодировки для CSV. LibreOffice работает аналогично AFAIK.

диалоговое окно сохранения

  1. Сохраните лист Excel как «Unicode Text (.txt)». Хорошей новостью является то, что все международные символы находятся в UTF16 (обратите внимание, а не на UTF8). Тем не менее, новый файл «* .txt» является разделителем TAB, а не запятой, и поэтому не является истинным CSV.

  2. (необязательно) Если вы не можете использовать файл с разделителями TAB для импорта, используйте свой любимый текстовый редактор и замените символы TAB запятыми «,».

  3. Импортируйте файл * .txt в целевое приложение. Убедитесь, что он может принимать формат UTF16.

Если UTF-16 был правильно реализован с поддержкой кодов без BMP, вы можете конвертировать файл UTF-16 в UTF-8 без потери информации. Я оставляю это вам, чтобы найти ваш любимый способ сделать это.

Я использую эту процедуру для импорта данных из Excel в Moodle.

Я знаю, что это старый вопрос, но я столкнулся с этим вопросом, борясь с теми же проблемами, что и ОП.

Не найдя ни одного из предлагаемых решений жизнеспособным вариантом, я решил выяснить, есть ли способ сделать это, просто используя Excel.

К счастью, я обнаружил, что проблема с потерянным символом происходит только (в моем случае) при сохранении формата xlsx в формате csv. Сначала я попытался сохранить файл xlsx в xls, а затем в csv. Это действительно сработало.

Пожалуйста, попробуйте и посмотрите, работает ли это для вас. Удачи.

Вы можете использовать команду iconv под Unix (также доступную в Windows как libiconv ).

После сохранения в CSV в Excel в командной строке поставьте:

 iconv -f cp1250 -t utf-8 file-encoded-cp1250.csv > file-encoded-utf8.csv 

(не забудьте заменить cp1250 на вашу кодировку).

Работает быстро и отлично для больших файлов, таких как база данных почтовых кодов, которые нельзя импортировать в GoogleDocs (ограничение 400 000 ячеек).

Единственный «простой способ» сделать это заключается в следующем. Во-первых, поймите, что существует разница между отображаемым и скрытым в файле Excel CSV.

(1) Откройте файл Excel, в котором у вас есть информация (.xls, .xlsx)

(2) В Excel выберите «CSV (Comma Delimited) (* .csv) в качестве типа файла и сохраните его как этот тип.

(3) В NOTEPAD (в разделе «Программы», а затем «Аксессуары в меню« Пуск ») откройте сохраненный CSV-файл в« Блокноте »

(4) Затем выберите -> Сохранить как … и в нижней части окна «Сохранить как», появится поле выбора, обозначенное как «Кодирование». Выберите UTF-8 (НЕ используйте ANSI или вы потеряете все акценты и т. Д.). После выбора UTF-8 сохраните файл в несколько другом имени файла из оригинала.

Этот файл находится в UTF-8 и сохраняет все символы и акценты и может быть импортирован, например, в MySQL и другие программы баз данных.

Этот ответ берется из этого форума .

Еще один, который я нашел полезным: « Numbers » позволяет использовать параметры кодирования при сохранении в CSV.

«nevets1219» прав о документах Google, однако, если вы просто «импортируете» файл, он часто не конвертирует его в UTF-8.

Но если вы импортируете CSV в существующую таблицу Google, она конвертируется в UTF-8.

Вот рецепт:

  • На главном экране Документов (или Диска) нажмите кнопку «Создать» и выберите «Электронная таблица»,
  • В меню «Файл» выберите «Импорт»,
  • Нажмите «Выбрать файл»
  • Выберите «Заменить таблицу»
  • Выберите тот символ, который вы используете в качестве разделителя
  • Нажмите «Импорт»
  • В меню «Файл» выберите «Загрузить как» -> CSV (текущий лист)

Полученный файл будет находиться в UTF-8

Вы можете сделать это на современной Windows-машине без стороннего программного обеспечения. Этот метод является надежным и будет обрабатывать данные, содержащие цитируемые запятые, цитируемые символы табуляции, символы CJK и т. Д.

1. Сохранить в Excel

В Excel сохраните данные в file.txt с помощью типа Unicode Text (*.txt) .

2. Запустите PowerShell

Запустите powershell из меню «Пуск».

3. Загрузите файл в PowerShell

 $data = Import-Csv C:\path\to\file.txt -Delimiter "`t" -Encoding BigEndianUnicode 

4. Сохраните данные как CSV

 $data | Export-Csv file.csv -Encoding UTF8 -NoTypeInformation 

Для тех, кто ищет полностью программное (или, по крайней мере, серверное) решение, я имел большой успех, используя инструмент xls2csv от catdoc.

Установить catdoc:

 apt-get install catdoc 

Сделайте преобразование:

 xls2csv -d utf-8 file.xls > file-utf-8.csv 

Это быстро вспыхивает.

Обратите внимание, что важно включить флаг -d utf-8 , иначе он будет кодировать вывод в кодировке cp1252 по умолчанию, и вы рискуете потерять информацию.

Обратите внимание, что xls2csv также работает только с файлами .xls , он не работает с файлами .xlsx .

Как насчет использования Powershell.

 Get-Content 'C:\my.csv' | Out-File 'C:\my_utf8.csv' -Encoding UTF8 

Я не смог найти решение VBA для этой проблемы в Mac Excel. Казалось, что невозможно выводить текст UTF-8.

Поэтому мне, наконец, пришлось отказаться от VBA, укусить пулю и научиться AppleScript. Это было не так плохо, как я думал.

Решение описано здесь: http://talesoftech.blogspot.com/2011/05/excel-on-mac-goodbye-vba-hello.html

Предполагая среду Windows, сохраняйте и работайте с файлом, как обычно, в Excel, но затем откройте сохраненный файл Excel в Gnome Gnumeric (бесплатно). Сохраните таблицу Gnome Gnumeric как CSV, которая – для меня в любом случае – сохраняет ее как CSV UTF-8.

Легкий способ сделать это: загрузить открытый офис ( здесь ), загрузить электронную таблицу и открыть файл excel ( .xls или .xlsx ). Затем просто сохраните его как текстовый CSV-файл и откроется окно с просьбой сохранить текущий формат или сохранить в формате .ODF. выберите «сохранить текущий формат», а в новом окне выберите вариант, который лучше подходит для вас, в соответствии с языком, на котором написан ваш файл. Для испанского языка выберите Западную Европу ( Windows-1252/ WinLatin 1 ), и файл работает отлично. Если вы выберете Unicode ( UTF-8 ), он не будет работать с испанскими символами.

  1. Сохранить файл xls (файл Excel) в виде файла Unicode text => будет сохранен в текстовом формате (.txt)

  2. Измените формат с .txt на .csv (переименуйте файл из XYX.txt в XYX.csv

Как ни забавно, самый простой способ, которым я нашел, чтобы сохранить мою таблицу 180 Мбайт в файле CSV UTF8, состоял в том, чтобы выбрать ячейки в Excel, скопировать их и вставить содержимое буфера обмена в SublimeText.

Второй вариант для «nevets1219» – открыть файл CSV в Notepad ++ и сделать преобразование в ANSI.

Выберите в верхнем меню: Кодирование -> Конвертировать в Ansi

Microsoft Excel имеет возможность экспортировать электронную таблицу с использованием кодировки Unicode. См. Следующий снимок экрана.

введите описание изображения здесь

Самый простой способ: нет необходимости. Открыть офис и документы google.

  1. Сохраните файл как «текстовый файл Unicode»;
  2. теперь у вас есть текстовый файл в формате Юникод
  3. откройте его «Блокнот» и «Сохранить как» с помощью выбора «utf-8» или другой кодовой страницы, которую вы хотите
  4. переименовать расширение файла с "txt" на "csv"

не открывайте его с Ms-office в любом случае !!! Теперь у вас есть файл CSV с разделителями табуляции.

Я написал небольшой скрипт Python, который может экспортировать рабочие листы в UTF-8.

Вам просто нужно предоставить файл Excel в качестве первого параметра, а затем листы, которые вы хотите экспортировать. Если вы не предоставите листы, скрипт будет экспортировать все листы, которые присутствуют в файле Excel.

 #!/usr/bin/env python # export data sheets from xlsx to csv from openpyxl import load_workbook import csv from os import sys reload(sys) sys.setdefaultencoding('utf-8') def get_all_sheets(excel_file): sheets = [] workbook = load_workbook(excel_file,use_iterators=True,data_only=True) all_worksheets = workbook.get_sheet_names() for worksheet_name in all_worksheets: sheets.append(worksheet_name) return sheets def csv_from_excel(excel_file, sheets): workbook = load_workbook(excel_file,use_iterators=True,data_only=True) for worksheet_name in sheets: print("Export " + worksheet_name + " ...") try: worksheet = workbook.get_sheet_by_name(worksheet_name) except KeyError: print("Could not find " + worksheet_name) sys.exit(1) your_csv_file = open(''.join([worksheet_name,'.csv']), 'wb') wr = csv.writer(your_csv_file, quoting=csv.QUOTE_ALL) for row in worksheet.iter_rows(): lrow = [] for cell in row: lrow.append(cell.value) wr.writerow(lrow) print(" ... done") your_csv_file.close() if not 2 <= len(sys.argv) <= 3: print("Call with " + sys.argv[0] + " <xlxs file> [comma separated list of sheets to export]") sys.exit(1) else: sheets = [] if len(sys.argv) == 3: sheets = list(sys.argv[2].split(',')) else: sheets = get_all_sheets(sys.argv[1]) assert(sheets != None and len(sheets) > 0) csv_from_excel(sys.argv[1], sheets) 

Кодирование -> Преобразование в Ansi будет кодировать его в ANSI / UNICODE. Utf8 – это подмножество Unicode. Возможно, в ANSI будет закодировано правильно, но здесь мы говорим о UTF8, @SequenceDigitale.

Существуют более быстрые способы, такие как экспорт csv (с разделителями-запятыми), а затем открытие этого csv с помощью Notepad ++ (бесплатно), а затем Encoding> Convert to UTF8. Но только если вам нужно сделать это один раз в файл. Если вам нужно часто меняться и экспортироваться, лучшим решением является LibreOffice или GDocs.

открыть .csv отлично с помощью блокнота ++. если вы видите, что ваша кодировка хороша (вы видите все символы, как они должны быть), нажмите кодировку, а затем конвертируйте в ANSI else – узнайте, какова ваша текущая кодировка

Другое решение – открыть файл с помощью winword и сохранить его как txt, а затем снова открыть его с помощью excel, и он будет работать ISA

Пошла одна и та же проблема и вышла из этой публикации. Ничто из этого не помогло мне. Наконец, я преобразовал свой Unicode .xls в .xml (выберите Save as … XML Spreadsheet 2003) и создал правильный символ. Затем я написал код для разбора xml и извлеченного содержимого для моего использования.

Я использовал следующее решение: Mac Exel 2008> file> Save-as, а затем в формате использовать MS_DOS Comma Separated (.csv). Работал отлично.

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

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

Сохранить диалог> Кнопка «Инструменты»> «Веб-параметры»> вкладка «Кодировка»

Мне нужно было автоматизировать этот процесс на моем Mac. catdoc/xls2csv я попытался использовать catdoc/xls2csv как было предложено mpowered, но у xls2csv возникли проблемы с обнаружением исходного кодирования документа, и не все документы были одинаковыми. То, что я закончил, заключалось в том, что установка кодировки вывода по умолчанию для веб-страницы была UTF-8 а затем предоставление файлов в Automator от Apple, применяя действие « 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 {} 

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

Я использую программу, которую я нашел в сети (не мой, и нет кредита). Но он работает без потерь

https://www.dropbox.com/s/vllyvlv6rekd69v/CpConverter.exe?dl=0

 - Choose your file - select europ (windows) 1252 as source - select UNICODE UTF-8 as destination 

и нажмите пробег

Вы можете импортировать в UTF8 или импортировать файл UFT8, управлять им в excel, а затем экспортировать его в UTF8

  • Сохранить файл как CSV UTF8 дает ошибку 1004
  • Создание CSV-файла со специальными символами в полях
  • Powershell Excel - сохранить файл с кодировкой как Unicode UTF-8
  • VBA - кодирование, формат .csv и изменение разделителей
  • Экспорт C # в Excel UTF-8
  • Используйте «ADODB.Stream» для преобразования ANSI в UTF-8, пропустите 1-2 символа в первой строке
  • Ошибка кодирования - xlsxwriter - Python
  • Специальные символы не отображаются правильно при записи в файл csv в excel
  • Вызов другого объектаStream.Write текстовый макрос внутри моего макроса не работает
  • Работа с Unicode в VBA StrConv
  • импортировать ивритский файл excel с генерируемым PHP тарабарщиной
  • Interesting Posts
    Давайте будем гением компьютера.