Можно ли заставить Excel распознавать файлы CSV UTF-8 автоматически?

Я разрабатываю часть приложения, которая отвечает за экспорт некоторых данных в файлы CSV. Приложение всегда использует UTF-8 из-за его многоязычности на всех уровнях. Но открытие таких CSV-файлов (содержащих, например, диакритические знаки, буквы кириллицы, греческие буквы) в Excel не дает ожидаемых результатов, отображающих что-то вроде Г „/Г¤, Г–/Г¶ . И я не знаю, как заставить Excel понять, что открытый CSV-файл закодирован в UTF-8. Я также попытался указать спецификацию UTF-8 EF BB BF , но Excel это игнорирует.

Есть ли обходной путь?

P.S. Какие инструменты потенциально могут вести себя так же, как Excel?


UPDATE

Должен сказать, что я запутал сообщество формулировкой вопроса . Когда я задавал этот вопрос, я спросил, как открыть файл CSV UTF-8 в Excel без каких-либо проблем для пользователя, плавным и прозрачным способом. Однако я использовал неправильную формулировку, прося сделать это автоматически . Это очень сбивает с толку и противоречит автоматизации макросов VBA. На этот вопрос есть два ответа, которые я ценю больше всего: самый первый ответ Алекса https://stackoverflow.com/a/6002338/166589, и я принял этот ответ; и второй от Марка https://stackoverflow.com/a/6488070/166589, который появился немного позже. С точки зрения юзабилити Excel, похоже, не хватало удобной для пользователя поддержки CSV UTF-8, поэтому я считаю, что оба ответа верны, и я сначала принял ответ Алекса, потому что он действительно заявил, что Excel не может сделать это прозрачно. Это то, что я здесь перепутал с автоматически . Ответ Марка предлагает более сложный способ для более продвинутых пользователей достичь ожидаемого результата. Оба ответа великолепны, но ответ Алекса немного лучше подходит для моего нечетко определенного вопроса.


ОБНОВЛЕНИЕ 2

Пять месяцев спустя после последнего редактирования , Я заметил, что ответ Алекса почему-то пропал. Я действительно надеюсь, что это не была техническая проблема, и я надеюсь, что больше не обсуждается, какой ответ важнее. Поэтому я принимаю ответ Марка как лучший.


Алекс прав, но, поскольку вам нужно экспортировать в csv, вы можете дать пользователям этот совет при открытии csv файлы:

  1. Сохраните экспортированный файл как CSV
  2. Откройте Excel
  3. Импортируйте данные с помощью Data— > Импорт внешних данных -> Импорт данных
  4. Выберите тип файла «csv» и перейдите к своему файлу.
  5. В мастере импорта измените File_Origin на «65001 UTF «(или выберите правильный языковой идентификатор символа)
  6. Замените разделитель на запятую
  7. Выберите, куда импортировать и завершите

Таким образом, специальные символы должны отображаться правильно.


172

Порядок байтов UTF-8 маркер укажет Excel 2007+ на то, что вы используете UTF-8. (См. Это сообщение SO).

В случае, если у кого-то возникнут те же проблемы, что и у меня, класс кодирования .NET UTF8 не выводит маркер порядка байтов в GetBytes () вызов. Вам нужно использовать потоки (или использовать обходной путь), чтобы получить спецификацию для вывода.

отредактировал 12 декабря ’18 в 17:19
ответил 09 июля ’12 в 16:40
  • 22
    Вставка спецификации UTF-8 кажется правильным решением. После этого прозрачно. — vy32 26 ноя. ’14 в 15:59
  • 13
    Я использую Notepad ++, чтобы легко конвертировать .csv из UTF-8 в UTF-8 с BOM — Себастьян, 6 июня ’16 в 8:02
  • 3
    Да — лучшее решение. Множество запутанных сообщений об установке заголовков в ответах http. Это решает проблему. То же самое можно увидеть, открыв файл в блокноте и сохранив его обратно с использованием опции UTF-8. Также добавляет маркер порядка байтов. — user369142, 14 ноя 2016, в 17:23
  • 1
    @Elmue: Я подумал, может быть (как и я) он думал , что сохранил его с помощью маркера порядка байтов, но не потому, что какая-то библиотека не работает, как он думал, что это так. Я счел полезным добавить этот ответ, и, очевидно, ряд других людей тоже сочли его полезным. Во всяком случае, это кажется лучшим ответом, чем отказ от использования CSV или указание пользователям, как открыть файл каким-то причудливым способом. — StriplingWarrior, 26 ноя 2016, в 21:57
  • 1
    Кажется, что версия Excel для Mac по-прежнему игнорирует спецификацию. (Excel для Mac 2011 г.) — Томас Эндрюс, 27 марта 2017 г., 18:23
| показать 13 дополнительных комментариев

Маркер порядка байтов UTF-8 укажет Excel 2007+ на тот факт, что вы используете UTF-8. (См. Это сообщение SO).

В случае, если у кого-то возникнут те же проблемы, что и у меня, класс кодирования .NET UTF8 не выводит маркер порядка байтов в GetBytes () вызов. Вам нужно использовать потоки (или использовать обходной путь), чтобы получить спецификацию для вывода.


78

Кажется, что ошибка с проигнорированной спецификацией быть исправлено для Excel 2013. У меня была такая же проблема с кириллическими буквами, но добавление символа спецификации uFEFF помогло.

ответил 26 апр. ’13 в 07:52
  • 8
    Поскольку я добавил uFEFF в начало моего файла CSV (сгенерированного на Java), Excel может правильно их открыть! Спасибо — Гальдо, 27 сен., В 19:47
  • 17
    это тоже решило мою проблему, на php это выглядит так: $ utf8_with_bom = chr (239). chr (187). chr (191). $ csvText ; — Абдулла, 31 дек. ’13 в 7:09
  • @updola большое спасибо за этот комментарий, сэкономил мне часы — Натан Хейфилд, 15 окт., в 18:58
  • UTF-8 по определению не использует и не должен использовать символы спецификации. То, как Excel читает спецификацию, лишает UTF-8 преимущества перед Unicode, что является обратной совместимостью с ASCII. Добавление спецификации заставит Excel работать, но нарушит чтение других правильных файлов UTF-8/ASCII. — Нельсон 16 сен. ’15 в 07:35
  • 1
    FE FF превращает Mac OS Excel 2016 во весь файл в виде японских иероглифов. — Накилон, 26 янв. ’17 в 15:31
| показать 7 дополнительных комментариев

Кажется, что ошибка с игнорированием спецификации исправлена ​​для Excel 2013. У меня была та же проблема с кириллическими буквами, но добавление символа спецификации uFEFF помогло.


63

Невероятно, что существует так много ответов, но ни один из них не отвечает на вопрос:

«Когда я был задавая этот вопрос, я спросил, как открыть CSV-файл UTF-8 в Excel без каких-либо проблем для пользователя … «

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

