またまた中々見つけられなかったテクニック。
セルの内部に斜線をひくです。
連日の調査で疲れます。
さくっと結論です。
edgesにdiagonalを指定して、diagonal_upかdiagonal_downにtrueを指定するです。
edgesにdiagonalを指定しろなんてどこにも書いてなかったので大変でした。
コードにするとこうです。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
| require 'axlsx'
package = Axlsx::Package.new
sheet = package.workbook.add_worksheet(name: 'lists')
diagonal_up = sheet.styles.add_style(
{
:border => {
:edges => [:diagonal],
:color => "000000",
:style => :thin,
diagonal_up: true
}
}
)
diagonal_down = sheet.styles.add_style(
{
:border => {
:edges => [:diagonal],
:color => "000000",
:style => :thin,
diagonal_down: true
}
}
)
diagonal_both = sheet.styles.add_style(
{
:border => {
:edges => [:diagonal],
:color => "000000",
:style => :thin,
diagonal_down: true,
diagonal_up: true
}
}
)
sheet.add_row(['斜線1'], style: diagonal_up)
sheet.add_row([''])
sheet.add_row(['斜線2'], style: diagonal_down)
sheet.add_row([''])
sheet.add_row(['斜線3'], style: diagonal_both)
package.serialize('test.xlsx')
|
もしくはこれでもいけます。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
| require 'axlsx'
package = Axlsx::Package.new
sheet = package.workbook.add_worksheet(name: 'lists')
diagonal_style = sheet.styles.add_style(
{
:border => {
:edges => [:left, :right],
:color => "000000",
:style => :thin
}
}
)
br = package.workbook.styles.borders[package.workbook.styles.cellXfs[diagonal_style].borderId]
br.diagonalUp = true
br.diagonalDown = true
br.prs << Axlsx::BorderPr.new(
name: :diagonal,
color: Axlsx::Color.new(rgb: '000000'),
style: :thin,
)
sheet.add_row(['斜め線をひく'], style: diagonal_style)
package.serialize('test.xlsx')
|