2017-10-02 12 views
-1

私は、sp_send_dbmailストアドプロシージャを使用してOutlookに電子メールで送信されるHTMLテーブルにSQLサーバークエリ出力を書式設定しています。問題は、 "table style =" table-layout:fixed "と" td width = "xx" "プロパティは無視され、列幅はヘッダータイトルではなく最初の行にあるデータの内容によって異なります。 。以下のHTML出力のSQLサーバー結果内電子メールSQLサーバーHTMLテーブルの固定列幅が必要

Column Widths for Person 1's Data

Column Widths for Person's 2 Data

印刷する@ body_with_data2::次の出力は、(最も容易に目に見える柱4で)この歪みを示し

わずかに変化しない関連するOutlookの電子メールの送信元のHTMLコードを表示する
<div style="color:Black; font-size:11pt; font-family:Calibri; width:100px;"> 
    <html> 
    <head> 
    <style> 
     td { 
     border: solid black 1px; 
     padding-left: 5px; 
     padding-right: 5px; 
     padding-top: 1px; 
     padding-bottom: 1px; 
     font-size: 11pt; 
     } 

    </style> 
    </head> 

    <body> 
    <div style="margin-top:20px; margin-left:5px; margin-bottom:15px; font-weight:bold; font-size:1.3em; font-family:calibri;">Title Person Name 2</div> 
    <div style="margin-left:5px; font-family:Calibri;"> 
     <table style="table-layout:fixed;" width="100%" cellpadding=0 cellspacing=0 border=0> 
     <tr bgcolor=#4b6c9e> 
      <td width="60" align=center><font face="calibri" color=White><b>Column 1 Header Name</b></font></td> 
      <td width="120" align=center><font face="calibri" color=White><b>Column 2 Header Name</b></font></td> 
      <td width="120" align=center><font face="calibri" color=White><b>Column 3 Header Name</b></font></td> 
      <td width="375" align=center><font face="calibri" color=White><b>Column 4 Header Name</b></font></td> 
      <td width="175" align=center><font face="calibri" color=White><b>Column 5 Header Name</b></font></td> 
      <td width="175" align=center><font face="calibri" color=White><b>Column 6 Header Name</b></font></td> 
      <td width="175" align=center><font face="calibri" color=White><b>Column 7 Header Name</b></font></td> 
     </tr> 
     <tr bgcolor=#EEEEF4> 
      <td align=center><font face="calibri"><a href="http://linktoIDs.com/7604/">7604</a></font></td> 
      <td align=center><font face="calibri">Test Person 1</font></td> 
      <td align=center><font face="calibri">01/01/2017</font></td> 
      <td align=center><font face="calibri">Test Description Test Description Test Description</font></td> 
      <td align=center><font face="calibri"></font></td> 
      <td align=center><font face="calibri">Test Description 2</font></td> 
      <td align=center><font face="calibri">Test Description 3</font></td> 
     </tr> 
     </table> 
    </div> 
    </body> 

    </html> 
</div> 

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"><div style="color:Black; font-size:11pt; font-family:Calibri; width:100px;"><html><head><style>td {border: solid black 1px;padding-left:5px;padding-right:5px;padding-top:1px;padding-bottom:1px;font-size:11pt;} </style></head><body><div style="margin-top:20px; margin-left:5px; margin-bottom:15px; font-weight:bold; font-size:1.3em; font-family:calibri;">Title Person Name 2</div><div style="margin-left:5px; font-family:Calibri;"><table style="table-layout:fixed;" width="100%" cellpadding="0" cellspacing="0" border="0"><tr bgcolor="#4b6c9e"><td width="60" align="center"><font face="calibri" color="White"><b>Column 1 Header Name</b></font></td><td width="120" align="center"><font face="calibri" color="White"><b>Column 2 Header Name</b></font></td><td width="120" align="center"><font face="calibri" color="White"><b>Column 3 Header Name</b></font></td><td width="375" align="center"><font face="calibri" color="White"><b>Column 4 Header Name</b></font></td><td width="175" align="center"><font face="calibri" color="White"><b>Column 5 Header Name</b></font></td><td width="175" align="center"><font face="calibri" color="White"><b>Column 6 Header Name</b></font></td><td width="175" align="center"><font face="calibri" color="White"><b>Column 7 Header Name</b></font></td></tr><tr bgcolor="#EEEEF4"><td align="center"><font face="calibri"><a href="http://linktoIDs.com/7604/">7604</a></font></td><td align="center"><font face="calibri">Test Person 1</font></td><td align="center"><font face="calibri">01/01/2017</font></td><td align="center"><font face="calibri">Test Description Test Description Test Description</font></td><td align="center"><font face="calibri"></font></td><td align="center"><font face="calibri">Test Description 2</font></td><td align="center"><font face="calibri">Test Description 3</font></td></tr></table></div></body></html></div> 

