2016-12-29 8 views
0

このsp_send_dbmailスクリプトは、私たちのプロセスの1つで動作します。これは、クエリが何であれ、Excelファイルを添付します。これは、ファイル名(.xls)の拡張のためにこれを行うことを知っています。Excelファイルを作成するとき、SQL Server 2014は先行ゼロをオフにします。 。 。しかし。

ただし、varchar(50)フィールドを数値フィールドに変更し、先頭のゼロを削除します。これは、私のプロセスではうまくいかない何百万もの方法で処理されている既知の迷惑です。以下の問題の

EXEC msdb.dbo.sp_send_dbmail 
    @profile_name = @profileName 
    ,@recipients = @emailRecipientList 
    ,@subject = @subject 
    ,@importance = @importance 
    ,@body = @emailMsg 
    ,@body_format = 'html' 
    ,@query = @QuerySQL 
    ,@execute_query_database = @QueryDB 
    ,@attach_query_result_as_file = 1 
    ,@query_attachment_filename = @QueryExcelFileName 
    ,@query_result_header = 1 
    ,@query_result_width = @QueryWidth 
    ,@query_result_separator = @QuerySep 
    ,@query_result_no_padding = 1 

例:この単純なクエリはExcelの番号にvarchar型からStringNumber列を変更し、ゼロを削除します。 Excelで後

View of table in SQL Server

(先行ゼロが欠落している):SQL Serverの(目的の形式)で

SELECT [RowID],[Verbage], StringNumber FROM [dbo].[tblTestStringNumber] 

Excel results with no leading zeroes

、方法があるかもしれません。私は

Right Click to Open in Excel

あなたが右の左上隅にクリックした場合、それは「Excelで開く」のオプションを提供します、なぜならSQL Serverの2016の結果ペインにこれ​​を言うと。 。 。 。ドラムロール 。 。 。データセットはExcelで開き、先頭のゼロはまだそこにあります!

enter image description here

+1

Excellセルが数字の場合は、先頭に0を付けることはできません。 –

+1

最初は数値に似ているものを数値に変更し、2番目はテキスト文字列としてインポートされます。これは列がsqlにあるものです。最初の問題を修正するには、違反している列を '000000'にフォーマットしてください。 –

+0

David:ありがとう、ありがとう。 SQl Serverにはvarcharがあり、Excelはnumberに0を返します。 – JustJohn

答えて

1

Excelでの単一引用符( ')で番号を開始した場合、それはそれを文字列として解釈されますので、一般的な解決策は、中1を追加するために、クエリを変更することです:

SELECT [RowID] 
    ,[Verbage] 
    , StringNumber = '''' + [StringNumber] 
FROM [dbo].[tblTestStringNumber] 

Excelは通常、一重引用符を表示しません。これは、文字列型にキャストする方法であることがわかっているためです。

+0

ラッセル:そこに行った。それは一重引用符を表示しませんが、とにかく先頭のゼロを削除します。 Concat( '' '' '' ''、[StringNumber])StringNumberとして、先行ゼロと単一ダニを示します。クライアントはそれを持つことができません。 – JustJohn

+0

これは粘着性のかっこです。私はまた、人々が正面にスペース文字を追加するのを見てきましたが、正面にスペース文字があります。別の解決策は、SSRSレポートを作成し、それをExcelファイルに生成するサブスクリプションを作成することです。これにより、書式設定をより詳細に制御できるようになり、Excelは通常、うまく動作します。 –

+0

空きスペースや引用符を前に置いても機能しません。 db_sendmailを使用する試みは、SSRSレポートがデータセットを見せてくれるという事実を解決することでしたが、小さな "Excelとしてエクスポート"をクリックすると、空の行、不器用なヘッダー、見た目の過去の自動化には受け入れられないExcelファイルが作成されますそれで。したがって、先行ゼロを維持するExcelファイルを作成する別の方法。クライアントは厄介です。それには何も問題ありません。 SO上のモデレーターは、私が持っているどのクライアントよりもピカピカです。 – JustJohn

関連する問題