■No5358 (ratte さん) に返信
> その際に,出力されたExcelファイルの特定のセルを縦書き表示にする,
> ということは可能なんでしょうか?
☆オートメーションで作成する場合☆
対象のセル(を表す Range オブジェクト)に対して、
targetRange.Orientation = XlOrientation.xlVertical
と指定すれば、そのセルが縦書きのセルとなります。
ちなみに回転なら、この Orientation プロパティに、-90 〜 90 の整数を指定します。
処理としては楽ですが、ASP.NET 上で生成するとなると、COMの解放問題、
ライセンス、リソース面など、考慮しなければならない問題が幾つかあります。
☆XML スプレッドシート形式で作成する場合☆
まずはスタイル設定。
/Workbook/Styles の末尾に、下記の Style/Alignment タグを追加します。
<Style ss:ID="識別値"><Alignment ss:VerticalText="1"/></Style>
ss:textRotation="1" が垂直指定です。
ちなみに回転なら、かわりに ss:Rotate="45" のように指定します。
あとはそれを参照させるため、目的のセルに対して、
<Cell ss:StyleID="識別値">
のように、そのスタイルを割り当てれば OK です。
☆xlsx 形式で作成する場合☆
まずはスタイル設定。
\xl\styles\styles.xml の /styleSheet/cellXfs の末尾に、下記の xf/alignment タグを追加します。
<xf><alignment textRotation="255"/></xf>
textRotation属性が文字の角度を表しており、0〜255の値が入ります。
255なら垂直(縦書き)、0なら通常(横書き)です。
1〜90ならば左回りに1度〜90度、91〜180ならば右回りに1度〜90度です。
属性自体が指定されなかった場合は、0が指定されたものとみなされます。
# 181〜254の範囲は、Excel 2007 ではサポートされていません。
あとはそれを参照させるため、目的のセル、たとえば、Sheet1!A1 セルであれば、
\xl\worksheets\sheet1.xml 内の /worksheet/sheetData/row/c[@r="A1"] のタグに
<c r="A1" s="スタイル番号" t="s">
の形式でスタイルを割り当てます。
(スタイル番号には、先ほど追加した cellXfs 内の xf の位置を整数で指定します)