Module: CalcWorksheet

Defined in:
lib/Trail_Calc.rb

Overview


シートドキュメント操作

シートクラスの拡張モジュール シート取り出し時に自動的に組み込まれる。

Instance Method Summary collapse

Instance Method Details

#[](y, x) ⇒ Object

セルの値取り出し

sheet でセルを参照する。

y::行番号(0始まり) x::カラム番号(0始まり)



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

セルの値設定

sheet でセルを参照する。

y::行番号(0始まり) x::カラム番号(0始まり) value::設定値



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