Генерация csv с типами полей

Тема в разделе "PHP", создана пользователем Inviseble_Demon, 8 дек 2012.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Inviseble_Demon

    Inviseble_Demon

    Регистр.:
    11 дек 2008
    Сообщения:
    482
    Симпатии:
    351
    Доброго времени суток.
    Возникла такая проблема: имее примерно такой csv

    id;login;balance;wmr
    11;TestKopy;76.96;R176094******
    13;Max;5.41;R556454******

    Офис 5.41 конечно же по своему понял эту запись
    [​IMG]

    Вот и возник вопрос как вообще с подобным работать ?
    Наткнулся на csvt но так и не понял явно как это работает и как это поможет мне.
    Неужели придется сначало файл типов давать потом сам csv ?
    Или не заморачиваться и переходить на работу с xls ?

    А ну как вариант точку на запятую заменить ))
    Тогда вроди норм но вопрос остается как вообще делать импорт в csv там все похерачится же o_O
     
  2. recasher2k12

    recasher2k12

    Регистр.:
    19 фев 2012
    Сообщения:
    156
    Симпатии:
    78
    По твоей задаче есть отличная либа:
    Перейти по ссылке
    Скачиваешь, и в папке test есть много примеров.
    И сразу дам ссылку на пример на сайте, чтобы было понятно, что в ней нет ничего сложного:
    Перейти по ссылке
     
    antiterror, Leony и Inviseble_Demon нравится это.
  3. асс

    асс

    Регистр.:
    13 окт 2006
    Сообщения:
    756
    Симпатии:
    221
    мож это покатит
    Запустите скрип и поглядите результат



    <?php
    //файл test.php
    $ft=fopen("WORDSTAT.CSV",'w+') or die ("Не возможно записать данные в файл!");
    fwrite($ft,"Имя;Адрес;квартира;Комнат\n");
    fclose($ft);
    $csv="Вася;Питер;кв3;4 комнаты\n";//

    //Write CVS
    $ft=fopen("WORDSTAT.CSV",'a+') or die ("Не возможно записать данные в файл!");
    fwrite($ft,"$csv");
    fclose($ft);
    ?>
     
  4. Inviseble_Demon

    Inviseble_Demon

    Регистр.:
    11 дек 2008
    Сообщения:
    482
    Симпатии:
    351
    асс
    Спасибо конечно но тема в том что бы у полей csv были типы полей... Записать в файл данные не проблема ))

    PS. Не пойму только зачем было открывать файл на запись 2 раза ? Либо я что то пропустил....
     
  5. асс

    асс

    Регистр.:
    13 окт 2006
    Сообщения:
    756
    Симпатии:
    221
    Ну просто первый создает файл если его нет, либо очищает если он есть , и добавляет названия полей.
    А второй заполняет их значениями.

    ПРо типи напишите пожалуйста, не могу понять, либо пример файла покажите.
     
  6. vitali1992

    vitali1992 Писатель

    Регистр.:
    20 дек 2012
    Сообщения:
    7
    Симпатии:
    0
    как напрямую в базу залить csv файл?

    подскажите в какую сторону двигаться...
     
  7. trooll

    trooll PHP кодер

    Регистр.:
    22 дек 2008
    Сообщения:
    503
    Симпатии:
    116
    Распарсиваеш CSV как необходимо (обычно банальным explode(), если csv без выпендрежей), дальше либо заливаеш в базу напримую налету, либо генерируеш sql dump для импорта.
     
  8. ShaDeRzz

    ShaDeRzz

    Регистр.:
    16 окт 2007
    Сообщения:
    176
    Симпатии:
    65
    Напрямую это вот так:
    Перейти по ссылке

    Пример:
    Код:
    LOAD DATA INFILE 'data.csv' INTO TABLE tbl_name
      FIELDS TERMINATED BY ',' ENCLOSED BY '"'
      LINES TERMINATED BY '\r\n'
      IGNORE 1 LINES;
    В примере - данные загружаются в таблицу tbl_name из файла data.csv
    Поля в файле должны быть разделены запятой и обёрнуты в двойные кавычки (вы можете указать любые другие параметры в соответствии с вашим файлом)
    Строки разделены переносом строки и каретки
    Первую строку при импорте пропускаем.

    Если у вас возникают глюки при открытии csv файла Офисом - часто офис каверкает числа, пытаясь их преобразовать в даты и т.п. — это из-за того, что вы не с той стороны подходите к работе с Microsoft Office

    CSV файлы в нём надо открывать так:
    Запускаем пустое окно Экселя
    Нажимаем там Данные -> Из текста -> Указываете свой csv файл. И далее появляется окно, где вы можете для каждого поля указать нужный тип данных. Только в этом случае импорт у вас будет правильным, корректным, и без ошибок.
     
    lp2gen и latteo нравится это.
  9. lp2gen

    lp2gen Писатель

    Регистр.:
    25 мар 2013
    Сообщения:
    1
    Симпатии:
    0
    Чтобы офис не пытался "самовольничать" и при этом не нужно было ручками указывать тип полей, проще при генерации csv каждое поле брать в кавычки, тогда для экселя это будет по умолчанию текстовое поле и оно будет открыто as-is.
     
  10. Zmeyonish

    Zmeyonish Создатель

    Регистр.:
    29 мар 2013
    Сообщения:
    11
    Симпатии:
    0
    2 Inviseble_Demon

    csv файл, насколько я понимаю, это просто текстовый файл с условными разделителями полей, данных о типе полей хранить не предполагается
     
Статус темы:
Закрыта.