Проблемы с экспортом .xls в .csv

Я пытался импортировать этот файл excel в мою базу данных mysql, и это было грубо. В файле .xls около 7000 строк, но когда я экспортирую его в .csv и анализирую с помощью PHP, возникает одна из двух проблем:

  • Excel ничего не экранирует, т.е. запятые в каждой строке разделяют данные
  • Когда я меняю все запятые на *, то экспорт по какой-то причине excel меняет целую кучу строк на кучу знаков фунта #####.

(Есть ли причина, по которой это происходит?)

Я могу загрузить .xls куда-нибудь, если нужно.


person Tom    schedule 18.01.2010    source источник
comment
Какая это версия Экселя? Excel 2007 отлично обрабатывает запятые, заключая поле в кавычки, как и должно быть.   -  person ceejayoz    schedule 19.01.2010


Ответы (2)


В качестве предложения, если вы имеете дело с ячейками, которые делают содержат широко распространенные запятые, простым решением будет экспорт из Excel в формате с разделителями табуляцией (TXT) или даже в любом формате, который содержит символ, с которым вы обычно не сталкиваетесь.

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

person George Johnston    schedule 18.01.2010
comment
В CSV нет ничего плохого, а PHP (и MySQL тоже) анализирует CSV с помощью встроенных функций. - person ceejayoz; 19.01.2010
comment
Я никогда не говорил, что с CSV что-то не так — видите, где я сказал, что с CSV что-то не так? - person George Johnston; 19.01.2010
comment
Я знаю об этих параметрах, но csv просто упрощает задачу (и в php для этого есть все необходимое). - person Tom; 19.01.2010

Догадаться!

Оказывается, это была ошибка Excel. Я проверил .xls, прежде чем открывать его в Excel, а не ###. Но после сохранения в Excel они появились.

Поэтому я открыл его в Numbers (часть iWork), изменил все , на * и все кавычки на % (они никогда не появлялись ни в одной строке. Экспортировал их в .csv, а затем вернул их обратно при импорте с помощью PHP.

Работал отлично. :-)

person Tom    schedule 18.01.2010