Создать файл CSV из данных формы на лету, а затем по электронной почте на адрес - PullRequest
1 голос
/ 04 марта 2011

У меня есть форма, которую пользователи могут заполнить и хотят иметь возможность создать файл Excel и заполнить его данными из формы. Затем я хочу отправить мне файл с полными данными. Как это можно сделать?

В настоящее время генерируется электронное письмо:

    $body = "You have a new member account application from the website, please see the details below:

\n
Membership Type: $group1_field\n\n

Contact Details\n
Organisation: $member_organ_field\n
Address: $member_address_field\n
Postcode: $member_post_field\n
Tel: $member_tel_field\n
Fax: $member_fax_field\n
Email address: $member_email_field\n
Website: $member_website_field\n\n
Contacts \n
Member 1 \n
Name: $member1_name1_field\n
Position: $member1_position1_field\n
Direct Email: $member1_email1_field\n
Direct Tel: $member1_tel1_field\n\n
Member 2 \n
Name: $member1_name2_field\n
Position: $member1_position2_field\n
Direct Email: $member1_email2_field\n\n
Member 3 \n
Name: $member1_name3_field\n
Position: $member1_position3_field\n
Direct Email: $member1_email3_field\n\n
Type Of Organisation: ".$checkbox1results."\n
Type Of Activity: ".$checkbox2results."$member3_other_field\n\n
Summary Description \n
$member_summary_field \n\n
Company Information \n
Total no. of employees (Welsh site): $member4_total_field\n
Turnover (from Welsh site): $member4_turnover_field\n
Date of company formation: $member4__formation\n
Do you export aborad? Where? $member4_export_field\n\n
Member consent: ".$checkbox3results."\n\n
Completed by: $member4_com_field\n
Company position: $member4_com_pos_field\n
Invoice required: $CheckboxGroup4_field\n\n

Please follow up this request asap.\n\n
";

mail($to, $subject, $body);

echo "Thank you for your account application, we will contact you shortly.";

} ?>

Ответы [ 3 ]

9 голосов
/ 04 марта 2011

Самый простой способ - создать CSV-файл, доступный для чтения в Excel.

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

$string = '"Organisation","Address","Postcode"' . PHP_EOL;
$string .= "\"$member_organ_field\",\"$member_address_field\",\"$member_post_field\"" . PHP_EOL;

file_put_contents('myfile.csv', $string); // write file

Обязательно заключайте в кавычки имена и значения полей как пустые без кавычек, (запятая) испортит ваши столбцы.

В противном случае есть библиотека PEAR для записи в файлы Excel.

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

Или используя Swift Mailer , , см. Пример здесь

UPDATE

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

<?php

$random_hash = md5(date('r', time()));

$csvString = "..."; // your entire csv as a string
$attachment = chunk_split(base64_encode($csvString));

$to = "to@me.com";
$from = "from@you.com";
$subject = "my subject";
$body = "... what ever you want to appear in the body";

$headers = "From: $from\r\nReply-To: $from";
$headers .= "\r\nContent-Type: multipart/mixed; boundary=\"PHP-mixed-".$random_hash."\"";

$output = "
--PHP-mixed-$random_hash;
Content-Type: multipart/alternative; boundary='PHP-alt-$random_hash'
--PHP-alt-$random_hash
Content-Type: text/plain; charset='iso-8859-1'
Content-Transfer-Encoding: 7bit

$body

--PHP-mixed-$random_hash
Content-Type: text/csv; name=mycsv.csv
Content-Transfer-Encoding: base64
Content-Disposition: attachment

$attachment
--PHP-mixed-$random_hash--";

mail($to, $subject, $output, $headers);

echo "Thank you for your account application, we will contact you shortly.";

?>
1 голос
/ 04 марта 2011

Есть два варианта:

  1. Создать файл CSV из данных выше
  2. Создание электронной таблицы Excel из приведенных выше данных

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

Для каждого случая читайте здесь:

  1. http://www.dreamincode.net/forums/topic/10131-working-with-excel-files-comma-delimited-or-csv/
  2. http://phpexcel.codeplex.com/

Стоит также отметить, что если вы генерируете файл .xls, тогда ваш PHP должен будет работать в Windows с установленной копией Excel (я бы не советовал это делать, и если вы хотите использовать опцию Excel) тогда вы, возможно, захотите создать файлы .xlsx с помощью инструмента PHPExcel, с которым я вас связал; для этого не требуется установленная копия Excel, поэтому ее можно развернуть в Linux)

РЕДАКТИРОВАТЬ: Чтобы отправить файлы в виде вложений, вы можете использовать PHPMailer (пример того, как легко это можно найти здесь , и вы можете скачать класс здесь )

0 голосов
/ 04 марта 2011

Груша может быть полезна здесь. Я нашел: Spreadsheet_Excel_Writer . Основная документация и использование для этого здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...