削除幅= "100%" の問題を解決していません。関連するHTML出力は以下lsitedさ:事前に定義されたサイズに列幅を設定する方法についての

<div style="color:Black; font-size:11pt; font-family:Calibri; width:100px;"><html><head><style> 
td { 
border: solid black 1px; 
padding-left:5px; 
padding-right:5px; 
padding-top:1px; 
padding-bottom:1px; 
font-size:11pt; 
} 
</style></head><body> 
<div style="margin-top:20px; margin-left:5px; margin-bottom:15px; font-weight:bold; font-size:1.3em; font-family:calibri;">Title Person Name 2</div> 
<div style="margin-left:5px; font-family:Calibri;"> 
    <table style="table-layout:fixed;" cellpadding=0 cellspacing=0 border=0> 
    <tr bgcolor=#4b6c9e> 
     <td width="60" align=center><font face="calibri" color=White><b>Column 1 Header Name</b></font></td> 
     <td width="120" align=center><font face="calibri" color=White><b>Column 2 Header Name</b></font></td> 
     <td width="120" align=center><font face="calibri" color=White><b>Column 3 Header Name</b></font></td> 
     <td width="375" align=center><font face="calibri" color=White><b>Column 4 Header Name</b></font></td> 
     <td width="175" align=center><font face="calibri" color=White><b>Column 5 Header Name</b></font></td> 
     <td width="175" align=center><font face="calibri" color=White><b>Column 6 Header Name</b></font></td> 
     <td width="175" align=center><font face="calibri" color=White><b>Column 7 Header Name</b></font></td> 

     </tr> 
     <tr bgcolor=#EEEEF4> 
     <td align=center><font face="calibri"><a href="http://linktoIDs.com/7604/">7604</a></font></td> 
     <td align=center><font face="calibri">Test Person 1</font></td> 
     <td align=center><font face="calibri">01/01/2017</font></td> 
     <td align=center><font face="calibri">Test Description</font></td> 
     <td align=center><font face="calibri"></font></td> 
     <td align=center><font face="calibri">Test Description 2</font></td> 
     <td align=center><font face="calibri">Test Description 3</font></td> 

     </tr> 
    </table> 
</div> 

何かアドバイスははるかに高く評価されるだろう。クエリの関連部分が下にコピーされます。