Итак, вопрос в том, как заставить Excel отображать данные UTF8 простым двойным щелчком?

Ну, по крайней мере, в Excel 2007 это невозможно, если вы используете файлы CSV, потому что спецификация UTF8 игнорируется, и вы увидите только мусор. Это уже часть вопроса Любомира Шайдарева:

«Я также пробовал указать UTF-8 BOM EF BB BF, но Excel это игнорирует».

У меня такой же опыт: запись русских или греческих данных в CSV-файл UTF8 с BOM приводит к мусору в Excel:

Содержимое CSV-файла UTF8 :

  Colum1; Column2Val1; Val2Авиабилет; Tλληνικ  

Результат в Excel 2007:

Решение — вообще не использовать CSV. Этот формат настолько глупо реализован Microsoft, что это зависит от настроек региона в панели управления , если используется запятая или точка с запятой используется как разделитель. Таким образом, один и тот же файл CSV может правильно открываться на одном компьютере, а на другом — нет. «CSV» означает « значения, разделенные запятыми », но, например, в немецкой Windows по умолчанию точка с запятой должна использоваться в качестве разделителя, а запятая не работает. (Здесь он должен называться SSV = Значения, разделенные точкой с запятой) Файлы CSV не могут быть заменены между разными языковыми версиями Windows. Это дополнительная проблема к проблеме UTF-8.

Excel существует уже несколько десятилетий. Жаль, что Microsoft не смогла реализовать такую ​​простую вещь, как импорт CSV, за все эти годы.


Однако, если вы поместите те же значения в файл HTML и сохраните этот файл как файл UTF8 с спецификацией с расширением файла XLS , вы получите правильный результат.

Содержимое файла XLS UTF8:

  
Colum1 Column2
Val1 Val2
АвиабилетTλληνικ

Результат в Excel 2007:

Вы даже можете использовать цвета в HTML, которые Excel покажет правильно.

   .Head {background-color: gray;  белый цвет;  } .Red {цвет: красный;  }  
Colum1 Column2
Val1 Val2
Авиабилет Tλληνικ

Результат в Excel 2007:

В этом случае только сама таблица имеет черную рамку и строки. Если вы хотите, чтобы ВСЕ ячейки отображали линии сетки, это также возможно в HTML:

          MySuperSheet Name>   WorksheetOptions> ExcelWorksheet> ExcelWorksheets> ExcelWorkbook>    
Colum1Column2
Val1 Val2
АвиабилетTλληνικ

Этот код даже позволяет указать имя рабочего листа (здесь «MySuperSheet»)

Результат в Excel 2007:

отредактировано 6 ноя ’18 в 1:52
iv>
ответил 25 ноября ’16 в 14:31
  • 1
    И еще невероятно, что люди до сих пор на него отвечают. 🙂 Однако я бы сказал, что CSV мертв: CSV — это смертельно простой простой потоковый формат, и, когда я был в этом проекте, мы очень активно использовали его для взаимодействия компонентов. Я бы никогда не стал использовать формат HTML из-за его слишком репрезентативного характера, и я никогда не мог заставить пользователей этого проекта экспортировать данные в HTML только для того, чтобы сделать его удобным для Excel. Excel не справился с UTF-8 CSV, и я понятия не имею, что изменилось за 5 лет с тех пор. Но эти файлы, разделенные запятыми, точками с запятой и табуляцией, — это настоящее безумие. — Любомир Шайдарев 25 нояб., В 14:45
  • 6
    Неудивительно, что люди до сих пор отвечают на ваш вопрос, потому что Google приводит их сюда: Все с одним и тем же вопросом: как заставить глупый Excel делать то, что я хочу? Введите в Google 3 слова: «excel csv utf8», и ваш вопрос будет ПЕРВЫМ результатом в мире. Вы написали бестселлер! — Elmue, 25 ноя 2016, в 14:58
  • 9
    Поскольку вы нашли время, чтобы указать, как ни один из других ответов здесь не заставляет Excel правильно открывать файл CSV, стоит упомянуть, что этот ответ не сделай это либо. Первоначально принятый ответ (который был удален модератором) рекомендовал экспортировать данные напрямую в файл Excel или экспортировать файл HTML и разрешить пользователям открывать файл в Excel. Любое из этих решений менее опасно, чем сохранение файла HTML с расширением файла XLS, но не было предложено никакого ответа, который фактически отвечает на вопрос. — StriplingWarrior 02 дек. ’16 в 0:40
  • 4
    @Warrior: «..но не было предложено никакого ответа, который действительно отвечал бы на вопрос». Это не так. Я ОТВЕТИЛ на этот вопрос: по крайней мере, с Excel 2007 это НЕВОЗМОЖНО. Это однозначный ответ. Если Excel игнорирует спецификацию UTF8 и интерпретирует данные как ANSI, нет возможности импортировать, например, греческий или русский текст в Excel через CSV простым двойным щелчком по файлу (это был вопрос: «без проблем для пользователя» ). Я предлагаю рабочее решение, которое работает со ВСЕМИ версиями Excel по двойному щелчку мыши и не требует дополнительных действий в меню Excel. — Elmue 02 дек. ’16 в 13:48
  • 4
    Это не только не отвечает на вопрос, но и совершенно неправильно утверждать, что CSV является «устаревшим» и «мертвым». То, что вы не видите в нем пользы, не означает, что он мертв. Кроме того, вы явно не понимаете, что это история или насколько широко он используется сегодня. Это лучше, чем XML (из-за меньшего размера пакетов), и проблема в том, что Microsoft просто не следует стандарту для формата UTF8. Правильный ответ — использовать открытый офис, а не Microsoft, поскольку Microsoft никогда не была хороша в кодировании. — Джереми 16 мая 2018, 21:07
| показать 6 дополнительных комментариев

Невероятно, что существует так много ответов, но ни один не отвечает на вопрос:

«Когда я задавал этот вопрос, я спросил, как открыть файл CSV UTF-8 в Excel без каких-либо проблем для пользователя, …»

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

Итак, вопрос в том, как заставить Excel отображать данные UTF8 простым двойным щелчком?

По крайней мере, в Excel 2007 это невозможно, если вы используете файлы CSV, потому что спецификация UTF8 игнорируется, и вы увидите только мусор. Это уже часть вопроса Любомира Шайдарива:

«Я также пытался указать UTF-8 BOM EF BB BF, но Excel игнорирует это. «

У меня такой же опыт: запись русских или греческих данных в CSV-файл UTF8 с BOM приводит к мусору в Excel:

Содержимое CSV-файла UTF8:

  Colum1; Column2Val1; Val2Авиабилет; Tλληνικ  

Результат в Excel 2007 :

