Axlsxで縦書き

Axlsxでセルの内容を縦書きにする方法がわかったので日記に記します。
セルに角度を付ける方法は見つかったんですが、縦書きにする方法が全然見つからずかなりはまりました。

VBAだと縦書きはこう設定できますね。

1
Range("D2").Orientation = xlVertical

色々と調べて、xlVerticalの値である-4166をセットしていしてみたりしましたがなかなかうまくゆかず。
色々と検索して、最終的にcellXfsというキーワードからなぜかC# vb.netの質問掲示板で発見しましした(圧倒的感謝!)
textRotationを255を指定すればいけるそうです。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
require 'axlsx'

package = Axlsx::Package.new
sheet = package.workbook.add_worksheet(name: 'lists')

vertical_text = sheet.styles.add_style(
    {
      alignment: {
        horizontal: :center,
        vertical: :center ,
        textRotation: 255
      }
    }
)

sheet.add_row(['とっても長いテキスト', '短いテキスト'], style: vertical_text)

package.serialize('test.xlsx')

できないのかもと本気で諦めかけていたので出来た時には変な声がでてしまいました。

Axlsx Orientaion xlVertical

Comments