Module: CalcWorksheet
- Defined in:
- lib/Trail_Calc.rb
Overview
シートドキュメント操作
シートクラスの拡張モジュール シート取り出し時に自動的に組み込まれる。
Instance Method Summary collapse
-
#[](y, x) ⇒ Object
セルの値取り出し sheet でセルを参照する。.
-
#[]=(y, x, value) ⇒ Object
セルの値設定 sheet でセルを参照する。.
-
#box(y1, x1, y2, x2) ⇒ Object
罫線枠設定.
-
#center(y1, x1) ⇒ Object
センター表示設定(Cell).
-
#centers(y1, x1, y2, x2) ⇒ Object
センター表示設定(Range).
-
#color(y, x) ⇒ Object
セルの背景色を取得.
-
#copy(sy1, sx1, sy2, sx2, ty, tx) ⇒ Object
コピー(Range).
-
#format_copy(sy, sx, ty1, tx1, ty2, tx2) ⇒ Object
書式コピー(Range).
-
#format_copy1(sy, sx, ty, tx) ⇒ Object
書式コピー(Cell).
-
#format_range_copy(sy, sx1, sx2, ty, tx, n = 1) ⇒ Object
書式コピー2(Range).
-
#get_chartdoc(n = 0) ⇒ Object
チャートドキュメント取り出し.
-
#get_formula(y, x) ⇒ Object
セルの式を取得.
-
#get_width(x) ⇒ Object
カラム幅取得.
-
#group_column(x1, x2) ⇒ Object
列をグループ化.
-
#group_row(y1, y2) ⇒ Object
行をグループ化.
-
#horizontal(y1, x1, h = 0) ⇒ Object
水平方向の表示設定(Cell).
-
#horizontals(y1, x1, y2, x2, h = 0) ⇒ Object
水平方向の表示設定(Range).
-
#insert_rows(n, count = 1) ⇒ Object
行の挿入.
-
#merge(y1, x1, y2, x2) ⇒ Object
セルのマージ設定.
-
#merge_off(y1, x1, y2, x2) ⇒ Object
セルのマージ解除.
-
#r_str(y, x) ⇒ Object
範囲指定の文字列作成.
-
#remove_rows(n, count = 1) ⇒ Object
行の削除.
-
#set_color(y, x, color) ⇒ Object
セルの背景色を設定.
-
#set_formula(y, x, f) ⇒ Object
セルへ式を設定.
-
#set_range_color(y1, x1, y2, x2, color) ⇒ Object
セル範囲の背景色を設定.
-
#set_width(x, width) ⇒ Object
カラム幅設定.
- #v_top(y1, x1) ⇒ Object
-
#v_tops(y1, x1, y2, x2) ⇒ Object
上付き表示設定.
- #vertical(y1, x1, v = 0) ⇒ Object
-
#verticals(y1, x1, y2, x2, v = 0) ⇒ Object
垂直方向の表示設定.
-
#wrap(y1, x1, y2, x2) ⇒ Object
Wrap表示設定.
Instance Method Details
#[](y, x) ⇒ Object
554 555 556 557 558 559 560 561 |
# File 'lib/Trail_Calc.rb', line 554 def [] y,x # cell = self.getCellByPosition(x,y) if cell.Type == 2 #CellCollectionType::TEXT cell.String else cell.Value end end |
#[]=(y, x, value) ⇒ Object
570 571 572 573 574 575 576 577 |
# File 'lib/Trail_Calc.rb', line 570 def []= y,x,value # cell = self.getCellByPosition(x,y) if value.class == String #CellCollectionType::TEXT cell.String = value else cell.Value= value end end |
#box(y1, x1, y2, x2) ⇒ Object
罫線枠設定
y1::左上行番号(0始まり) x1::左上カラム番号(0始まり) y2::右下行番号(0始まり) x2::右下カラム番号(0始まり)
670 671 672 673 674 675 676 677 678 679 |
# File 'lib/Trail_Calc.rb', line 670 def box(y1,x1,y2,x2) r = self.getCellRangeByPosition(x1,y1,x2,y2) b = r.RightBorder b.InnerLineWidth = 10 r.BottomBorder = b r.TopBorder = b r.LeftBorder = b r.RightBorder = b end |
#center(y1, x1) ⇒ Object
センター表示設定(Cell)
y1::左上行番号(0始まり) x1::左上カラム番号(0始まり)
760 761 762 |
# File 'lib/Trail_Calc.rb', line 760 def center(y1,x1) self.horizontal(y1,x1,2) end |
#centers(y1, x1, y2, x2) ⇒ Object
センター表示設定(Range)
y1::左上行番号(0始まり) x1::左上カラム番号(0始まり) y2::右下行番号(0始まり) x2::右下カラム番号(0始まり)
752 753 754 |
# File 'lib/Trail_Calc.rb', line 752 def centers(y1,x1,y2,x2) self.horizontals(y1,x1,y2,x2,2) end |
#color(y, x) ⇒ Object
セルの背景色を取得
y::行番号(0始まり) x::カラム番号(0始まり) ret::RGB24bitでの色コード
506 507 508 |
# File 'lib/Trail_Calc.rb', line 506 def color(y,x) # self.getCellByPosition(x,y).CellBackColor end |
#copy(sy1, sx1, sy2, sx2, ty, tx) ⇒ Object
コピー(Range)
sy1::コピー元 左上行番号(0始まり) sx1::コピー元 左上カラム番号(0始まり) sy2::コピー元 右下行番号(0始まり) sx2::コピー元 右下カラム番号(0始まり) ty::コピー先 左上行番号(0始まり) tx::コピー先 左上カラム番号(0始まり)
820 821 822 823 824 |
# File 'lib/Trail_Calc.rb', line 820 def copy(sy1,sx1,sy2,sx2,ty,tx) r = self.getCellRangeByPosition(sx1,sy1,sx2,sy2).getRangeAddress c = self.getCellByPosition(tx,ty).getCellAddress self.copyRange(c,r) end |
#format_copy(sy, sx, ty1, tx1, ty2, tx2) ⇒ Object
書式コピー(Range)
sy::コピー元 行番号(0始まり) sx::コピー元 カラム番号(0始まり) ty1::コピー先 左上行番号(0始まり) tx1::コピー先 左上カラム番号(0始まり) ty2::コピー先 右下行番号(0始まり) tx2::コピー先 右下カラム番号(0始まり)
772 773 774 775 776 777 778 |
# File 'lib/Trail_Calc.rb', line 772 def format_copy(sy,sx,ty1,tx1,ty2,tx2) s = self.getCellByPosition(sx,sy) sp = s.getPropertySetInfo.getProperties names = sp.each.map{|p| p.Name} ps = s.getPropertyValues(names) self.getCellRangeByPosition(tx1,ty1,tx2,ty2).setPropertyValues(names,ps) end |
#format_copy1(sy, sx, ty, tx) ⇒ Object
書式コピー(Cell)
sy::コピー元 行番号(0始まり) sx::コピー元 カラム番号(0始まり) ty::コピー先 左上行番号(0始まり) tx::コピー先 左上カラム番号(0始まり)
804 805 806 807 808 809 810 |
# File 'lib/Trail_Calc.rb', line 804 def format_copy1(sy,sx,ty,tx) s = self.getCellByPosition(sx,sy) sp = s.getPropertySetInfo.getProperties names = sp.each.map{|p| p.Name} ps = s.getPropertyValues(names) self.getCellByPosition(tx,ty).setPropertyValues(names,ps) end |
#format_range_copy(sy, sx1, sx2, ty, tx, n = 1) ⇒ Object
書式コピー2(Range)
コピー元行の書式をコピー先にn行コピーする。 コピー先はコピー元と同じカラム数とする。
sy1::コピー元 行番号(0始まり) sx1::コピー元 開始カラム番号(0始まり) sx2::コピー元 終了カラム番号(0始まり) ty::コピー先 左上行番号(0始まり) tx::コピー先 左上カラム番号(0始まり)
- n
-
コピー行数
791 792 793 794 795 796 |
# File 'lib/Trail_Calc.rb', line 791 def format_range_copy(sy,sx1,sx2, ty,tx,n=1) return if n < 1 (sx1..sx2).each do |x| self.format_copy(sy,x, ty,tx+(x-sx1),ty+n-1,tx+(x-sx1)) end end |
#get_chartdoc(n = 0) ⇒ Object
チャートドキュメント取り出し
n::何番目のチャートを取り出すかの指定(0始まり)、指定されない場合には 0。 ret::シートオブジェクト
489 490 491 492 493 494 495 496 497 498 |
# File 'lib/Trail_Calc.rb', line 489 def get_chartdoc(n=0) charts = self.getCharts if n.class == String chart = charts.getByName(n) else chart = charts.getByIndex(n) end chartDoc = chart.EmbeddedObject chartDoc.extend(CalcChartDoc) end |
#get_formula(y, x) ⇒ Object
セルの式を取得
y::行番号(0始まり) x::カラム番号(0始まり) ret::式を表す文字列
606 607 608 609 |
# File 'lib/Trail_Calc.rb', line 606 def get_formula( y,x) # cell = self.getCellByPosition(x,y) cell.Formula end |
#get_width(x) ⇒ Object
カラム幅取得
x::カラム番号(0始まり) ret::幅(1/100mm単位)
536 537 538 |
# File 'lib/Trail_Calc.rb', line 536 def get_width(x) # self.Columns.getByIndex(x).Width end |
#group_column(x1, x2) ⇒ Object
列をグループ化
y1::開始列番号(0始まり) y2::終了列番号(0始まり)
Excelのグループ化と+-のアイコンの位置が異なります。
639 640 641 642 |
# File 'lib/Trail_Calc.rb', line 639 def group_column(x1,x2) r = self.getCellRangeByPosition(x1,0,x2,0).RangeAddress self.group(r,0) end |
#group_row(y1, y2) ⇒ Object
行をグループ化
y1::開始行番号(0始まり) y2::終了行番号(0始まり)
Excelのグループ化と+-のアイコンの位置が異なります。
628 629 630 631 |
# File 'lib/Trail_Calc.rb', line 628 def group_row(y1,y2) r = self.getCellRangeByPosition(0,y1,0,y2).RangeAddress self.group(r,1) end |
#horizontal(y1, x1, h = 0) ⇒ Object
水平方向の表示設定(Cell)
y1::左上行番号(0始まり) x1::左上カラム番号(0始まり)
- h
-
0:STANDARD,1:LEFT,2:CENTER,3:RIGHT,4:BLOCK,5:REPEAT
742 743 744 |
# File 'lib/Trail_Calc.rb', line 742 def horizontal(y1,x1,h=0) self.getCellByPosition(x1,y1).HoriJustify = h end |
#horizontals(y1, x1, y2, x2, h = 0) ⇒ Object
水平方向の表示設定(Range)
y1::左上行番号(0始まり) x1::左上カラム番号(0始まり) y2::右下行番号(0始まり) x2::右下カラム番号(0始まり)
- h
-
0:STANDARD,1:LEFT,2:CENTER,3:RIGHT,4:BLOCK,5:REPEAT
732 733 734 |
# File 'lib/Trail_Calc.rb', line 732 def horizontals(y1,x1,y2,x2,h=0) self.getCellRangeByPosition(x1,y1,x2,y2).HoriJustify = h end |
#insert_rows(n, count = 1) ⇒ Object
行の挿入
- n
-
行番号(0始まり)、この行の前に挿入する。
- count
-
何行挿入するかの指定、指定しない場合には1。
832 833 834 |
# File 'lib/Trail_Calc.rb', line 832 def insert_rows(n,count=1) # self.Rows.insertByIndex(n,count) end |
#merge(y1, x1, y2, x2) ⇒ Object
セルのマージ設定
y1::左上行番号(0始まり) x1::左上カラム番号(0始まり) y2::右下行番号(0始まり) x2::右下カラム番号(0始まり)
650 651 652 |
# File 'lib/Trail_Calc.rb', line 650 def merge(y1,x1,y2,x2) self.getCellRangeByPosition(x1,y1,x2,y2).merge(true) end |
#merge_off(y1, x1, y2, x2) ⇒ Object
セルのマージ解除
y1::左上行番号(0始まり) x1::左上カラム番号(0始まり) y2::右下行番号(0始まり) x2::右下カラム番号(0始まり)
660 661 662 |
# File 'lib/Trail_Calc.rb', line 660 def merge_off(y1,x1,y2,x2) self.getCellRangeByPosition(x1,y1,x2,y2).merge(false) end |
#r_str(y, x) ⇒ Object
範囲指定の文字列作成
y::行番号(0始まり) x::カラム番号(0始まり) ret::範囲指定文字列
587 588 589 590 591 592 593 594 595 596 597 598 |
# File 'lib/Trail_Calc.rb', line 587 def r_str(y,x) r = '' x -= 1 if x > 26*26 return "ZZ#{y}" else r = $a2z[((x/26)-1).to_i] if x > 25 r += $a2z[(x%26).to_i] r += y.to_s end r end |
#remove_rows(n, count = 1) ⇒ Object
行の削除
- n
-
行番号(0始まり)、この行から下を削除する。
- count
-
何行削除するかの指定、指定しない場合には1。
841 842 843 844 |
# File 'lib/Trail_Calc.rb', line 841 def remove_rows(n,count=1) # r = self.getCellRangeByPosition(0,n,0,n+count-1).getRangeAddress self.removerange(r,3) end |
#set_color(y, x, color) ⇒ Object
セルの背景色を設定
y::行番号(0始まり) x::カラム番号(0始まり) color::RGB24bitでの色コード
516 517 518 |
# File 'lib/Trail_Calc.rb', line 516 def set_color(y,x,color) # self.getCellByPosition(x,y).CellBackColor = color end |
#set_formula(y, x, f) ⇒ Object
セルへ式を設定
y::行番号(0始まり) x::カラム番号(0始まり) f::式を表す文字列
617 618 619 620 |
# File 'lib/Trail_Calc.rb', line 617 def set_formula( y,x,f) # cell = self.getCellByPosition(x,y) cell.Formula = f end |
#set_range_color(y1, x1, y2, x2, color) ⇒ Object
セル範囲の背景色を設定
y1::行番号(0始まり) x1::カラム番号(0始まり) y2::行番号(0始まり) x2::カラム番号(0始まり) color::RGB24bitでの色コード
528 529 530 |
# File 'lib/Trail_Calc.rb', line 528 def set_range_color(y1,x1,y2,x2,color) # self.getCellRangeByPosition(x1,y1,x2,y2).CellBackColor = color end |
#set_width(x, width) ⇒ Object
カラム幅設定
x::カラム番号(0始まり) width::幅(1/100mm単位)
544 545 546 |
# File 'lib/Trail_Calc.rb', line 544 def set_width(x,width) # self.Columns.getByIndex(x).Width = width end |
#v_top(y1, x1) ⇒ Object
720 721 722 |
# File 'lib/Trail_Calc.rb', line 720 def v_top(y1,x1) self.vertical(y1,x1,1) end |
#v_tops(y1, x1, y2, x2) ⇒ Object
上付き表示設定
y1::左上行番号(0始まり) x1::左上カラム番号(0始まり) y2::右下行番号(0始まり) x2::右下カラム番号(0始まり)
716 717 718 |
# File 'lib/Trail_Calc.rb', line 716 def v_tops(y1,x1,y2,x2) self.verticals(y1,x1,y2,x2,1) end |
#vertical(y1, x1, v = 0) ⇒ Object
704 705 706 |
# File 'lib/Trail_Calc.rb', line 704 def vertical(y1,x1,v=0) self.getCellByPosition(x1,y1).VertJustify = v end |
#verticals(y1, x1, y2, x2, v = 0) ⇒ Object
垂直方向の表示設定
y1::左上行番号(0始まり) x1::左上カラム番号(0始まり) y2::右下行番号(0始まり) x2::右下カラム番号(0始まり)
- v
-
0:STANDARD,1:TOP,2:CENTER,3:BOTTOM
700 701 702 |
# File 'lib/Trail_Calc.rb', line 700 def verticals(y1,x1,y2,x2,v=0) self.getCellRangeByPosition(x1,y1,x2,y2).VertJustify = v end |
#wrap(y1, x1, y2, x2) ⇒ Object
Wrap表示設定
y1::左上行番号(0始まり) x1::左上カラム番号(0始まり) y2::右下行番号(0始まり) x2::右下カラム番号(0始まり)
688 689 690 |
# File 'lib/Trail_Calc.rb', line 688 def wrap(y1,x1,y2,x2) self.getCellRangeByPosition(x1,y1,x2,y2).IsTextWrapped = true end |