如何通过电子邮件发送 oracle 查询结果。我更喜欢以 excel 文件的形式附加到电子邮件中。

Posted

技术标签:

【中文标题】如何通过电子邮件发送 oracle 查询结果。我更喜欢以 excel 文件的形式附加到电子邮件中。【英文标题】:How can I send oracle query results by email. I would prefer attaching to email as excel file. 【发布时间】:2015-03-27 11:40:29 【问题描述】:

我需要使用 phpExcel 和 PhpMailer 通过电子邮件将此表作为 Excel 附件发送。该表是查询我的 oracle DB 的结果。我需要知道如何使用 PhpExcel 将此表写入 excel,然后使用 phpMailer 将其附加到电子邮件地址并最终发送。 提前致谢。

<?php

$username = "xxx";
$passwd = "yyy";
$db="(DESCRIPTION =
   (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 123.43.56.789)(PORT = 1234))

   )
   (CONNECT_DATA =

     (SERVICE_NAME = xxx)


   )
  )";

$c = OCILogon($username,$passwd,$db);
if (!$c)

    echo "Connection failed";


else

    echo "We are connected to KYC.Querying DB now...Please wait... ";


$s = oci_parse($c, "
select MSISDN SUBSCRIBER_NUMBER, OUTLET_NUMBER,time_stamp, Company,NAMES SUBSCRIBER_NAME,GENDER, DOB DATE_OF_BIRTH,Dealer_name Dealer_name,  Agent_name 
from subscribers  where time_stamp between trunc(sysdate)-1 And trunc(sysdate)-1/86400 order by time_stamp");

if (!$s) 
$e = oci_error($c);
trigger_error('Could not parse statement: '. $e['message'], E_USER_ERROR);

$r = oci_execute($s);
if (!$r) 
$e = oci_error($s);
trigger_error('Could not execute statement: '. $e['message'], E_USER_ERROR);
    


$html .= '<table  border="0" cellspacing="0" cellpadding="0">
 <tr>
 <th class="header" colspan="7"> KYC Details</th>
 <tr>

 <tr>
  <th>SUBSCRIBER_NUMBER</th>
  <th>OUTLET_NUMBER</th>
  <th>TIME_STAMP</th>
  <th>COMPANY</th>
  <th>SUBSCRIBER_NAME</th>
  <th>GENDER</th>
  <th>DATE_OF_BIRTH</th>
<tr>';


while($rows=oci_fetch_array($s, OCI_ASSOC+OCI_RETURN_NULLS))
        $sub = $rows['SUBSCRIBER_NUMBER'];
        $agt = $rows['OUTLET_NUMBER'];
        $tim = $rows['TIME_STAMP'];
        $com = $rows['COMPANY'];
        $nam = $rows['SUBSCRIBER_NAME'];
        $sex = $rows['GENDER'];
        $dob = $rows['DATE_OF_BIRTH'];

$html .= '<tr>
        <td>'.$sub.'</td>
        <td>'.$agt.'</td>
        <td>'.$tim.'</td>
        <td>'.$com.'</td>
        <td>'.$nam.'</td>
        <td>'.$sex.'</td>
        <td>'.$dob.'</td>';
$html .= '<tr>';

    
$html .='</table><hr>';

echo $html;

?>

【问题讨论】:

【参考方案1】:

我会忽略 HTML 内容,只需将其写为逗号分隔值文件,每条记录后有一个换行符,然后在 Excel 中打开它并将其另存为 XLSX。

【讨论】:

'$html' 只是我将表格添加到的变量。所以整个结果表都存储在变量中 您是否尝试过获取生成的文件并将其保存为“.xlsx”扩展名,然后在 Excel 中打开它? Excel 可以读取 HTML 格式的表格。

以上是关于如何通过电子邮件发送 oracle 查询结果。我更喜欢以 excel 文件的形式附加到电子邮件中。的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 SQL Server 通过电子邮件发送包含查询结果的 Excel 工作簿

Oracle如何发送邮件,且附上SQL的结果。

自动化 Toad Edge 查询以运行并通过电子邮件发送结果

Kettle发送邮箱并在正文中以表格形式展示内容[基础版]

通过shell导出数据库查询结果到excel中,并通过邮件发送到邮箱

使用 Python 和 Airflow 在电子邮件中发送 Redshift 查询结果