OPENXML スプレッドシートのセル内に改行を挿入するにはどうすればよいですか?
-
06-09-2019 - |
質問
私は現在、セルにインライン文字列を挿入するために次のようなものを使用しています。
new Cell()
{
CellReference = "E2",
StyleIndex = (UInt32Value)4U,
DataType = CellValues.InlineString,
InlineString = new InlineString(new Text( "some text"))
}
しかし \n
改行を挿入できないのですが、どうすればよいでしょうか?
応答
new Cell(
new CellValue("string \n string")
)
{
CellReference = "E2",
StyleIndex = (UInt32Value)4U,
DataType = CellValues.String
}
解決
CellValues.InlineStringの代わりにCellValues.Stringしてみます。
他のヒント
次の 2 つのことを行う必要があります。
1.) セルを「折り返されたテキスト」としてマークします。既存のスプレッドシートをテンプレートとして使用している場合は、スプレッドシートでこれを手動で行うことができます。セルを右クリックして「」を選択するだけです。セルの書式設定.."、 クリックしてください "位置合わせ「」タブをクリックし、「」にチェックを入れますテキストを折り返す」チェックボックス。
または... CellFormat はプログラムで設定できます。「」という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.) 「
」は使用せず、代わりに標準の復帰と改行の組み合わせを使用する必要があります。「
」
2 つを混合している場合 (つまり、「
」の前に「
」と「
」がない場合)、セル値を入力する前にこれを修正する必要があります。
sHeaderText = sHeaderText.Replace("\r\n", "\n").Replace("\n", "\r\n");
私自身は使いません CellValues.String あるいは CellValues.InlineString.
代わりに、次を使用してテキストセルを構築します CellValues.SharedString (Excel と同じように)。
ブール値には「」を使用します。CellValues.Boolean"、その他すべて (数値と日付) については、セルの設定を行いません。 データ・タイプ Excel が作成するマークアップを見ると、それが Excel の動作だからです。