Решение — вообще не использовать CSV. Этот формат настолько глупо реализован Microsoft, что это зависит от настроек региона в панели управления , если используется запятая или точка с запятой используется в качестве разделителя. Таким образом, один и тот же файл CSV может правильно открываться на одном компьютере, но не на другом компьютере. «CSV» означает « значения, разделенные запятыми », но, например, в немецких Windows по умолчанию точка с запятой должна использоваться в качестве разделителя, пока запятая не работает. (Здесь она должна называться SSV = Значения, разделенные точкой с запятой). Файлы CSV не могут быть заменены между разными языковыми версиями Windows. Это дополнение Одна из основных проблем UTF-8.

Excel существует уже несколько десятилетий. Жаль, что Microsoft не смогла реализовать такую ​​простую вещь, как импорт CSV, за все эти годы.


Однако, если вы поместите те же значения в файл HTML и сохраните этот файл как файл UTF8 с спецификацией с расширением файла XLS , вы получите правильный результат.

Содержимое файла XLS UTF8:

  
Colum1 Column2
Val1 Val2
АвиабилетTλληνικ

Результат в Excel 2007:

Вы даже можете использовать цвета в HTML, которые Excel покажет правильно.

   .Head {background-color: gray;  белый цвет;  } .Red {цвет: красный;  }  
Colum1 Column2
Val1 Val2
Авиабилет Tλληνικ

Результат в Excel 2007:

В этом случае только сама таблица имеет черную рамку и строки. Если вы хотите, чтобы ВСЕ ячейки отображали линии сетки, это также возможно в HTML:

          MySuperSheet Name>   WorksheetOptions> ExcelWorksheet> ExcelWorksheets> ExcelWorkbook>    
Colum1Column2
Val1 Val2
АвиабилетTλληνικ

Этот код даже позволяет указать имя рабочего листа (здесь «MySuperSheet»)

Результат в Excel 2007:


50

Мы использовали этот обходной путь:

  1. Конвертировать CSV в UTF-16 LE
  2. Вставить спецификацию в начало файла
  3. Использовать табуляцию как разделитель полей
отредактировано 3 марта ’19 в 17:07
Eric
5,94811 золотых знаков2727 серебряных знаков4848 бронзовых знаков
ответил 26 января ’12 в 10:11
  • 1
    Спасибо! Я попробовал все остальные ответы в этой теме, но преобразование в UTF-8 просто не сработало. Когда я попробовал UTF-16 с спецификацией, он сработал мгновенно. — Хаски 6 мая ’13 в 11:32
  • В Excel для Mac 2011 я успешно использовал файлы CSV с прямым порядком байтов UTF-16 — мультидинамический, 13 сен 2016, 23:29
  • Спасибо, это решение отлично подходит для предоставления моим пользователям csv в формате Unicode, который они могут открывать в Excel. — user1073075 31 окт. ’16 в 10:04
добавить комментарий |

Мы использовали этот обходной путь:

  1. Конвертировать CSV в UTF-16 LE
  2. Вставить спецификацию в начало файла
  3. Использовать табуляцию как разделитель полей

22

Были те же проблемы с файлами CSV, созданными PHP. Excel игнорировал спецификацию, когда разделитель был определен с помощью "sep =, n" в начале содержимого (но, конечно, после спецификации).

Поэтому добавляем спецификацию ( " xEF xBB xBF" ) в начало содержимого и устанавливаем точку с запятой в качестве разделителя с помощью fputcsv ($ fh, $ data_array, " ; "); делает свое дело.

отредактировано 26 окт., 9:18
kqw
16.6k1111 золотых знаков5959 серебряных знаков9090 бронзовых знаков
ответил 22 окт.’13 в 11:02
добавить комментарий |

Были те же проблемы с файлами CSV, созданными PHP. Excel игнорировал спецификацию, когда разделитель был определен с помощью "sep =, n" в начале содержимого (но, конечно, после спецификации).

Поэтому добавляем спецификацию ( " xEF xBB xBF" ) в начало содержимого и устанавливаем точку с запятой в качестве разделителя с помощью fputcsv ($ fh, $ data_array, " ; "); делает свое дело.


14

Старый вопрос, но, черт возьми, самое простое решение:

  1. Открыть CSV в Блокноте
  2. Сохранить как -> выбрать правильную кодировку
  3. Откройте новый файл