IF(EXISTS(SELECT ID FROM #TEMP2)) 
      BEGIN 

       set @textTitle = 'Title'[email protected]_NAME 

       set @body_with_data2 = '<html><head><style>' + 
        'td {border: solid black 1px;padding-left:5px;padding-right:5px;padding-top:1px;padding-bottom:1px;font-size:11pt;} ' + 
        '</style></head><body>' + 
        '<div style="margin-top:20px; margin-left:5px; margin-bottom:15px; font-weight:bold; font-size:1.3em; font-family:calibri;">' + 
        @textTitle + '</div>' + 
        '<div style="margin-left:5px; font-family:Calibri;"><table style="table-layout:fixed;" width="100%" cellpadding=0 cellspacing=0 border=0>' + 
        '<tr bgcolor=#4b6c9e>' + 
        '<td width="60" align=center><font face="calibri" color=White><b>Column 1 Header Name</b></font></td>' +  
        '<td width="120" align=center><font face="calibri" color=White><b>Column 2 Header Name</b></font></td>' +  
        '<td width="120" align=center><font face="calibri" color=White><b>Column 3 Header Name</b></font></td>' +  
        '<td width="375" align=center><font face="calibri" color=White><b>Column 4 Header Name</b></font></td>' +  
        '<td width="175" align=center><font face="calibri" color=White><b>Column 5 Header Name</b></font></td>' +  
        '<td width="175" align=center><font face="calibri" color=White><b>Column 6 Header Name</b></font></td>' +  
        '<td width="175" align=center><font face="calibri" color=White><b>Column 7 Header Name</b></font></td></tr>' 

       set @body='' 
       select @body = 
       (
        select ROW_NUMBER() over(order by [ID]) % 2 as TRRow, 
          td = CAST('<a href="' + 'http://linktoIDs.com/' + CAST([ID] AS varchar(10)) + '/">'+CAST([ID] AS varchar(10))+'</a>' AS XML), 
          td = [Col_2_Data],  
          td = [Col_3_Data],  
          td = [Col_4_Data],  
          td = [Col_5_Data],  
          td = [Col_6_Data],  
          td = [Col_7_Data]  
        FROM #TEMP2 
        ORDER BY [ID] DESC 

        for XML raw('tr'), elements 
       ) 

       set @body = REPLACE(@body, '<td>', '<td align=center><font face="calibri">') 
       set @body = REPLACE(@body, '</td>', '</font></td>') 
       set @body = REPLACE(@body, '_x0020_', space(1)) 
       set @body = Replace(@body, '_x003D_', '=') 
       set @body = Replace(@body, '<tr><TRRow>0</TRRow>', '<tr bgcolor=#F8F8FD>') 
       set @body = Replace(@body, '<tr><TRRow>1</TRRow>', '<tr bgcolor=#EEEEF4>') 
       set @body = Replace(@body, '<TRRow>0</TRRow>', '') 

       set @body_with_data2 = @body_with_data2 + @body + '</table></div></body></html>' 

       set @body_with_data2 = '<div style="color:Black; font-size:11pt; font-family:Calibri; width:100px;">' + @body_with_data2 + '</div>' 

      END 
+1

あなたは、出力HTMLの例を提供することができれば、それは、応答のためのおかげで役立つ –

+0

ジョン・Pだろう!上記の更新された質問の画像を参照してください。列1のリンクを除いて、ヘッダー名以下の行データはすべてテキストで構成されます。 – SQLDev

+0

HTML **コード**は我々が後にしているものです。画像が参考になります、HTMLはもっとそうです。 –

答えて

0

電子メール本文のtdスタイルの幅、最大幅および最小幅を使用できます。一般に

<td style="width:100px;max-width:100px;min-width:100px">&nbsp;</td> 

、最大幅オーバーライドは、幅が、最小幅は、最大幅を上書き。 MDNドキュメントから

+0

ありがとうAmit。最大/最小tdスタイルの幅を適用しようとしましたが、問題が解決されませんでした。参考までに、 "   SQLDev

0

table-layout

表および列幅はtablecol要素の幅により、または細胞の最初の行の幅によって設定されます。後続の行のセルは列幅に影響しません。

強調鉱山。

テーブルの幅が100%であるため、テーブルは使用可能な領域を埋めるように拡張されます。これは、の固定列幅を持つことはできません。 width="100%"を削除すると問題はありません。

以下の例を参照して、ポイントを強調するために表を切り捨てました。

td { 
 
     border: solid black 1px; 
 
     padding-left: 5px; 
 
     padding-right: 5px; 
 
     padding-top: 1px; 
 
     padding-bottom: 1px; 
 
     font-size: 11pt; 
 
     }
<h2>Width 100%</h2> 
 
    <div style="margin-top:20px; margin-left:5px; margin-bottom:15px; font-weight:bold; font-size:1.3em; font-family:calibri;">Title Person Name 2</div> 
 
    <div style="margin-left:5px; font-family:Calibri;"> 
 
     <table style="table-layout:fixed;" width="100%" cellpadding=0 cellspacing=0 border=0> 
 
     <tr bgcolor=#4b6c9e> 
 
      <td width="60" align=center><font face="calibri" color=White><b>Column 1 Header Name</b></font></td> 
 
      <td width="120" align=center><font face="calibri" color=White><b>Column 2 Header Name</b></font></td> 
 
      <td width="120" align=center><font face="calibri" color=White><b>Column 3 Header Name</b></font></td> 
 
      <td width="375" align=center><font face="calibri" color=White><b>Column 4 Header Name</b></font></td> 
 

 
     </tr> 
 
     <tr bgcolor=#EEEEF4> 
 
      <td align=center><font face="calibri"><a href="http://linktoIDs.com/7604/">7604</a></font></td> 
 
      <td align=center><font face="calibri">Test Person 1</font></td> 
 
      <td align=center><font face="calibri">01/01/2017</font></td> 
 
      <td align=center><font face="calibri">Test Description Test Description Test Description</font></td> 
 
      
 
     </tr> 
 
     </table> 
 
    </div> 
 

 
<h2>No Width</h2> 
 

 
<div style="margin-top:20px; margin-left:5px; margin-bottom:15px; font-weight:bold; font-size:1.3em; font-family:calibri;">Title Person Name 2</div> 
 
    <div style="margin-left:5px; font-family:Calibri;"> 
 
     <table style="table-layout:fixed;" cellpadding=0 cellspacing=0 border=0> 
 
     <tr bgcolor=#4b6c9e> 
 
      <td width="60" align=center><font face="calibri" color=White><b>Column 1 Header Name</b></font></td> 
 
      <td width="120" align=center><font face="calibri" color=White><b>Column 2 Header Name</b></font></td> 
 
      <td width="120" align=center><font face="calibri" color=White><b>Column 3 Header Name</b></font></td> 
 
      <td width="375" align=center><font face="calibri" color=White><b>Column 4 Header Name</b></font></td> 
 

 
     </tr> 
 
     <tr bgcolor=#EEEEF4> 
 
      <td align=center><font face="calibri"><a href="http://linktoIDs.com/7604/">7604</a></font></td> 
 
      <td align=center><font face="calibri">Test Person 1</font></td> 
 
      <td align=center><font face="calibri">01/01/2017</font></td> 
 
      <td align=center><font face="calibri">Test Description Test Description Test Description</font></td> 
 
      
 
     </tr> 
 
     </table> 
 
    </div>

+0

width = "100%"を削除してもこの問題は解決されませんでした。関連するHTML出力を含めるように質問を更新しました。他に何が試みられるかについての考えはありますか? – SQLDev

+0

ここであなたの出力を使用して:https://jsfiddle.net/6mmkhLpf/それはまだ期待どおりに動作するようです。注:この表では最初に使用可能な領域のみが使用されるため、ビューポートが1284ピクセル以上でないと、セルが幅に最もよく合うように拡大/縮小されます。テーブルをその幅に強制するには、常に1284pxのテーブルの幅を設定することができます。 'html'ノードをラップする最も外側のdivも削除してください –

+0

HTMLノードをラップするdivを削除し、jsfiddleの例でテーブルの幅を1284xに設定しました。これらの手順は、jsfiddleにHTML出力を入力するときに列幅を正規化しますが、残念ながら、Outookで表を表示しても問題は残ります。おそらく、これはOutlookの問題ですか?私は、HTMLノードをラップするdivは次のものだと思いますが、他に何かを削除するかどうかを教えてください: "body_with_data2 = '

' + body_with_data2 + '
'を設定してください。 – SQLDev

関連する問題