0

私はC#でWindowsアプリケーションに取り組んでいます。私の要件は、特定の注文番号のデータベース値を含む定義済みの Excel テンプレートを印刷することです。つまり、データベース (SQL Server) からデータを取得し、定義済みのセル値 (テキスト) (Excel テンプレート内) をデータベース値に置き換える必要があります。例えば ​​-

Excel セル値では、「SENDER_NAME」は「FEDEX」に置き換えられ、「OrderNo」は「1212」に置き換えられます。私はそれを行うために次のコードを使用しています。

object missingValue = Type.Missing;

xlWorkBook = xlApp.Workbooks.Open(path, 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);

xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);

xlWorkSheet.Cells.Replace("SENDER_NAME", "FEDEX", missingValue, missingValue, missingValue, missingValue, missingValue, missingValue);

私の問題は-Excelの特定のセルテキストのデータベースにいくつかの値が存在しない場合、空白の値に置き換えられるため、印刷中に空白が残ります。それらの空きスペースを削減する必要がありますか??

空のスペースが印刷に表示されないようにしたいだけです。問題は、空のセルが空白として印刷されることです。たとえば、AddressLine2 は Db にありません。次に、次のようになります。

AddressLine1
EMPTYCELL
AddressLin3

次のような出力が必要です

AddressLine1
AddressLine3

解決策はありますか?

4

1 に答える 1

1

SQL ステートメントで ISNULL(式または列、置換値) を使用して、スプレッドシートの NULL 値を取り除くことができます。置換値は '' になります。http://msdn.microsoft.com/en-us/library/ms184325.aspxを参照してください。

編集された回答:

次に、SQL で区切られた文字列を作成し、Excel で開くことをお勧めします。区切り文字にはコンマを使用しないでください。次の例のように、セミコロンやタブなどを使用してください。

セミコロン区切り

SELECT 
CompanyName + ';' + 
Address1 + ';' + 
ISNULL(address2 + ';', '')+
State AS out_string  FROM customers

タブ区切り

SELECT 
CompanyName + char(9) + 
Address1 + char(9) + 
ISNULL(address2 + char(9), '') +
State AS out_string  FROM customers

ISNULL 関数呼び出し内で区切り文字を連結することにより、NULL 値が検出されたときに区切り文字が連続することを防ぎます。NULL 値が許可されているすべての列で ISNULL コードを使用します。

于 2012-10-01T19:15:22.707 に答える