2013-03-14 1 views
1

Это мой код для извлечения данных из таблицы базы данныхСоздание Excel из базы данных и отправки в виде вложения электронной почты

$sql = "select * from tbl_input_values where 1"; 
$result = mysql_query($sql); 
$resultRows = mysql_num_rows($result); 

Ниже является заголовком, который я использовал для загрузки файла в формате Excel:

header("Content-Type: application/vnd.ms-excel"); 
header("Content-Disposition: attachment; filename=test.xls"); 

header("Pragma: no-cache"); 
header("Expires: 0"); 

И мой код, чтобы извлечь запись выглядит следующим образом:

if($resultRows>0){ 
    $sep = "\t"; //tabbed character 
    for ($i = 0; $i < mysql_num_fields($result); $i++) { 
     echo mysql_field_name($result,$i) . "\t"; 
    } 
    print("\n"); 
    while($row = mysql_fetch_row($result)){ 
     $schema_insert = ""; 
     for($j=0; $j<mysql_num_fields($result);$j++){ 
      if(!isset($row[$j])) 
       $schema_insert .= "NULL".$sep; 
      elseif ($row[$j] != "") 
       $schema_insert .= "$row[$j]".$sep; 
      else 
       $schema_insert .= "".$sep; 
     } 
     $schema_insert = str_replace($sep."$", "", $schema_insert); 
     $schema_insert = preg_replace("/\r\n|\n\r|\n|\r/", " ", $schema_insert); 
     $schema_insert .= "\t"; 
     print(trim(str_replace(',', " ", $schema_insert))); 
     print "\n"; 
    } 
} 

Код работает нормально.

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

Итак, что было бы лучшим способом использования функциональности электронной почты?

+0

возможно дубликат [Экспорт данных в Exсel и сохранить непосредственно в директорию (папку)] (HTTP://stackoverflow.com/questions/8890300/data-export-to-excel-save-directly-to-the-directory-folder) – Rikesh

+0

ну а вместо печати вы пишете это в файле, а затем присоедините его как вложение – TigerTiger

ответ

0

Возможно это может помочь вам ....

if($resultRows>0){ 
$sep = "\t"; //tabbed character 
for ($i = 0; $i < mysql_num_fields($result); $i++) { 
    echo mysql_field_name($result,$i) . "\t"; 
} 
print("\n"); 
while($row = mysql_fetch_row($result)){ 
    $schema_insert = ""; 
    for($j=0; $j<mysql_num_fields($result);$j++){ 
     if(!isset($row[$j])) 
      $schema_insert .= "NULL".$sep; 
     elseif ($row[$j] != "") 
      $schema_insert .= "$row[$j]".$sep; 
     else 
      $schema_insert .= "".$sep; 
    } 
    $schema_insert = str_replace($sep."$", "", $schema_insert); 
    $schema_insert = preg_replace("/\r\n|\n\r|\n|\r/", " ", $schema_insert); 
    $schema_insert .= "\t"; 
    print(trim(str_replace(',', " ", $schema_insert))); 
    print "\n"; 
} 

file_put_contents('$path_to_excelfile', $schema_insert); 
    } 

$to = '[email protected]'; 

    $subject = 'Test email with attachment'; 

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

    $headers = "From: [email protected]\r\nReply-To: [email protected]"; 

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

    $attachment = chunk_split(base64_encode(file_get_contents('path to file'))); 

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

REF http://webcheatsheet.com/PHP/send_email_text_html_attachment.php

0
**Code to create excel in php:** 
$dtime=date('Y-m-d H-i-s'); 
$dtimeFile=date('Y-m-d-H-i-s'); 
$headerTab ="Col1 \t Col2\t Col3\n"; 
$rowRecords=''; 
$rowRecords .=preg_replace("/\r|\n|\t/"," ",$Col1)."\t".preg_replace("/\r|\n|\t/", " ",$Col2)."\t".preg_replace("/\r|\n|\t/", " ",Col3). "\t\n"; 
date_default_timezone_set('America/Los_Angeles'); 
$filename="Your File Name-".$dtimeFile.".xls"; 
$path='/pathOfFile/'; 
$csv_handler = fopen ($path.$filename,'w'); 
fwrite ($csv_handler,$headerTab); 
fwrite ($csv_handler,$rowRecords); 
fclose ($csv_handler); 

**Code to send html email with attached excel in php:** 
$file = $path.$filename; 
$file_size = filesize($file); 
$handle = fopen($file, "r"); 
$content = fread($handle, $file_size); 
fclose($handle); 
$content = chunk_split(base64_encode($content)); 
$uid = md5(uniqid(time())); 
$headers = "From: [email protected]"."\r\n"; 
$headers.= "Bcc: [email protected]"."\r\n"; 
$headers.= "MIME-Version: 1.0\r\n"; 
$headers.= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n"; 
$headers .= "This is a multi-part message in MIME format.\r\n"; 
$headers .= "--".$uid."\r\n"; 
$headers .= "Content-type:text/html; charset=iso-8859-1\r\n"; 
$headers .= "Content-Transfer-Encoding: 7bit\r\n\r\n"; 
$headers .= $msg."\r\n\r\n"; 
$headers .= "--".$uid."\r\n"; 
$headers .= "Content-Type: application/octet-stream; name=\"".$filename."\"\r\n"; 
$headers .= "Content-Transfer-Encoding: base64\r\n"; 
$headers .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n"; 
$headers .= $content."\r\n\r\n"; 
$headers .= "--".$uid."--"; 

$date=date("Y-m-d"); 
if(mail($to,"Mail heading--".$date,$msg,$headers)){ 
    echo "Mailed successfully"; 
} 
else 
{ 
    echo "Mailed couldn't be sent"; 
} 
Смежные вопросы