Что лучший способ состоит в том, чтобы экспортировать данные UTF8 в Excel?

Я бы рекомендовал использовать PDO (объекты данных PHP) для запуска параметризованных SQL-запросов.

Это не только защищает от SQL-инъекции, но и ускоряет выполнение запросов.

И используя функции PDO, а не mysql_, mysqli_ и pgsql_, вы делаете свое приложение немного более абстрактным из базы данных, в редких случаях, когда вам нужно переключать поставщиков баз данных .

27
задан Billy Gray 22 October 2010 в 14:44
поделиться

7 ответов

Вы забываете создавать источник данных OleDB и Excel Interop, но существуют проблемы с теми также.

я рекомендую опция SpreadsheetML. Это работает вполне прилично, разногласия являются Вашей платформой, имеет некоторые достойные инструменты для создания xml файлы, и это еще полностью поддерживается OfficeXP. Office2000 не поддерживается, но личный опыт - то, что он работает ограниченным способом.

5
ответ дан Joel Coehoorn 28 November 2019 в 05:51
поделиться

Если Вы создадите XML с кодированием utf и сохраните его как .xls, то оно откроет даже те двухбайтовые символы:

xml версия = "1.0" кодирование = "utf-8"

1
ответ дан Rulas 28 November 2019 в 05:51
поделиться

У меня была та же самая проблема отправки данных UTF8 к Excel. Мое решение:

текущая версия электронной таблицы Perl:: код WriteExcel cpan правильно пишет файлы Excel с помощью данных UTF8.

, Таким образом, я записал плагин направляющих, что a) открывает двухсторонний канал для программы жемчуга, b) отправляет данные, строка за один раз, к программе жемчуга. Я использую Yaml в качестве формата данных сообщения. (Стандартный Ruby yaml не является UTF8, существует доступная специальная версия, ya2yaml) c) программа жемчуга создает файл Excel d), Когда программа направляющих указывает (с помощью сообщения yaml), который была отправлена последняя строка, программа жемчуга создает файл Excel и передает состояние обратно программе направляющих.

, Конечно, добавляя программу жемчуга к проекту направляющих через параллельный процесс и канал находится очень в "Техническом" спектре, а не "Информатике". (Это сделало задание, но не изящно.), Но это действительно работает хорошо и сохранило меня недели, которые потребуется для портирования кода WriteExcel на Ruby. Также обратите внимание, что в настоящее время доступный порт Ruby WriteExcel не обрабатывает utf8.

Моим коротковолновым является разрешающий открытый исходный код, но я еще не нашел время для выпуска его. Если Вы хотите это в его текущем состоянии, см. http://sandbox.kluger.com/write_excel_v.5.tar

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

Hope это помогает,

Larry

1
ответ дан Larry K 28 November 2019 в 05:51
поделиться

Попробуйте OpenOffice Calc - он гораздо более дружелюбен к Unicode - как импорт, так и экспорт файлов CSV с кодировкой UTF-8.

-3
ответ дан 28 November 2019 в 05:51
поделиться

После борьбы с той же проблемой в течение нескольких часов я нашел этот отличный пост на эту тему

http://blog.plataformatec.com.br/2009/09/exporting-data- to-csv-and-alcel-in-your-rails-app / Цитата:

Итак, это три правила для Работа с Excel-Friendly-CSV:

  1. Используйте таблицы, а не запятыми.
  2. поля не должны содержать ньюнгинов.
  3. Используйте TOF-16 Little Endian, чтобы отправить файл пользователю. И включить А. Маленький эндин вручную вручную.

Однако, если вы используете Ruby, проблема решена проблема: Сначала у вас есть GEM GEM

, но я закончил использовать GEM-драгоценность, которая напрямую генерирует электронные таблицы (У меня есть ограничение ссылок, просто электронная таблица Google + RubyForge) Бриллиант!

7
ответ дан 28 November 2019 в 05:51
поделиться

Excel неправильно обрабатывает кодировку UTF-8. Вместо этого вы должны использовать кодовую страницу, которая соответствует вашим потребностям

Response.ContentType = "text/plain";
// codepage: 28591, codepage name:iso-8859-1, codepage display name: Western European (ISO)
Response.ContentEncoding = System.Text.Encoding.GetEncoding(28591);
-1
ответ дан 28 November 2019 в 05:51
поделиться

Я обнаружил, что если установить кодировку charset веб-страницы на utf-8, а затем Response.BinaryWrite записать метку порядка байтов UTF-8 (0xEF 0xBB 0xBF) в верхней части файла csv, то Excel 2007 (не уверен насчет других версий) распознает его как utf-8 и откроет его правильно.

9
ответ дан 28 November 2019 в 05:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: