次の 2 つのことを行う必要があります。
1.)セルを「ラップされたテキスト」としてマークします。既存のスプレッドシートをテンプレートとして使用している場合は、スプレッドシートで手動でこれを行うことができます。セルを右クリックして [セルの書式設定] を選択し、[配置] タブをクリックして [テキストの折り返し]チェックボックスをオンにします。
または...プログラムで CellFormat を設定できます。「 cf 」という CellFormat オブジェクトがある場合は、次のようにします。
cf.ApplyAlignment = true;//Set this so that Excel knows to use it.
if (cf.Alignment == null)//If no pre-existing Alignment, then add it.
cf.Alignment = new Alignment() { WrapText = true };
Alignment a = cf.Alignment;
if (a.WrapText == null || a.WrapText.Value == false)
a.WrapText = new BooleanValue(true);//Update pre-existing Alignment.
2.)「\n」は使用しないでください。代わりに、標準のキャリッジ リターン + ライン フィードの組み合わせを使用する必要があります: 「\r\n
」 "\r" および "\r\n")、セルの値を入力する前にこれを修正する必要があります。
sHeaderText = sHeaderText.Replace("\r\n", "\n").Replace("\n", "\r\n");
私自身、 CellValues.StringもCellValues.InlineStringも使用しません。代わりに、 (Excel と同じように) CellValues.SharedString
を使用してテキスト セルを作成します。Bool の場合は「CellValues.Boolean」を使用し、その他すべて (数値と日付) の場合は、セルのDataTypeを何も設定しません。これは、Excel が作成するマークアップを確認したときにそれが行われるためです。