Module: RubyXL::WorksheetConvenienceMethods
- Included in:
- Worksheet
- Defined in:
- lib/rubyXL/convenience_methods.rb
Constant Summary collapse
- NAME =
0
- SIZE =
1
- COLOR =
2
- ITALICS =
3
- BOLD =
4
- UNDERLINE =
5
- STRIKETHROUGH =
6
Instance Method Summary collapse
- #change_column_alignment(column_index, &block) ⇒ Object
- #change_column_bold(column_index, bolded = false) ⇒ Object
- #change_column_border(column_index, direction, weight) ⇒ Object
- #change_column_border_color(column_index, direction, color) ⇒ Object
- #change_column_fill(column_index, color_code = 'ffffff') ⇒ Object
-
#change_column_font(column_index, change_type, arg, font, xf) ⇒ Object
Helper method to update the fonts and cell styles array main method to change font, called from each separate font mutator method.
- #change_column_font_color(column_index, font_color = '000000') ⇒ Object
- #change_column_font_name(column_index = 0, font_name = 'Verdana') ⇒ Object
- #change_column_font_size(column_index, font_size = 10) ⇒ Object
- #change_column_horizontal_alignment(column_index, alignment = 'center') ⇒ Object
- #change_column_italics(column_index, italicized = false) ⇒ Object
- #change_column_strikethrough(column_index, struckthrough = false) ⇒ Object
- #change_column_underline(column_index, underlined = false) ⇒ Object
- #change_column_vertical_alignment(column_index, alignment = 'center') ⇒ Object
-
#change_column_width(column_index, width_in_chars = RubyXL::ColumnRange::DEFAULT_WIDTH) ⇒ Object
Get column width measured in number of digits, as per msdn.microsoft.com/en-us/library/documentformat.openxml.spreadsheet.column%28v=office.14%29.aspx.
-
#change_column_width_raw(column_index, width) ⇒ Object
Set raw column width value.
- #change_row_alignment(row, &block) ⇒ Object
- #change_row_bold(row = 0, bolded = false) ⇒ Object
- #change_row_border(row, direction, weight) ⇒ Object
- #change_row_border_color(row, direction, color = '000000') ⇒ Object
- #change_row_fill(row_index = 0, rgb = 'ffffff') ⇒ Object
-
#change_row_font(row_index, change_type, arg, font) ⇒ Object
Helper method to update the row styles array change_type - NAME or SIZE or COLOR etc main method to change font, called from each separate font mutator method.
- #change_row_font_color(row = 0, font_color = '000000') ⇒ Object
- #change_row_font_name(row = 0, font_name = 'Verdana') ⇒ Object
- #change_row_font_size(row = 0, font_size = 10) ⇒ Object
- #change_row_height(row = 0, height = 10) ⇒ Object
- #change_row_horizontal_alignment(row = 0, alignment = 'center') ⇒ Object
- #change_row_italics(row = 0, italicized = false) ⇒ Object
- #change_row_strikethrough(row = 0, struckthrough = false) ⇒ Object
- #change_row_underline(row = 0, underlined = false) ⇒ Object
- #change_row_vertical_alignment(row = 0, alignment = 'center') ⇒ Object
- #column_font(col) ⇒ Object
-
#delete_cell(row_index = 0, column_index = 0, shift = nil) ⇒ Object
by default, only sets cell to nil if :left is specified, method will shift row contents to the right of the deleted cell to the left if :up is specified, method will shift column contents below the deleted cell upward.
- #delete_column(column_index = 0) ⇒ Object
- #delete_row(row_index = 0) ⇒ Object
-
#get_col_style(column_index) ⇒ Object
Helper method to get the style index for a column.
- #get_cols_style_index(column_index) ⇒ Object
- #get_column_alignment(col, type) ⇒ Object
- #get_column_border(col, border_direction) ⇒ Object
- #get_column_border_color(col, border_direction) ⇒ Object
- #get_column_fill(col = 0) ⇒ Object
- #get_column_font_color(col = 0) ⇒ Object
- #get_column_font_name(col = 0) ⇒ Object
- #get_column_font_size(col = 0) ⇒ Object
-
#get_column_width(column_index = 0) ⇒ Object
Get column width measured in number of digits, as per msdn.microsoft.com/en-us/library/documentformat.openxml.spreadsheet.column%28v=office.14%29.aspx.
-
#get_column_width_raw(column_index = 0) ⇒ Object
Get raw column width value as stored in the file.
- #get_row_alignment(row, is_horizontal) ⇒ Object
- #get_row_border(row, border_direction) ⇒ Object
- #get_row_border_color(row, border_direction) ⇒ Object
- #get_row_fill(row = 0) ⇒ Object
- #get_row_font_color(row = 0) ⇒ Object
- #get_row_font_name(row = 0) ⇒ Object
- #get_row_font_size(row = 0) ⇒ Object
- #get_row_height(row = 0) ⇒ Object
- #get_row_style(row_index) ⇒ Object
- #insert_cell(row = 0, col = 0, data = nil, formula = nil, shift = nil) ⇒ Object
-
#insert_column(column_index = 0) ⇒ Object
Inserts column at
column_index
, pushes everything right, takes styles from column to left NOTE: use of this method will break formulas which reference cells which are being “pushed right”. -
#insert_row(row_index = 0) ⇒ Object
Inserts row at row_index, pushes down, copies style from the row above (that’s what Excel 2013 does!) NOTE: use of this method will break formulas which reference cells which are being “pushed down”.
- #is_column_bolded(col = 0) ⇒ Object
- #is_column_italicized(col = 0) ⇒ Object
- #is_column_struckthrough(col = 0) ⇒ Object
- #is_column_underlined(col = 0) ⇒ Object
- #is_row_bolded(row = 0) ⇒ Object
- #is_row_italicized(row = 0) ⇒ Object
- #is_row_struckthrough(row = 0) ⇒ Object
- #is_row_underlined(row = 0) ⇒ Object
-
#merge_cells(start_row, start_col, end_row, end_col) ⇒ Object
Merges cells within a rectangular area.
- #row_font(row) ⇒ Object
Instance Method Details
#change_column_alignment(column_index, &block) ⇒ Object
802 803 804 805 806 807 808 809 810 811 812 813 814 815 |
# File 'lib/rubyXL/convenience_methods.rb', line 802 def change_column_alignment(column_index, &block) validate_workbook ensure_cell_exists(0, column_index) cols.get_range(column_index).style_index = @workbook.modify_alignment(get_col_style(column_index), &block) # Excel gets confused if width is not explicitly set for a column that had alignment changes change_column_width(column_index) if get_column_width_raw(column_index).nil? sheet_data.rows.each { |row| c = row[column_index] next if c.nil? c.style_index = @workbook.modify_alignment(c.style_index, &block) } end |
#change_column_bold(column_index, bolded = false) ⇒ Object
735 736 737 738 739 740 |
# File 'lib/rubyXL/convenience_methods.rb', line 735 def change_column_bold(column_index, bolded = false) xf = get_col_xf(column_index) font = @workbook.fonts[xf.font_id].dup font.set_bold(bolded) change_column_font(column_index, Worksheet::BOLD, bolded, font, xf) end |
#change_column_border(column_index, direction, weight) ⇒ Object
764 765 766 767 768 769 770 771 772 773 774 |
# File 'lib/rubyXL/convenience_methods.rb', line 764 def change_column_border(column_index, direction, weight) validate_workbook ensure_cell_exists(0, column_index) cols.get_range(column_index).style_index = @workbook.modify_border(get_col_style(column_index), direction, weight) sheet_data.rows.each { |row| c = row.cells[column_index] c.change_border(direction, weight) unless c.nil? } end |
#change_column_border_color(column_index, direction, color) ⇒ Object
776 777 778 779 780 781 782 783 784 785 786 787 |
# File 'lib/rubyXL/convenience_methods.rb', line 776 def change_column_border_color(column_index, direction, color) validate_workbook ensure_cell_exists(0, column_index) Color.validate_color(color) cols.get_range(column_index).style_index = @workbook.modify_border_color(get_col_style(column_index), direction, color) sheet_data.rows.each { |row| c = row.cells[column_index] c.change_border_color(direction, color) unless c.nil? } end |
#change_column_fill(column_index, color_code = 'ffffff') ⇒ Object
532 533 534 535 536 537 538 539 540 541 542 543 |
# File 'lib/rubyXL/convenience_methods.rb', line 532 def change_column_fill(column_index, color_code = 'ffffff') validate_workbook RubyXL::Color.validate_color(color_code) ensure_cell_exists(0, column_index) cols.get_range(column_index).style_index = @workbook.modify_fill(get_col_style(column_index), color_code) sheet_data.rows.each { |row| c = row[column_index] c.change_fill(color_code) if c } end |
#change_column_font(column_index, change_type, arg, font, xf) ⇒ Object
Helper method to update the fonts and cell styles array main method to change font, called from each separate font mutator method
692 693 694 695 696 697 698 699 700 701 702 703 |
# File 'lib/rubyXL/convenience_methods.rb', line 692 def change_column_font(column_index, change_type, arg, font, xf) validate_workbook ensure_cell_exists(0, column_index) xf = workbook.register_new_font(font, xf) cols.get_range(column_index).style_index = workbook.register_new_xf(xf) sheet_data.rows.each { |row| c = row && row[column_index] c.font_switch(change_type, arg) unless c.nil? } end |
#change_column_font_color(column_index, font_color = '000000') ⇒ Object
719 720 721 722 723 724 725 726 |
# File 'lib/rubyXL/convenience_methods.rb', line 719 def change_column_font_color(column_index, font_color='000000') Color.validate_color(font_color) xf = get_col_xf(column_index) font = @workbook.fonts[xf.font_id].dup font.set_rgb_color(font_color) change_column_font(column_index, Worksheet::COLOR, font_color, font, xf) end |
#change_column_font_name(column_index = 0, font_name = 'Verdana') ⇒ Object
705 706 707 708 709 710 |
# File 'lib/rubyXL/convenience_methods.rb', line 705 def change_column_font_name(column_index = 0, font_name = 'Verdana') xf = get_col_xf(column_index) font = @workbook.fonts[xf.font_id].dup font.set_name(font_name) change_column_font(column_index, Worksheet::NAME, font_name, font, xf) end |
#change_column_font_size(column_index, font_size = 10) ⇒ Object
712 713 714 715 716 717 |
# File 'lib/rubyXL/convenience_methods.rb', line 712 def change_column_font_size(column_index, font_size=10) xf = get_col_xf(column_index) font = @workbook.fonts[xf.font_id].dup font.set_size(font_size) change_column_font(column_index, Worksheet::SIZE, font_size, font, xf) end |
#change_column_horizontal_alignment(column_index, alignment = 'center') ⇒ Object
756 757 758 |
# File 'lib/rubyXL/convenience_methods.rb', line 756 def change_column_horizontal_alignment(column_index, alignment = 'center') change_column_alignment(column_index) { |a| a.horizontal = alignment } end |
#change_column_italics(column_index, italicized = false) ⇒ Object
728 729 730 731 732 733 |
# File 'lib/rubyXL/convenience_methods.rb', line 728 def change_column_italics(column_index, italicized = false) xf = get_col_xf(column_index) font = @workbook.fonts[xf.font_id].dup font.set_italic(italicized) change_column_font(column_index, Worksheet::ITALICS, italicized, font, xf) end |
#change_column_strikethrough(column_index, struckthrough = false) ⇒ Object
749 750 751 752 753 754 |
# File 'lib/rubyXL/convenience_methods.rb', line 749 def change_column_strikethrough(column_index, struckthrough=false) xf = get_col_xf(column_index) font = @workbook.fonts[xf.font_id].dup font.set_strikethrough(struckthrough) change_column_font(column_index, Worksheet::STRIKETHROUGH, struckthrough, font, xf) end |
#change_column_underline(column_index, underlined = false) ⇒ Object
742 743 744 745 746 747 |
# File 'lib/rubyXL/convenience_methods.rb', line 742 def change_column_underline(column_index, underlined = false) xf = get_col_xf(column_index) font = @workbook.fonts[xf.font_id].dup font.set_underline(underlined) change_column_font(column_index, Worksheet::UNDERLINE, underlined, font, xf) end |
#change_column_vertical_alignment(column_index, alignment = 'center') ⇒ Object
760 761 762 |
# File 'lib/rubyXL/convenience_methods.rb', line 760 def change_column_vertical_alignment(column_index, alignment = 'center') change_column_alignment(column_index) { |a| a.vertical = alignment } end |
#change_column_width(column_index, width_in_chars = RubyXL::ColumnRange::DEFAULT_WIDTH) ⇒ Object
Get column width measured in number of digits, as per msdn.microsoft.com/en-us/library/documentformat.openxml.spreadsheet.column%28v=office.14%29.aspx
515 516 517 |
# File 'lib/rubyXL/convenience_methods.rb', line 515 def change_column_width(column_index, width_in_chars = RubyXL::ColumnRange::DEFAULT_WIDTH) change_column_width_raw(column_index, ((width_in_chars + (5.0 / RubyXL::Font::MAX_DIGIT_WIDTH)) * 256).to_i / 256.0) end |
#change_column_width_raw(column_index, width) ⇒ Object
Set raw column width value
505 506 507 508 509 510 511 |
# File 'lib/rubyXL/convenience_methods.rb', line 505 def change_column_width_raw(column_index, width) validate_workbook ensure_cell_exists(0, column_index) range = cols.get_range(column_index) range.width = width range.custom_width = true end |
#change_row_alignment(row, &block) ⇒ Object
789 790 791 792 793 794 795 796 797 798 799 800 |
# File 'lib/rubyXL/convenience_methods.rb', line 789 def change_row_alignment(row, &block) validate_workbook validate_nonnegative(row) ensure_cell_exists(row) sheet_data.rows[row].style_index = @workbook.modify_alignment(get_row_style(row), &block) sheet_data[row].cells.each { |c| next if c.nil? c.style_index = @workbook.modify_alignment(c.style_index, &block) } end |
#change_row_bold(row = 0, bolded = false) ⇒ Object
660 661 662 663 664 665 |
# File 'lib/rubyXL/convenience_methods.rb', line 660 def change_row_bold(row = 0, bolded = false) ensure_cell_exists(row) font = row_font(row).dup font.set_bold(bolded) change_row_font(row, Worksheet::BOLD, bolded, font) end |
#change_row_border(row, direction, weight) ⇒ Object
586 587 588 589 590 591 592 593 594 595 |
# File 'lib/rubyXL/convenience_methods.rb', line 586 def change_row_border(row, direction, weight) validate_workbook ensure_cell_exists(row) sheet_data.rows[row].style_index = @workbook.modify_border(get_row_style(row), direction, weight) sheet_data[row].cells.each { |c| c.change_border(direction, weight) unless c.nil? } end |
#change_row_border_color(row, direction, color = '000000') ⇒ Object
597 598 599 600 601 602 603 604 605 606 607 |
# File 'lib/rubyXL/convenience_methods.rb', line 597 def change_row_border_color(row, direction, color = '000000') validate_workbook ensure_cell_exists(row) Color.validate_color(color) sheet_data.rows[row].style_index = @workbook.modify_border_color(get_row_style(row), direction, color) sheet_data[row].cells.each { |c| c.change_border_color(direction, color) unless c.nil? } end |
#change_row_fill(row_index = 0, rgb = 'ffffff') ⇒ Object
609 610 611 612 613 614 615 616 |
# File 'lib/rubyXL/convenience_methods.rb', line 609 def change_row_fill(row_index = 0, rgb = 'ffffff') validate_workbook ensure_cell_exists(row_index) Color.validate_color(rgb) sheet_data.rows[row_index].style_index = @workbook.modify_fill(get_row_style(row_index), rgb) sheet_data[row_index].cells.each { |c| c.change_fill(rgb) unless c.nil? } end |
#change_row_font(row_index, change_type, arg, font) ⇒ Object
Helper method to update the row styles array change_type - NAME or SIZE or COLOR etc main method to change font, called from each separate font mutator method
621 622 623 624 625 626 627 628 629 |
# File 'lib/rubyXL/convenience_methods.rb', line 621 def change_row_font(row_index, change_type, arg, font) validate_workbook ensure_cell_exists(row_index) xf = workbook.register_new_font(font, get_row_xf(row_index)) row = sheet_data[row_index] row.style_index = workbook.register_new_xf(xf) row.cells.each { |c| c.font_switch(change_type, arg) unless c.nil? } end |
#change_row_font_color(row = 0, font_color = '000000') ⇒ Object
645 646 647 648 649 650 651 |
# File 'lib/rubyXL/convenience_methods.rb', line 645 def change_row_font_color(row = 0, font_color = '000000') ensure_cell_exists(row) Color.validate_color(font_color) font = row_font(row).dup font.set_rgb_color(font_color) change_row_font(row, Worksheet::COLOR, font_color, font) end |
#change_row_font_name(row = 0, font_name = 'Verdana') ⇒ Object
631 632 633 634 635 636 |
# File 'lib/rubyXL/convenience_methods.rb', line 631 def change_row_font_name(row = 0, font_name = 'Verdana') ensure_cell_exists(row) font = row_font(row).dup font.set_name(font_name) change_row_font(row, Worksheet::NAME, font_name, font) end |
#change_row_font_size(row = 0, font_size = 10) ⇒ Object
638 639 640 641 642 643 |
# File 'lib/rubyXL/convenience_methods.rb', line 638 def change_row_font_size(row = 0, font_size=10) ensure_cell_exists(row) font = row_font(row).dup font.set_size(font_size) change_row_font(row, Worksheet::SIZE, font_size, font) end |
#change_row_height(row = 0, height = 10) ⇒ Object
681 682 683 684 685 686 687 688 |
# File 'lib/rubyXL/convenience_methods.rb', line 681 def change_row_height(row = 0, height = 10) validate_workbook ensure_cell_exists(row) c = sheet_data.rows[row] c.ht = height c.custom_height = true end |
#change_row_horizontal_alignment(row = 0, alignment = 'center') ⇒ Object
574 575 576 577 578 |
# File 'lib/rubyXL/convenience_methods.rb', line 574 def change_row_horizontal_alignment(row = 0, alignment = 'center') validate_workbook validate_nonnegative(row) change_row_alignment(row) { |a| a.horizontal = alignment } end |
#change_row_italics(row = 0, italicized = false) ⇒ Object
653 654 655 656 657 658 |
# File 'lib/rubyXL/convenience_methods.rb', line 653 def change_row_italics(row = 0, italicized = false) ensure_cell_exists(row) font = row_font(row).dup font.set_italic(italicized) change_row_font(row, Worksheet::ITALICS, italicized, font) end |
#change_row_strikethrough(row = 0, struckthrough = false) ⇒ Object
674 675 676 677 678 679 |
# File 'lib/rubyXL/convenience_methods.rb', line 674 def change_row_strikethrough(row = 0, struckthrough=false) ensure_cell_exists(row) font = row_font(row).dup font.set_strikethrough(struckthrough) change_row_font(row, Worksheet::STRIKETHROUGH, struckthrough, font) end |
#change_row_underline(row = 0, underlined = false) ⇒ Object
667 668 669 670 671 672 |
# File 'lib/rubyXL/convenience_methods.rb', line 667 def change_row_underline(row = 0, underlined=false) ensure_cell_exists(row) font = row_font(row).dup font.set_underline(underlined) change_row_font(row, Worksheet::UNDERLINE, underlined, font) end |
#change_row_vertical_alignment(row = 0, alignment = 'center') ⇒ Object
580 581 582 583 584 |
# File 'lib/rubyXL/convenience_methods.rb', line 580 def change_row_vertical_alignment(row = 0, alignment = 'center') validate_workbook validate_nonnegative(row) change_row_alignment(row) { |a| a.vertical = alignment } end |
#column_font(col) ⇒ Object
561 562 563 564 565 |
# File 'lib/rubyXL/convenience_methods.rb', line 561 def column_font(col) validate_workbook @workbook.fonts[@workbook.cell_xfs[get_cols_style_index(col)].font_id] end |
#delete_cell(row_index = 0, column_index = 0, shift = nil) ⇒ Object
by default, only sets cell to nil if :left is specified, method will shift row contents to the right of the deleted cell to the left if :up is specified, method will shift column contents below the deleted cell upward
245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 |
# File 'lib/rubyXL/convenience_methods.rb', line 245 def delete_cell(row_index = 0, column_index=0, shift=nil) validate_workbook validate_nonnegative(row_index) validate_nonnegative(column_index) row = sheet_data[row_index] old_cell = row && row[column_index] case shift when nil then row.cells[column_index] = nil if row when :left then row.delete_cell_shift_left(column_index) if row when :up then (row_index...(sheet_data.size - 1)).each { |index| c = sheet_data.rows[index].cells[column_index] = sheet_data.rows[index + 1].cells[column_index] c.row -= 1 if c.is_a?(Cell) } else raise 'invalid shift option' end return old_cell end |
#delete_column(column_index = 0) ⇒ Object
354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 |
# File 'lib/rubyXL/convenience_methods.rb', line 354 def delete_column(column_index = 0) validate_workbook validate_nonnegative(column_index) # Delete column sheet_data.rows.each { |row| row.cells.delete_at(column_index) } # Update column numbers for cells to the right of the deleted column sheet_data.rows.each_with_index { |row, row_index| row.cells.each_with_index { |c, ci| c.column = ci if c.is_a?(Cell) } } cols.each { |range| range.delete_column(column_index) } end |
#delete_row(row_index = 0) ⇒ Object
310 311 312 313 314 315 316 317 318 319 320 321 322 323 |
# File 'lib/rubyXL/convenience_methods.rb', line 310 def delete_row(row_index=0) validate_workbook validate_nonnegative(row_index) deleted = sheet_data.rows.delete_at(row_index) # Update row number of each cell row_index.upto(sheet_data.size - 1) { |index| row = sheet_data[index] row && row.cells.each{ |c| c.row -= 1 unless c.nil? } } return deleted end |
#get_col_style(column_index) ⇒ Object
Helper method to get the style index for a column
520 521 522 523 |
# File 'lib/rubyXL/convenience_methods.rb', line 520 def get_col_style(column_index) range = cols.locate_range(column_index) (range && range.style_index) || 0 end |
#get_cols_style_index(column_index) ⇒ Object
446 447 448 449 450 |
# File 'lib/rubyXL/convenience_methods.rb', line 446 def get_cols_style_index(column_index) validate_nonnegative(column_index) range = cols.locate_range(column_index) (range && range.style_index) || 0 end |
#get_column_alignment(col, type) ⇒ Object
567 568 569 570 571 572 |
# File 'lib/rubyXL/convenience_methods.rb', line 567 def get_column_alignment(col, type) validate_workbook xf = @workbook.cell_xfs[get_cols_style_index(col)] xf.alignment && xf.alignment.send(type) end |
#get_column_border(col, border_direction) ⇒ Object
545 546 547 548 549 550 551 |
# File 'lib/rubyXL/convenience_methods.rb', line 545 def get_column_border(col, border_direction) validate_workbook xf = @workbook.cell_xfs[get_cols_style_index(col)] border = @workbook.borders[xf.border_id] border && border.get_edge_style(border_direction) end |
#get_column_border_color(col, border_direction) ⇒ Object
553 554 555 556 557 558 559 |
# File 'lib/rubyXL/convenience_methods.rb', line 553 def get_column_border_color(col, border_direction) validate_workbook xf = @workbook.cell_xfs[get_cols_style_index(col)] border = @workbook.borders[xf.border_id] border && border.get_edge_color(border_direction) end |
#get_column_fill(col = 0) ⇒ Object
525 526 527 528 529 530 |
# File 'lib/rubyXL/convenience_methods.rb', line 525 def get_column_fill(col=0) validate_workbook validate_nonnegative(col) @workbook.get_fill_color(get_col_xf(col)) end |
#get_column_font_color(col = 0) ⇒ Object
462 463 464 465 |
# File 'lib/rubyXL/convenience_methods.rb', line 462 def get_column_font_color(col = 0) font = column_font(col) font && (font.get_rgb_color || '000000') end |
#get_column_font_name(col = 0) ⇒ Object
452 453 454 455 |
# File 'lib/rubyXL/convenience_methods.rb', line 452 def get_column_font_name(col = 0) font = column_font(col) font && font.get_name end |
#get_column_font_size(col = 0) ⇒ Object
457 458 459 460 |
# File 'lib/rubyXL/convenience_methods.rb', line 457 def get_column_font_size(col = 0) font = column_font(col) font && font.get_size end |
#get_column_width(column_index = 0) ⇒ Object
Get column width measured in number of digits, as per msdn.microsoft.com/en-us/library/documentformat.openxml.spreadsheet.column%28v=office.14%29.aspx
498 499 500 501 502 |
# File 'lib/rubyXL/convenience_methods.rb', line 498 def get_column_width(column_index = 0) width = get_column_width_raw(column_index) return RubyXL::ColumnRange::DEFAULT_WIDTH if width.nil? (width - (5.0 / RubyXL::Font::MAX_DIGIT_WIDTH)).round end |
#get_column_width_raw(column_index = 0) ⇒ Object
Get raw column width value as stored in the file
488 489 490 491 492 493 494 |
# File 'lib/rubyXL/convenience_methods.rb', line 488 def get_column_width_raw(column_index = 0) validate_workbook validate_nonnegative(column_index) range = cols.locate_range(column_index) range && range.width end |
#get_row_alignment(row, is_horizontal) ⇒ Object
435 436 437 438 439 440 441 442 443 444 |
# File 'lib/rubyXL/convenience_methods.rb', line 435 def get_row_alignment(row, is_horizontal) validate_workbook xf_obj = get_row_xf(row) return nil if xf_obj.alignment.nil? if is_horizontal then return xf_obj.alignment.horizontal else return xf_obj.alignment.vertical end end |
#get_row_border(row, border_direction) ⇒ Object
417 418 419 420 421 422 |
# File 'lib/rubyXL/convenience_methods.rb', line 417 def get_row_border(row, border_direction) validate_workbook border = @workbook.borders[get_row_xf(row).border_id] border && border.get_edge_style(border_direction) end |
#get_row_border_color(row, border_direction) ⇒ Object
424 425 426 427 428 429 |
# File 'lib/rubyXL/convenience_methods.rb', line 424 def get_row_border_color(row, border_direction) validate_workbook border = @workbook.borders[get_row_xf(row).border_id] border && border.get_edge_color(border_direction) end |
#get_row_fill(row = 0) ⇒ Object
376 377 378 |
# File 'lib/rubyXL/convenience_methods.rb', line 376 def get_row_fill(row = 0) (row = sheet_data.rows[row]) && row.get_fill_color end |
#get_row_font_color(row = 0) ⇒ Object
388 389 390 391 392 |
# File 'lib/rubyXL/convenience_methods.rb', line 388 def get_row_font_color(row = 0) font = row_font(row) color = font && font.color color && (color.rgb || '000000') end |
#get_row_font_name(row = 0) ⇒ Object
380 381 382 |
# File 'lib/rubyXL/convenience_methods.rb', line 380 def get_row_font_name(row = 0) (font = row_font(row)) && font.get_name end |
#get_row_font_size(row = 0) ⇒ Object
384 385 386 |
# File 'lib/rubyXL/convenience_methods.rb', line 384 def get_row_font_size(row = 0) (font = row_font(row)) && font.get_size end |
#get_row_height(row = 0) ⇒ Object
410 411 412 413 414 415 |
# File 'lib/rubyXL/convenience_methods.rb', line 410 def get_row_height(row = 0) validate_workbook validate_nonnegative(row) row = sheet_data.rows[row] row && row.ht || RubyXL::Row::DEFAULT_HEIGHT end |
#get_row_style(row_index) ⇒ Object
371 372 373 374 |
# File 'lib/rubyXL/convenience_methods.rb', line 371 def get_row_style(row_index) row = sheet_data.rows[row_index] (row && row.style_index) || 0 end |
#insert_cell(row = 0, col = 0, data = nil, formula = nil, shift = nil) ⇒ Object
222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 |
# File 'lib/rubyXL/convenience_methods.rb', line 222 def insert_cell(row = 0, col = 0, data = nil, formula = nil, shift = nil) validate_workbook ensure_cell_exists(row, col) case shift when nil then # No shifting at all when :right then sheet_data.rows[row].insert_cell_shift_right(nil, col) when :down then add_row(sheet_data.size, :cells => Array.new(sheet_data.rows[row].size)) (sheet_data.size - 1).downto(row+1) { |index| sheet_data.rows[index].cells[col] = sheet_data.rows[index-1].cells[col] } else raise 'invalid shift option' end return add_cell(row, col, data, formula) end |
#insert_column(column_index = 0) ⇒ Object
Inserts column at column_index
, pushes everything right, takes styles from column to left NOTE: use of this method will break formulas which reference cells which are being “pushed right”
327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 |
# File 'lib/rubyXL/convenience_methods.rb', line 327 def insert_column(column_index = 0) validate_workbook ensure_cell_exists(0, column_index) old_range = cols.get_range(column_index) #go through each cell in column sheet_data.rows.each_with_index { |row, row_index| old_cell = row[column_index] c = nil if old_cell && old_cell.style_index != 0 && old_range && old_range.style_index != old_cell.style_index then c = RubyXL::Cell.new(:style_index => old_cell.style_index, :worksheet => self, :row => row_index, :column => column_index, :datatype => RubyXL::DataType::SHARED_STRING) end row.insert_cell_shift_right(c, column_index) } cols.insert_column(column_index) # TODO: update column numbers end |
#insert_row(row_index = 0) ⇒ Object
Inserts row at row_index, pushes down, copies style from the row above (that’s what Excel 2013 does!) NOTE: use of this method will break formulas which reference cells which are being “pushed down”
272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 |
# File 'lib/rubyXL/convenience_methods.rb', line 272 def insert_row(row_index = 0) validate_workbook ensure_cell_exists(row_index) old_row = new_cells = nil if row_index > 0 then old_row = sheet_data.rows[row_index - 1] if old_row then new_cells = old_row.cells.collect { |c| if c.nil? then nil else nc = RubyXL::Cell.new(:style_index => c.style_index) nc.worksheet = self nc end } end end row0 = sheet_data.rows[0] new_cells ||= Array.new((row0 && row0.cells.size) || 0) sheet_data.rows.insert(row_index, nil) new_row = add_row(row_index, :cells => new_cells, :style_index => old_row && old_row.style_index) # Update row values for all rows below row_index.upto(sheet_data.rows.size - 1) { |r| row = sheet_data.rows[r] next if row.nil? row.cells.each_with_index { |cell, c| next if cell.nil? cell.r = RubyXL::Reference.new(r, c) } } return new_row end |
#is_column_bolded(col = 0) ⇒ Object
472 473 474 475 |
# File 'lib/rubyXL/convenience_methods.rb', line 472 def is_column_bolded(col = 0) font = column_font(col) font && font.is_bold end |
#is_column_italicized(col = 0) ⇒ Object
467 468 469 470 |
# File 'lib/rubyXL/convenience_methods.rb', line 467 def is_column_italicized(col = 0) font = column_font(col) font && font.is_italic end |
#is_column_struckthrough(col = 0) ⇒ Object
482 483 484 485 |
# File 'lib/rubyXL/convenience_methods.rb', line 482 def is_column_struckthrough(col = 0) font = column_font(col) font && font.is_strikethrough end |
#is_column_underlined(col = 0) ⇒ Object
477 478 479 480 |
# File 'lib/rubyXL/convenience_methods.rb', line 477 def is_column_underlined(col = 0) font = column_font(col) font && font.is_underlined end |
#is_row_bolded(row = 0) ⇒ Object
398 399 400 |
# File 'lib/rubyXL/convenience_methods.rb', line 398 def is_row_bolded(row = 0) (font = row_font(row)) && font.is_bold end |
#is_row_italicized(row = 0) ⇒ Object
394 395 396 |
# File 'lib/rubyXL/convenience_methods.rb', line 394 def is_row_italicized(row = 0) (font = row_font(row)) && font.is_italic end |
#is_row_struckthrough(row = 0) ⇒ Object
406 407 408 |
# File 'lib/rubyXL/convenience_methods.rb', line 406 def is_row_struckthrough(row = 0) (font = row_font(row)) && font.is_strikethrough end |
#is_row_underlined(row = 0) ⇒ Object
402 403 404 |
# File 'lib/rubyXL/convenience_methods.rb', line 402 def is_row_underlined(row = 0) (font = row_font(row)) && font.is_underlined end |
#merge_cells(start_row, start_col, end_row, end_col) ⇒ Object
Merges cells within a rectangular area
818 819 820 821 822 823 824 |
# File 'lib/rubyXL/convenience_methods.rb', line 818 def merge_cells(start_row, start_col, end_row, end_col) validate_workbook self.merged_cells ||= RubyXL::MergedCells.new # TODO: add validation to make sure ranges are not intersecting with existing ones merged_cells << RubyXL::MergedCell.new(:ref => RubyXL::Reference.new(start_row, end_row, start_col, end_col)) end |
#row_font(row) ⇒ Object
431 432 433 |
# File 'lib/rubyXL/convenience_methods.rb', line 431 def row_font(row) (row = sheet_data.rows[row]) && row.get_font end |