ответил 29 апр. ’14 в 13:39
  • 1
    Какую версию Excel вы используете? — Любомир Шайдарив 29 апр. ’14 в 14:57
  • 1
    Великолепно, просто работает и решает проблему (по крайней мере, для меня) — Оберон Вашер 23 июл 2014, 12:50
  • 1
    Нет, потому что проблема в том, чтобы Excel открывал файл .csv как файл csv. Я имею в виду, у меня есть процесс, в котором я генерирую файлы csv. Тогда пользователю потребуется только открыть файлы. Здесь от него требуется больше, чем это. — Веверке, 12 мая 2015, 16:18
  • 2
    @Veverke, если вы создаете файлы на регулярной основе, это не лучшее решение. Но если это разовый вопрос, это идеальный ответ. Это работает, потому что Блокнот помещает спецификацию в начало файла UTF-8 или UTF-16.. — Марк Рэнсом, 17 сен., 16:14
  • Работает как шарм. ((: — user2925795 28 марта ’19 в 16:45
добавить комментарий |

Старый вопрос, но, черт возьми, самое простое решение:

  1. Открыть CSV в Блокноте
  2. Сохранить как -> выбрать правильную кодировку
  3. Открыть новый файл

13

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

Мне не удалось найти способ заставить Excel распознавать UTF-8 автоматически, и я не хотел/не мог навязывать потребителям файлов усложнял инструкции, как их открывать. Поэтому я закодировал их как UTF-16le (со спецификацией) вместо UTF-8. Размер вдвое больше, но Excel может распознать кодировку. И они хорошо сжимаются, поэтому размер редко ( но, к сожалению, не никогда) имеет значение.

ответил 09 июля ’13 в 9:18
  • Это старый вопрос, но я рад, что люди все равно отвечу. Спасибо. 🙂 — Любомир Шайдарив 09 июл., 13 июл., 20:04
  • 1
    @LyubomyrShaydariv: так как я ответил на этот вопрос, коллега сказал мне, что последняя версия Excel идентифицирует CSV-файлы UTF-8 при условии, что у них есть начальная спецификация. Итак, через несколько лет, когда все в мире (или, в любом случае, все, кому мы доставляем файлы) будут использовать эту версию Excel или выше, я, возможно, смогу изменить свою кодировку 🙂 — Стив Джессоп, 12 июля 2013 г. 8:09
  • Странно, у меня не работает. Превращает символы в китайские символы … (они должны быть ивритом) — Веверке, 12 мая 2015 г., 16:22
  • У меня были китайские иероглифы в Excel, когда я сохранял в «UTF-16 BE с спецификацией». Когда я попробовал «UTF-16 LE with BOM», это сработало! Я использовал Sublime Text для тестирования. — Хенно, 7 апр. ’16 в 9:18
добавить комментарий |

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

Мне не удалось найти способ заставить Excel автоматически распознавать UTF-8, и я не хотел/не мог давать потребителям файлов сложные инструкции, как их открывать. Поэтому я закодировал их как UTF-16le (со спецификацией) вместо UTF-8. В два раза больше, но Excel может распознать кодировку. И они хорошо сжимаются, поэтому размер редко (но, к сожалению, не всегда) имеет значение.


10

Как я писал на http://thinkinginsoftware.blogspot.com/2017/12/correctly-generate-csv-that-excel-can.html:

Скажите разработчику программного обеспечения, ответственному за создание CSV, чтобы исправить это. В качестве быстрого обходного пути вы можете использовать gsed для вставки спецификации UTF-8 в начало строки:

  gsed -i '1s/^  ( xef  xbb   xbf ) ?/ xef  xbb  xbf/'file.csv  

Эта команда вставляет спецификацию UTF-4, если она отсутствует. Следовательно, это идемпотентная команда. Теперь вы сможете дважды щелкнуть файл и открыть его в Excel.

ответил 08 дек. ’17 в 17:40
  • Спасибо, исправили. Я только что преобразовал csv ‘;’ разделены на UTF-BOM в Notepad ++ и знают, что Excel открывает его правильно. — RandomGuy 9 фев. 18, 12:07
  • Именно то, что было нужно! Вот указатель на то, как реализовать это в PHP stackoverflow.com/questions/25686191/… — EFC 26 июля 2018 г., 14:49
  • Это обходной путь для Excel, который не может распознавать символы utf в файлах csv. Итак, это исправление, чтобы исправить проблему Excel. — cobp 6 мая ’19 в 12:20
  • Это работало для греческой версии Excel 2007 с разделителями-запятыми. Спасибо. — NameOfTheRose 15 нояб., В 15:03
  • Изменил кодировку на ‘UTF-16le’ в fs.createWriteStream (fileName, {encoding: ‘UTF-16le’}) и Excel правильно открыл файл CSV — рахул шукла Дек 19 ’19 в 11:59
| показать 1 дополнительный комментарий

Как я писал на http://thinkinginsoftware.blogspot.com/2017 /12/correctly-generate-csv-that-excel-can.html:

Сообщите разработчику программного обеспечения, отвечающему за создание CSV, чтобы исправить это. В качестве быстрого обходного пути вы можете использовать gsed для вставки спецификации UTF-8 в начало строки:

  gsed -i '1s/^  ( xef  xbb   xbf ) ?/ xef  xbb  xbf/'файл. csv  

Эта команда вставляет спецификацию UTF-4, если она отсутствует. Следовательно, это идемпотентная команда. Теперь вы сможете дважды щелкнуть файл и открыть его в Excel.


10

Вы можете преобразовать файл .csv в UTF-8 с помощью спецификации через Notepad ++:

  1. Откройте файл в Notepad ++.
  2. Перейдите в меню Кодировка Преобразовать в UTF-8 .
  3. Перейдите в меню Файл Сохранить .
  4. Закройте Notepad ++.
  5. Откройте файл в Excel.

Работал в Microsoft Excel 2013 (15.0.5093.1000) MSO (15.0.5101.1000) 64-бит из Microsoft Office Professional Plus 2013 в Windows 8.1 с локалью для программ, не поддерживающих Юникод, установленной на «Немецкий (Германия)».

отредактировал 25 января ’19 в 11:54
izogfif
2,95611 золотой значок2626 серебряных значков2121 бронзовые значки
ответил 20 сен ’18 в 8:15
  • 1
    Сделал то, что ты сказал, вообще не сработало. Преобразование/кодирование, установка наборов символов, в моем случае ничего не сработало. Импортировать файл в гугл-листы, скачать в формате csv, работал безотказно. Добро пожаловать с 2045 года — пакалбеким 20 декабря 2018, 20:05
  • 2
    Мне пришлось преобразовать его с помощью Encoding -> Cinvert ti UTF-8-BOM Excel version 2016 — Игорь Вукович 10 марта ’20 в 15:55
добавить комментарий |

Вы можете преобразовать файл .csv в UTF-8 с помощью спецификации через Notepad ++:

  1. Откройте файл в Notepad ++.
  2. Перейдите в меню Кодировка Преобразовать в UTF-8 .
  3. Перейдите в меню Файл Сохранить .
  4. Закройте Notepad ++.
  5. Откройте файл в Excel.

Работал в Microsoft Excel 2013 (15.0.5093.1000) MSO (15.0.5101.1000) 64-бит из Microsoft Office Professional Plus 2013 в Windows 8.1 с языковым стандартом для программы, не поддерживающие Юникод, установлен на «Немецкий (Германия)».


4

Простой макрос vba для открытия текстовых файлов utf-8 и файлов csv

  Sub OpenTextFile () filetoopen = Application.GetOpenFilename ("Текстовые файлы (* .txt;  * .csv), * .txt; *. csv ") Если filetoopen = Null или filetoopen = Empty, то выйдите из подчиненных книг. Имя файла OpenText: = filetoopen, _ Origin: = 65001, DataType: = xlDelimited, Comma: = TrueEnd Sub  

Origin: = 65001 — это UTF-8, Запятая: True для .csv файлы, распределенные в столбцах

Сохраните его в Personal.xlsb, чтобы он всегда был доступен. Персонализируйте панель инструментов Excel, добавив кнопку вызова макроса и открывайте файлы оттуда. Вы можете добавить в макрос дополнительное форматирование, например столбец автоматическая подгонка, выравнивание и т. д.

ответ дан 19 марта ’12 в 15 : 02
  • 2
    Спасибо. К сожалению, это предложение для действительно продвинутых пользователей Excel, и я стремлюсь, задавая этот вопрос, заставить Excel делать это сам автоматически. — Любомир Шайдарив 20 мар. ’12 в 17:42
  • Я пытался использовать этот фрагмент кода, но у меня он не работает. Я использую Excel 2013. — Шарунас Бельскис 7 дек. ’16 в 15:57
добавить комментарий |

Простой макрос vba для открытия текстовых файлов utf-8 и файлов csv

  Sub OpenTextFile  () filetoopen = Application.GetOpenFilename ("Текстовые файлы (* .txt; *. csv), * .txt; *. csv") Если filetoopen = Null или filetoopen = Empty, затем выйти из вспомогательных книгs.OpenText Имя файла: = filetoopen, _  Origin: = 65001, DataType: = xlDelimited, Comma: = TrueEnd Sub  

Origin: = 65001 — это UTF-8, Запятая: True для файлов .csv, распределенных по столбцам

Сохраните его в Personal.xlsb, чтобы он всегда был доступен. Персонализируйте панель инструментов Excel, добавив кнопку вызова макроса и открывайте файлы оттуда. Вы можете добавить больше форматирования к макросу, например, автоподбор столбцов, выравнивание и т. д.


3

Просто для помощи пользователям, заинтересованным в открытии файл в Excel, которые достигают этой темы, как и я.

Я использовал мастер ниже, и он отлично сработал для меня, импортировав файл UTF-8. ansparent, но полезно, если у вас уже есть файл.

  1. Откройте Microsoft Excel 2007.
  2. Щелкните параметр панели меню данных.
  3. Щелкните значок «Из текста».
  4. Перейдите в папку с файлом, который вы хотите импортировать. Щелкните имя файла, а затем нажмите кнопку «Импорт». Мастер импорта текста — на экране появится окно шага 1 или 3.
  5. Выберите тип файла, который лучше всего описывает ваши данные — с разделителями или фиксированной шириной.
  6. Выберите 65001: Unicode (UTF-8) из раскрывающегося списка, который появляется рядом с источником файла.
  7. Нажмите кнопку «Далее», чтобы открыть окно мастера импорта текста — шаг 2 или 3.
  8. Поставьте галочку рядом с разделителем, который использовался в файле, который вы хотите импортировать в Microsoft Excel 2007. Окно предварительного просмотра данных покажет вам, как ваши данные будут отображаться в зависимости от выбранного вами разделителя.
  9. Нажмите кнопку «Далее», чтобы открыть мастер импорта текста — шаг 3 из 3.
  10. Выберите соответствующий формат данных для каждого столбца данных, который вы хотите импортировать. У вас также есть возможность при желании не импортировать один или несколько столбцов данных.
  11. Нажмите кнопку «Готово», чтобы завершить импорт данных в Microsoft Excel 2007.

Источник: https://www.itg.ias.edu/content/how-import-csv-file-uses-utf-8-character-encoding-0

ответил 13 октября 2015 г. в 14:38
добавить комментарий |

Просто для помощи пользователям, заинтересованным в открытии файла в Excel, которые достигают этой темы, как и я.

Я использовали мастер, приведенный ниже, и он отлично сработал для меня, импортировав файл UTF-8. Непрозрачный, но полезный, если у вас уже есть файл.

  1. Откройте Microsoft Excel 2007.
  2. Щелкните пункт меню «Данные».
  3. Щелкните значок «Из текста».
  4. Перейдите к местоположению файла, который вы хотите импортировать. Щелкните имя файла, а затем нажмите кнопку «Импорт». Мастер импорта текста — на экране появится окно шага 1 или 3.
  5. Выберите тип файла, который лучше всего описывает ваши данные — с разделителями или фиксированной шириной.
  6. Выберите 65001: Unicode (UTF-8) из раскрывающегося списка, который появляется рядом с источником файла.
  7. Нажмите кнопку «Далее», чтобы открыть окно мастера импорта текста — шаг 2 или 3.
  8. Поставьте галочку рядом с разделителем, который использовался в файле, который вы хотите импортировать в Microsoft Excel 2007. Окно предварительного просмотра данных покажет вам, как ваши данные будут отображаться в зависимости от выбранного вами разделителя.
  9. Нажмите кнопку «Далее», чтобы открыть мастер импорта текста — шаг 3 из 3.
  10. Выберите соответствующий формат данных для каждого столбца данных, который вы хотите импортировать. . У вас также есть возможность не импортировать один или несколько столбцов данных, если хотите.
  11. Нажмите кнопку «Готово», чтобы завершить импорт данных в Microsoft Excel 2007.

Источник: https://www.itg.ias.edu/content/how-import-csv-file-uses-utf-8-character-encoding-0


3

Да, это возможно. Как ранее отмечалось несколькими пользователями, кажется, что существует проблема с чтением правильной метки порядка байтов в Excel, когда файл закодирован в UTF-8. С UTF-16 проблем нет, поэтому он присущ UTF-8. Решение, которое я использую для этого, — это добавление спецификации TWICE. Для этого я дважды выполняю следующую команду sed:

  sed -I '1s/^/ xef  xbb  xbf/' * .csv  

, где подстановочный знак можно заменить любым именем файла. Однако это приводит к изменению sep = в начале файла .csv. После этого файл .csv откроется в Excel в обычном режиме, но с дополнительной строкой с «sep =» в первой ячейке. «Sep =» также можно удалить в исходном .csv, но при открытии файла с помощью VBA следует указать разделитель:

  Workbooks.Open (name, Format  : = 6, Delimiter: = ";", Local: = True)  

Формат 6 — это формат .csv. Установите для Local значение true, если в файле есть даты. Если для Local не задано значение true, даты будут американизированы, что в некоторых случаях приведет к повреждению формата .csv.

отредактировал 5 декабря 2016 в 10:08
ответ дан 15 дек ’16 в 16: 03
  • 1
    при запуске команды sed я получаю: «sed: invalid option — ‘I'», я думаю, это должно быть ‘i’ — BiAiB 25 февраля ’20 в 15:04
добавить комментарий |

Да, это возможно. Как ранее отмечалось несколькими пользователями, кажется, что существует проблема с чтением правильной метки порядка байтов в Excel, когда файл закодирован в UTF-8. С UTF-16 проблем нет, поэтому он присущ UTF-8. Решение, которое я использую для этого, — это добавление спецификации TWICE. Для этого я дважды выполняю следующую команду sed:

  sed -I '1s/^/ xef  xbb  xbf/' * .csv  

, где подстановочный знак можно заменить любым именем файла. Однако это приводит к изменению sep = в начале файла .csv. После этого файл .csv откроется в Excel в обычном режиме, но с дополнительной строкой с «sep =» в первой ячейке. «Sep =» также можно удалить в исходном .csv, но при открытии файла с помощью VBA следует указать разделитель:

  Workbooks.Open (name, Format  : = 6, Delimiter: = ";", Local: = True)  

Формат 6 — это формат .csv. Установите для Local значение true, если в файле есть даты. Если для Local не задано значение true, даты будут американизированы, что в некоторых случаях приведет к повреждению формата .csv.


3

Поистине потрясающий список ответов, но поскольку один довольно хороший все еще отсутствует, я упомяну его здесь: откройте файл csv с помощью листов Google и сохраните его обратно на свой локальный компьютер как файл Excel.

В отличие от Microsoft, Google удалось поддерживать файлы csv UTF-8, так что он просто открывает файл там. И экспорт в формат excel тоже работает. Таким образом, даже если это не может быть предпочтительным решением для всех, оно довольно надежно и количество кликов не так велико, как может показаться, особенно если вы все равно уже вошли в Google.

ответил 8 апр. ’17 в 19:26
добавить комментарий |

Поистине потрясающий список ответов, но, поскольку один довольно хороший все еще отсутствует, я упомяну его здесь: откройте файл csv с таблицами Google и сохраните его обратно на локальный компьютер в виде файла Excel.

В отличие от Microsoft, Google удалось поддерживать файлы CSV UTF-8, поэтому он просто работает, чтобы открыть файл там. И экспорт в формат excel тоже работает. Таким образом, даже если это не может быть предпочтительным решением для всех, оно довольно надежно и количество кликов не так велико, как может показаться, особенно если вы все равно уже вошли в Google.


2

Это мое рабочее решение:

  vbFILEOPEN = "your_utf8_file.csv" Workbooks.OpenText Имя файла: = vbFILEOPEN, DataType: = xlDelimited, точка с запятой: = True, Local: = True, Origin: = 65001  

Ключ: Origin: = 65001

ответил 18 октября ’13 в 9:49
добавить комментарий |

Это мое рабочее решение:

  vbFILEOPEN = "your_utf8_file.csv" Рабочие книги  .OpenText Имя файла: = vbFILEOPEN, DataType: = xlDelimited, точка с запятой: = True, Local: = True, Origin: = 65001  

Ключ: Origin: = 65001


2

Да, это возможно. При записи потока, создающего csv, первое, что нужно сделать, это сделать следующее:

  myStream.Write (Encoding.UTF8.GetPreamble (), 0, Encoding.UTF8.GetPreamble (  ). Длина)  

ответ дан 28 фев. : 18
  • Вы не читали вопрос! Любомир Шайдарев писал: «Я также пытался указать UTF-8 BOM EF BB BF, но Excel это игнорирует». — Elmue, 25 ноя 2016, в 14:37
  • Это рабочий код. Если вы выпишете файлы UTF-8 из приложений .Net с этим лидом, Excel распознает файл как UTF8. — zax 28 нояб., В 16:29
  • Может в ВАШЕМ Excel работает. Но, по крайней мере, в Excel 2007 BOM полностью игнорируется. Поэтому, если вы собираетесь написать код, работающий во всех версиях Excel, ваш код бесполезен. — Elmue 01 дек. ’16 в 13:26
добавить комментарий |

Да, возможно. При записи потока, создающего csv, первое, что нужно сделать, это сделать следующее:

  myStream.Write (Encoding.UTF8.GetPreamble (), 0, Encoding.UTF8.GetPreamble (  ). Длина)  

2

Это не совсем точный ответ на вопрос, но поскольку я наткнулся на это, и вышеупомянутые решения не работали для меня или имели требования, которые я не мог удовлетворить, вот еще один способ добавить спецификацию, когда у вас есть доступ к vim:

  vim -e -s + "установить бомбу | установить кодировку = utf-8 | wq" filename.csv  

ответил 01 ноября 2017 в 17:10
добавить комментарий |

Это не совсем ответ на вопрос, но поскольку я наткнулся на это, и вышеуказанные решения не работали для меня или имели требования, я не мог нет, вот еще один способ добавить спецификацию, когда у вас есть доступ к vim:

  vim -e -s + "set bomb | set encoding = utf-8 |  wq "filename.csv  

2

привет, я использую Ruby on Rails для генерации csv. В нашем приложении мы планируем перейти на многоязычный (I18n), и мы столкнулись с проблемой при просмотре содержимого I18n в CSV-файле windows excel.

Все нормально с Linux (Ubuntu) и Mac.

Мы определили, что для Windows Excel необходимо снова импортировать данные для просмотра фактических данных. Во время импорта мы получим больше возможностей для выбора набора символов.

Но это не может быть обучено каждому пользователю, поэтому решение, которое мы ищем, — это открывать просто двойным щелчком.

Затем мы определили способ отображения данных в открытом режиме и создавали их в windows excel с помощью aghuddleston gist. Добавлено по ссылке.

Пример содержимого I18n

В Mac и Linux

Шведский: Förnamn Английский: Имя

В Windows

Шведский: Förnamn Английский: Имя

  def user_information_report (report_file_path, user_id) user = User.find (user_id) I18n.locale = user.current_lang open_mode = "w +: UTF-16LE: UTF-8" bom  = " xEF  xBB  xBF" основной пользователь, open_mode, bom enddef headers headers = ["ID", "SDN ID", I18n.t ('sys_first_name'), I18n.t ('sys_last_name'), I18n.t  ('sys_dob'), I18n.t ('sys_gender'), I18n.t ('sys_email'), I18n.t ('sys_address'), I18n.t ('sys_city'), I18n.t ('sys_state')  , I18n.t ('sys_zip'), I18n.t ('sys_phone_number')] тенант тела enddef, open_mode, bom File.open (report_file_path, open_mode) do | f |  csv_file = CSV.generate (col_sep: " t") do | csv |  csv  

Важные вещи, на которые следует обратить внимание, это открытый режим и bom

open_mode = «w +: UTF-16LE: UTF-8»

bom = » xEF xBB xBF»

Перед записью CSV вставьте BOM

f.write bom

f.write (csv_file)

Windows и Mac

Файл можно открыть напрямую двойным щелчком.

Linux (ubuntu)

При открытии файла запросите параметры разделителя -> выберите «TAB»

и было 15 августа 2018, 12:27
комментировать |

Привет, я использую Ruby on Rails для генерации csv. В нашем приложении мы планируем перейти на многоязычный (I18n), и мы столкнулись с проблемой при просмотре содержимого I18n в CSV-файле windows excel.

Все нормально с Linux (Ubuntu) и Mac.

Мы определили, что windows excel необходимо снова импортировать данные для просмотра фактических данных.. Во время импорта у нас будет больше возможностей для выбора набора символов.

Но это не может быть обучено каждому пользователю, поэтому решение, которое мы ищем, — открывать просто двойным щелчком.

Затем мы определили способ отображения данных в открытом режиме и создавали их в windows excel с помощью aghuddleston gist. Добавлено по ссылке.

Пример содержимого I18n

В Mac и Linux

Шведский: Förnamn Английский: Имя

В Windows

Шведский: Förnamn Английский: Имя

  def user_information_report (report_file_path, user_id) user = User.find (user_id) I18n.locale = user.current_lang open_mode = "w +: UTF-16LE: UTF-8" bom  = " xEF  xBB  xBF" основной пользователь, open_mode, bom enddef headers headers = ["ID", "SDN ID", I18n.t ('sys_first_name'), I18n.t ('sys_last_name'), I18n.t  ('sys_dob'), I18n.t ('sys_gender'), I18n.t ('sys_email'), I18n.t ('sys_address'), I18n.t ('sys_city'), I18n.t ('sys_state')  , I18n.t ('sys_zip'), I18n.t ('sys_phone_number')] тенант тела enddef, open_mode, bom File.open (report_file_path, open_mode) do | f |  csv_file = CSV.generate (col_sep: " t") do | csv |  csv  

Важные вещи, на которые следует обратить внимание, это открытый режим и bom

open_mode = «w +: UTF-16LE: UTF-8»

bom = » xEF xBB xBF»

Перед записью CSV вставьте BOM

f.write bom

f.write (csv_file)

Windows и Mac

Файл можно открыть напрямую двойным щелчком.

Linux (ubuntu)

При открытии файла запросите параметры разделителя -> выберите «TAB»


1
  1. Загрузите и установите LibreOffice Calc.
  2. Откройте нужный CSV-файл в LibreOffice Calc.
  3. Слава богу, что показывает мастер импорта текста вверх …
  4. … выберите параметры разделителя и кодировки символов.
  5. Выберите полученные данные в Calc и скопируйте их в Excel
ответил 6 ноября ’17 в 2:40
добавить комментарий |

  1. Загрузите и установите LibreOffice Calc.
  2. Откройте любой CSV-файл в LibreOffice Calc
  3. Слава богу, что появился мастер импорта текста …
  4. … выберите параметры разделителя и кодировки символов
  5. Выберите полученные данные в Calc и скопируйте их в Excel

1

Несколько дней назад я столкнулся с той же проблемой и не смог найти никакого решения, потому что я не могу использовать функцию import из csv , потому что она заставляет все стилизовать как строку.

Мое решение заключалось в том, чтобы сначала открыть файл с помощью notpad ++ и изменить кодировку на ASCII . Затем просто открыли файл в Excel, и он работал, как ожидалось .

ответил июль 24 ’19, 18:37
добавить комментарий |

Несколько дней назад я столкнулся с той же проблемой и не смог найти никакого решения, потому что не могу использовать импорт из csv , потому что он заставляет все оформлять как строку.

Мое решение заключалось в том, чтобы сначала открыть файл с помощью notpad ++ и изменить кодировку на ASCII .Затем просто открыли файл в Excel, и он работал, как ожидалось.


1

В php вы просто добавляете $ bom к своей $ csv_string:

  $ bom = sprintf ("% c% c% c", 239, 187  , 191); //EF BB BFfile_put_contents ($ file_name, $ bom. $ Csv_string);  

Протестировано с MS Excel 2016, php 7.2.4

ответил 25 дек. ’19 в 11:57
добавить комментарий |

В php вы просто добавляете $ bom к $ csv_string:

  $ bom  = sprintf ("% c% c% c", 239, 187, 191); //EF BB BFfile_put_contents ($ file_name, $ bom. $ Csv_string);  

Протестировано в MS Excel 2016, php 7.2. 4


0

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

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

Примените кодировку UTF-8 при создании StreamWriter. Вот и все.

Пример:

  с использованием (StreamWriter output = new StreamWriter (outputFileName, false, Encoding.UTF8, 2  

ответил 25 марта ’13 в 13:41
  • @elmue не хотите немного уточнить? Наверняка вывод CSV с использованием правильной кодировки для начала гарантирует отсутствие проблем совместимости с Excel в дальнейшем в рабочем процессе? — Рекс, 10 августа 2016, 10:58
  • Код неверен, потому что вам не нужен output.Close (), если у вас есть оператор using (). Кроме того, импорт CSV в Excel очень примитивен. Я бы вообще не стал его использовать. Если вы хотите импортировать в Excel, используйте вместо этого таблицу HTML и откройте ее в Excel. — Elmue 17 августа ’16, в 2:38
  • Спасибо за разъяснение @Elmue — к сожалению, я столкнулся с рядом сценариев (включая файлы на сетевых дисках), где также явно требуется закрытие как распоряжение. Не нашел причины, почему, как мне кажется, я видел вызов Close () в стеке Dispose , но вот и все. Вы также ошиблись в своем заявлении о примитивности импорта CSV, поскольку он не требует неэффективного HTML-подхода, который вы предложили. Фактически создание дополнительных программных шагов для получения текстовых данных, преобразования в HTML , а затем извлечения в Excel кажется интуитивно противоречивым, — Рекс, 23 ноя 2016, в 9:55
  • продолжение … Однако разные сценарии предъявляют разные требования, и мой пример правильно показывает, как указать кодировку в соответствии с запросом OP — Рекс, 23 ноября 2016 г., 9:58
  • Пожалуйста, прочтите исходный вопрос еще раз: «Я также попытался указать UTF-8 BOM EF BB BF, но Excel это игнорирует «. Я протестировал то же самое и пришел к тому же результату: Excel НЕ распознает спецификацию UTf8. Попытайся! Напишите файл CSV и поместите в него греческие или русские символы. Затем откройте это в Excel, и вы получите мусор. Так что ваш ответ ничего не решает. — Elmue 25 нояб., 16:42
| показать 6 дополнительных комментариев

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

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

Примените кодировку UTF-8 при создании StreamWriter. Вот и все.

Пример:

  с использованием (StreamWriter output = new StreamWriter (outputFileName, false, Encoding.UTF8, 2  

0

Если вы хотите сделать его полностью автоматическим, одним щелчком мыши или автоматически загружать в Excel, скажем, с веб-страницы, но не можете создать правильные файлы Excel , то я бы предложил в качестве альтернативы посмотреть на формат SYLK. Хорошо, это не так просто, как CSV, но он основан на тексте, его очень легко реализовать, и он поддерживает UTF-8 без проблем.

Я написал класс PHP, который получает данные и выводит файл SYLK, который открывается непосредственно в Excel, просто щелкнув файл (или автоматически запускает Excel, если вы записываете файл на веб-страницу. с правильным типом mime. Вы даже можете добавить форматирование (например, полужирный шрифт, форматировать числа определенным образом и т. д.) и изменить размеры столбцов или автоматический размер столбцов для текста в столбцах, и в целом код, вероятно, не превышает примерно 100 строк.

Совершенно легко перепроектировать SYLK, создав простую электронную таблицу и сохранив ее как SYLK, а затем прочитав ее в текстовом редакторе. Первый блок — это заголовки и стандартные числовые форматы, которые вы узнаете (которые вы просто извергаете в каждом создаваемом вами файле), тогда данные представляют собой просто координату X/Y и значение.

ответил 10 мая ’16 в 10:16
добавить комментарий |

Если вы хотите сделать его полностью автоматическим, одним щелчком мыши или автоматически загружать в Excel, скажем, с веб-страницы, но не можете генерировать правильные файлы Excel, тогда я бы посоветовал взглянуть на формат SYLK в качестве альтернативы. Хорошо, это не так просто, как CSV, но он основан на тексте и очень прост в реализации, и он поддерживает UTF-8 без проблем.

Я написал класс PHP, который получает данные и выводит файл SYLK, который открывается непосредственно в Excel, просто щелкнув файл (или автоматически запускает Excel, если вы записываете файл на веб-страницу. с правильным типом mime. Вы даже можете добавить форматирование (например, полужирный шрифт, форматировать числа определенным образом и т. д.) и изменить размеры столбцов или автоматический размер столбцов для текста в столбцах, и в целом код, вероятно, не превышает примерно 100 строк.

Совершенно легко перепроектировать SYLK, создав простую электронную таблицу и сохранив ее как SYLK, а затем прочитав ее в текстовом редакторе. Первый блок — это заголовки и стандартные числовые форматы, которые вы узнаете (которые вы просто извергаете в каждом создаваемом вами файле), тогда данные представляют собой просто координату X/Y и значение.


0

Я генерирую файлы csv из простого приложения C # и имел ту же проблему м. Мое решение заключалось в том, чтобы убедиться, что файл записан в кодировке UTF8, например:

 //Используйте кодировку UTF8, чтобы в Excel все было нормально с акцентами и т. Д. Using (StreamWriter writer =  new StreamWriter (path, false, Encoding.UTF8)) {SaveCSV (writer);}  

Изначально у меня был следующий код, с которым акценты отлично смотрятся в Notepad ++, но искажаются в Excel:

  using (StreamWriter writer = new StreamWriter (path)) {SaveCSV (writer);}  

Ваш пробег может отличаться — я использую .NET 4 и Excel из Office 365.

ответил 14 авг. в 21:21
добавить комментарий |

Я генерирую файлы csv из простого приложения C # и столкнулся с той же проблемой. Мое решение заключалось в том, чтобы убедиться, что файл записан в кодировке UTF8, например:

 //Используйте кодировку UTF8, чтобы в Excel все было нормально с акцентами и т. Д. Using (StreamWriter writer =  new StreamWriter (path, false, Encoding.UTF8)) {SaveCSV (writer);}  

Изначально у меня был следующий код, с которым акценты отлично смотрятся в Notepad ++, но искажаются в Excel:

  using (StreamWriter writer = new StreamWriter (path)) {SaveCSV (writer);}  

Ваш пробег может отличаться — я использую .NET 4 и Excel из Office 365.


0

Рабочее решение для Office 365

  • сохранить в UTF-16 (без LE, BE)
  • использовать разделитель t

Код в PHP

   $ header = ['číslo', 'vytvořeno', 'ěščřžýáíé']; $ fileName = 'excel365. csv '; $ fp = fopen ($ fileName,' w '); fputcsv ($ fp, $ header, " t"); fclose ($ fp); $ handle = fopen ($ fileName, "r"); $  content = fread ($ handle, Размер файла ($ fileName)); $ contents = iconv ('UTF-8', 'UTF-16', $ contents); fclose ($ handle); $ handle = fopen ($ fileName, "  w "); fwrite ($ handle, $ contents); fclose ($ handle);  

ответил 23 апр. ’20 в 6:06
добавить комментарий |

Рабочее решение для Office 365

  • сохранить в UTF- 16 (без LE, BE)
  • использовать разделитель t

Код в PHP

  $ header = ['číslo', 'vytvořeno', 'ěščřžýáíé']; $ fileName = 'excel365.csv'; $ fp = fopen ($ fileName, 'w'  ); fputcsv ($ fp, $ header, " t"); fclose ($ fp); $ handle = fopen ($ fileName, "r"); $ contents = fread ($ handle, sizes ($ fileName));  $ contents = iconv ('UTF-8', 'UTF-16', $ contents); fclose ($ handle); $ handle = fopen ($ fileName, "w"); fwrite ($ handle, $ contents); fclose  ($ handle);  

-1

Сначала сохраните электронную таблицу Excel как текст Unicode. Откройте файл TXT с помощью Internet Explorer и нажмите «Сохранить как» Кодировка TXT — выберите соответствующую кодировку, например, для Win Cyrillic 1251

ответил 06 декабря 2011 в 20:59
добавить комментарий |

Сначала сохраните электронную таблицу Excel как текст Unicode. Откройте файл TXT с помощью Internet Explorer и нажмите «Сохранить как». Кодировка TXT — выберите соответствующую кодировку, например, для Win Cyrillic 1251


-1

Я перепробовал все, что смог найти в этой теме и тому подобном, ничего не работало полностью. Однако импорт в таблицы Google и простая загрузка в формате csv работали как шарм. Попробуйте, если вы дошли до моего разочарования.

ответил дек. 20 ’18 в 20:06
добавить комментарий |

Я пробовал все, что мог найти в этой теме и тому подобном, ничего не работало полностью. Однако импорт в таблицы Google и простая загрузка в формате csv работали как шарм. Попробуйте, если вы дошли до моего разочарования.



excel: экспорт CSV-файла с японскими символами

В моем excel файл, японский символ отображается правильно,
, а когда я экспортирую его как csv,
символ становится вопросительным знаком
Как мне выводить, чтобы символ мог отображаться правильно?


Вам необходимо сохранить электронную таблицу Excel как текстовый файл Unicode, а затем открыть текстовый файл в Блокноте и заменить все символы табуляции запятой.

  1. В Excel нажмите кнопку Office в верхнем левом углу, а затем нажмите Сохранить как …

  2. Выберите имя файла и выберите Unicode Text в раскрывающемся списке Сохранить как тип .

  3. Откройте файл, который вы только что сохранили в Блокноте

  4. В меню Правка выберите Заменить … (или нажмите Ctrl + H )

  5. В Найдите что: вставьте символ табуляции.

  6. В поле Заменить на: введите запятую.

  7. Нажмите Заменить все и затем сохраните текстовый файл.


1

Дело в том, что вам нужно сохранить файл как UTF-8, а НЕ как ASCII

  • (1) Откройте файл Excel с информацией (.xls, .xlsx).
  • ( 2) В Excel выберите «CSV (с разделителями-запятыми) (* .csv) в качестве типа файла и сохраните как этот тип.
  • (3) В NOTEPAD (находится в разделе« Программы », а затем в разделе« Стандартные »). в меню «Пуск»), откройте сохраненный файл .csv в Блокноте.
  • (4) Затем выберите -> Сохранить как … и в нижней части поля «Сохранить как» есть поле выбора помечены как «Кодировка». Выберите UTF-8 (НЕ используйте ANSI, иначе вы потеряете все акценты и т. Д.). После выбора UTF-8 сохраните файл с именем, которое немного отличается от исходного.

Улучшите этот ответ
ответил 29 января 2015, 18:29
добавить комментарий |

Дело в том, что вам нужно сохранить файл как UTF-8, а НЕ как ASCII . Попробуйте это:

  • (1) Откройте файл Excel, в котором есть информация (.xls, .xlsx).
  • (2) В Excel , выберите «CSV (с разделителями-запятыми) (* .csv)» в качестве типа файла и сохраните как этот тип..
  • (3) В NOTEPAD (находится в разделе «Программы», а затем в меню «Стандартные» в меню «Пуск») откройте сохраненный файл .csv в Блокноте.
  • (4) Затем выберите -> Сохранить как .. и внизу поля «Сохранить как» есть поле выбора, помеченное как «Кодировка». Выберите UTF-8 (НЕ используйте ANSI, иначе вы потеряете все акценты и т. Д.). После выбора UTF-8 сохраните файл с именем, которое немного отличается от исходного.

1
  1. Загрузите и установите надстройку Unicode CSV для Excel.
  2. Сохранить csv из нового меню «Unicode CSV», как показано на рисунке ниже.

Улучшить этот ответ
отредактировал 12 июня ’19 в 20:34
ответил 6 мая ’16 в 8:58
добавить комментарий |

  1. Загрузите и установите надстройку Unicode CSV для Excel.
  2. Сохраните CSV из нового меню «Unicode CSV», как показано на рисунке ниже.

Оцените статью
logicle.ru
Добавить комментарий