writeexcel 0.4.1 → 0.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.rdoc +7 -0
 - data/VERSION +1 -1
 - data/examples/chart_area.rb +5 -5
 - data/examples/chart_bar.rb +5 -5
 - data/examples/chart_column.rb +5 -5
 - data/examples/chart_line.rb +5 -5
 - data/examples/chart_pie.rb +5 -5
 - data/examples/chart_scatter.rb +5 -5
 - data/examples/chart_stock.rb +2 -2
 - data/lib/writeexcel/biffwriter.rb +1 -1
 - data/lib/writeexcel/chart.rb +73 -141
 - data/lib/writeexcel/charts/area.rb +9 -8
 - data/lib/writeexcel/charts/bar.rb +9 -10
 - data/lib/writeexcel/charts/column.rb +9 -10
 - data/lib/writeexcel/charts/external.rb +5 -1
 - data/lib/writeexcel/charts/line.rb +9 -8
 - data/lib/writeexcel/charts/pie.rb +9 -10
 - data/lib/writeexcel/charts/scatter.rb +9 -10
 - data/lib/writeexcel/charts/stock.rb +9 -8
 - data/lib/writeexcel/colors.rb +6 -1
 - data/lib/writeexcel/compatibility.rb +1 -9
 - data/lib/writeexcel/format.rb +6 -1
 - data/lib/writeexcel/formula.rb +6 -12
 - data/lib/writeexcel/helper.rb +22 -0
 - data/lib/writeexcel/storage_lite.rb +15 -18
 - data/lib/writeexcel/workbook.rb +21 -21
 - data/lib/writeexcel/worksheet.rb +16 -36
 - data/lib/writeexcel.rb +9 -11
 - data/test/test_60_chart_generic.rb +1 -1
 - data/test/test_61_chart_subclasses.rb +7 -7
 - data/test/test_62_chart_formats.rb +2 -2
 - data/test/test_63_chart_area_formats.rb +2 -2
 - data/test/test_example_match.rb +21 -21
 - data/test/test_format.rb +51 -51
 - data/test/test_formula.rb +1 -1
 - data/test/test_worksheet.rb +1 -1
 - data/writeexcel.gemspec +2 -2
 - data/writeexcel.rdoc +599 -2
 - metadata +3 -3
 
    
        data/test/test_formula.rb
    CHANGED
    
    
    
        data/test/test_worksheet.rb
    CHANGED
    
    | 
         @@ -12,7 +12,7 @@ class TC_Worksheet < Test::Unit::TestCase 
     | 
|
| 
       12 
12 
     | 
    
         
             
                @sheetname = 'test'
         
     | 
| 
       13 
13 
     | 
    
         
             
                @ws      = @workbook.add_worksheet(@sheetname, 0)
         
     | 
| 
       14 
14 
     | 
    
         
             
                @perldir = "#{PERL_OUTDIR}/"
         
     | 
| 
       15 
     | 
    
         
            -
                @format  = Format.new(:color=>"green")
         
     | 
| 
      
 15 
     | 
    
         
            +
                @format  = Writeexcel::Format.new(:color=>"green")
         
     | 
| 
       16 
16 
     | 
    
         
             
              end
         
     | 
| 
       17 
17 
     | 
    
         | 
| 
       18 
18 
     | 
    
         
             
              def teardown
         
     | 
    
        data/writeexcel.gemspec
    CHANGED
    
    | 
         @@ -5,11 +5,11 @@ 
     | 
|
| 
       5 
5 
     | 
    
         | 
| 
       6 
6 
     | 
    
         
             
            Gem::Specification.new do |s|
         
     | 
| 
       7 
7 
     | 
    
         
             
              s.name = %q{writeexcel}
         
     | 
| 
       8 
     | 
    
         
            -
              s.version = "0.4. 
     | 
| 
      
 8 
     | 
    
         
            +
              s.version = "0.4.2"
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
       10 
10 
     | 
    
         
             
              s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
         
     | 
| 
       11 
11 
     | 
    
         
             
              s.authors = ["Hideo NAKAMURA"]
         
     | 
| 
       12 
     | 
    
         
            -
              s.date = %q{2010- 
     | 
| 
      
 12 
     | 
    
         
            +
              s.date = %q{2010-05-20}
         
     | 
| 
       13 
13 
     | 
    
         
             
              s.description = %q{Multiple worksheets can be added to a workbook and formatting can be applied to cells. Text, numbers, formulas, hyperlinks and images can be written to the cells.}
         
     | 
| 
       14 
14 
     | 
    
         
             
              s.email = %q{cxn03651@msj.biglobe.ne.jp}
         
     | 
| 
       15 
15 
     | 
    
         
             
              s.extra_rdoc_files = [
         
     | 
    
        data/writeexcel.rdoc
    CHANGED
    
    | 
         @@ -635,12 +635,11 @@ DOSやWindowsであっても、ファイル名の区切りには'/'を使用す 
     | 
|
| 
       635 
635 
     | 
    
         
             
             worksheet.write_formula(0, 0, '=$B$3 + B4'  )
         
     | 
| 
       636 
636 
     | 
    
         
             
             worksheet.write_formula(1, 0, '=SIN(PI()/4)')
         
     | 
| 
       637 
637 
     | 
    
         
             
             worksheet.write_formula(2, 0, '=SUM(B1:B5)' )
         
     | 
| 
       638 
     | 
    
         
            -
             worksheet.write_formula('A4', '=IF(A3>1,"Yes", 
     | 
| 
      
 638 
     | 
    
         
            +
             worksheet.write_formula('A4', '=IF(A3>1,"Yes","No")'    )
         
     | 
| 
       639 
639 
     | 
    
         
             
             worksheet.write_formula('A5', '=AVERAGE(1, 2, 3, 4)'    )
         
     | 
| 
       640 
640 
     | 
    
         
             
             worksheet.write_formula('A6', '=DATEVALUE("1-Jan-2001")')
         
     | 
| 
       641 
641 
     | 
    
         | 
| 
       642 
642 
     | 
    
         | 
| 
       643 
     | 
    
         
            -
             
     | 
| 
       644 
643 
     | 
    
         
             
            == ページセットアップメソッド
         
     | 
| 
       645 
644 
     | 
    
         | 
| 
       646 
645 
     | 
    
         
             
            印刷されたときの書式設定ですね。ヘッダ・フッタやマージンなど。
         
     | 
| 
         @@ -783,3 +782,601 @@ DOSやWindowsであっても、ファイル名の区切りには'/'を使用す 
     | 
|
| 
       783 
782 
     | 
    
         
             
              format1 = workbook.add_format(font)            # フォントだけ設定
         
     | 
| 
       784 
783 
     | 
    
         
             
              format2 = workbook.add_format(font, shading)   # 両方を設定
         
     | 
| 
       785 
784 
     | 
    
         | 
| 
      
 785 
     | 
    
         
            +
            ===FORMATメソッド
         
     | 
| 
      
 786 
     | 
    
         
            +
             
     | 
| 
      
 787 
     | 
    
         
            +
            Formatクラスのメソッドの詳細は改めて説明がある。加えて、gem の examples
         
     | 
| 
      
 788 
     | 
    
         
            +
            ディレクトリの formats.rb を実行して得られる formats.xls には、ほとんど
         
     | 
| 
      
 789 
     | 
    
         
            +
            すべての書式設定例があるので見ていただきたい。
         
     | 
| 
      
 790 
     | 
    
         
            +
             
     | 
| 
      
 791 
     | 
    
         
            +
            以下のメソッドがあります。
         
     | 
| 
      
 792 
     | 
    
         
            +
             
     | 
| 
      
 793 
     | 
    
         
            +
              set_font
         
     | 
| 
      
 794 
     | 
    
         
            +
              set_size
         
     | 
| 
      
 795 
     | 
    
         
            +
              set_color
         
     | 
| 
      
 796 
     | 
    
         
            +
              set_bold
         
     | 
| 
      
 797 
     | 
    
         
            +
              set_italic
         
     | 
| 
      
 798 
     | 
    
         
            +
              set_underline
         
     | 
| 
      
 799 
     | 
    
         
            +
              set_font_strikeout
         
     | 
| 
      
 800 
     | 
    
         
            +
              set_font_script
         
     | 
| 
      
 801 
     | 
    
         
            +
              set_font_outline
         
     | 
| 
      
 802 
     | 
    
         
            +
              set_font_shadow
         
     | 
| 
      
 803 
     | 
    
         
            +
              set_num_format
         
     | 
| 
      
 804 
     | 
    
         
            +
              set_locked
         
     | 
| 
      
 805 
     | 
    
         
            +
              set_hidden
         
     | 
| 
      
 806 
     | 
    
         
            +
              set_align
         
     | 
| 
      
 807 
     | 
    
         
            +
              set_rotation
         
     | 
| 
      
 808 
     | 
    
         
            +
              set_text_wrap
         
     | 
| 
      
 809 
     | 
    
         
            +
              set_text_justlast
         
     | 
| 
      
 810 
     | 
    
         
            +
              set_center_across
         
     | 
| 
      
 811 
     | 
    
         
            +
              set_indent
         
     | 
| 
      
 812 
     | 
    
         
            +
              set_shrink
         
     | 
| 
      
 813 
     | 
    
         
            +
              set_pattern
         
     | 
| 
      
 814 
     | 
    
         
            +
              set_bg_color
         
     | 
| 
      
 815 
     | 
    
         
            +
              set_fg_color
         
     | 
| 
      
 816 
     | 
    
         
            +
              set_border
         
     | 
| 
      
 817 
     | 
    
         
            +
              set_bottom
         
     | 
| 
      
 818 
     | 
    
         
            +
              set_top
         
     | 
| 
      
 819 
     | 
    
         
            +
              set_left
         
     | 
| 
      
 820 
     | 
    
         
            +
              set_right
         
     | 
| 
      
 821 
     | 
    
         
            +
              set_border_color
         
     | 
| 
      
 822 
     | 
    
         
            +
              set_bottom_color
         
     | 
| 
      
 823 
     | 
    
         
            +
              set_top_color
         
     | 
| 
      
 824 
     | 
    
         
            +
              set_left_color
         
     | 
| 
      
 825 
     | 
    
         
            +
              set_right_color
         
     | 
| 
      
 826 
     | 
    
         
            +
             
     | 
| 
      
 827 
     | 
    
         
            +
            これらは、プロパティとして直接指定することもできます。例えば、
         
     | 
| 
      
 828 
     | 
    
         
            +
             
     | 
| 
      
 829 
     | 
    
         
            +
              format = workbook.add_format
         
     | 
| 
      
 830 
     | 
    
         
            +
              format.set_bold
         
     | 
| 
      
 831 
     | 
    
         
            +
             
     | 
| 
      
 832 
     | 
    
         
            +
            は、
         
     | 
| 
      
 833 
     | 
    
         
            +
             
     | 
| 
      
 834 
     | 
    
         
            +
              format = workbook.add_format(:bold => 1)
         
     | 
| 
      
 835 
     | 
    
         
            +
             
     | 
| 
      
 836 
     | 
    
         
            +
            と同じことになります。
         
     | 
| 
      
 837 
     | 
    
         
            +
             
     | 
| 
      
 838 
     | 
    
         
            +
            ===色の扱い
         
     | 
| 
      
 839 
     | 
    
         
            +
             
     | 
| 
      
 840 
     | 
    
         
            +
            エクセルは56色のカラーパレットを提供しています。WriteExcelでは、8から63までの
         
     | 
| 
      
 841 
     | 
    
         
            +
            パレットインデックスを通じてアクセスできます。このインデックスは、フォント、背景色、
         
     | 
| 
      
 842 
     | 
    
         
            +
            枠線などの色の設定に用いられます。
         
     | 
| 
      
 843 
     | 
    
         
            +
             
     | 
| 
      
 844 
     | 
    
         
            +
                format = workbook.add_format(
         
     | 
| 
      
 845 
     | 
    
         
            +
                              :color => 12, # index for blue
         
     | 
| 
      
 846 
     | 
    
         
            +
                              :font  => 'MS 明朝',
         
     | 
| 
      
 847 
     | 
    
         
            +
                              :size  => 12,
         
     | 
| 
      
 848 
     | 
    
         
            +
                              :bold  => 1
         
     | 
| 
      
 849 
     | 
    
         
            +
                            )
         
     | 
| 
      
 850 
     | 
    
         
            +
             
     | 
| 
      
 851 
     | 
    
         
            +
            よく用いられる色は、色の名前の文字列でも指定できます。文字列の大文字小文字は問いません。
         
     | 
| 
      
 852 
     | 
    
         
            +
             
     | 
| 
      
 853 
     | 
    
         
            +
                'black'    =>    8
         
     | 
| 
      
 854 
     | 
    
         
            +
                'blue'     =>   12
         
     | 
| 
      
 855 
     | 
    
         
            +
                'brown'    =>   16
         
     | 
| 
      
 856 
     | 
    
         
            +
                'cyan'     =>   15
         
     | 
| 
      
 857 
     | 
    
         
            +
                'gray'     =>   23
         
     | 
| 
      
 858 
     | 
    
         
            +
                'green'    =>   17
         
     | 
| 
      
 859 
     | 
    
         
            +
                'lime'     =>   11
         
     | 
| 
      
 860 
     | 
    
         
            +
                'magenta'  =>   14
         
     | 
| 
      
 861 
     | 
    
         
            +
                'navy'     =>   18
         
     | 
| 
      
 862 
     | 
    
         
            +
                'orange'   =>   53
         
     | 
| 
      
 863 
     | 
    
         
            +
                'pink'     =>   33
         
     | 
| 
      
 864 
     | 
    
         
            +
                'purple'   =>   20
         
     | 
| 
      
 865 
     | 
    
         
            +
                'red'      =>   10
         
     | 
| 
      
 866 
     | 
    
         
            +
                'silver'   =>   22
         
     | 
| 
      
 867 
     | 
    
         
            +
                'white'    =>    9
         
     | 
| 
      
 868 
     | 
    
         
            +
                'yellow'   =>   13
         
     | 
| 
      
 869 
     | 
    
         
            +
             
     | 
| 
      
 870 
     | 
    
         
            +
            使用例:
         
     | 
| 
      
 871 
     | 
    
         
            +
             
     | 
| 
      
 872 
     | 
    
         
            +
                font = workbook.add_format(:color => 'red')
         
     | 
| 
      
 873 
     | 
    
         
            +
             
     | 
| 
      
 874 
     | 
    
         
            +
            求める色が既定色にない場合は、Workbook#set_custom_colorによりRGB(red green blue)を指定
         
     | 
| 
      
 875 
     | 
    
         
            +
            してオーバーライドすることができます。
         
     | 
| 
      
 876 
     | 
    
         
            +
             
     | 
| 
      
 877 
     | 
    
         
            +
                ferrari = workbook.set_custom_color(40, 216, 12, 12)
         
     | 
| 
      
 878 
     | 
    
         
            +
             
     | 
| 
      
 879 
     | 
    
         
            +
                format  = workbook.add_format(
         
     | 
| 
      
 880 
     | 
    
         
            +
                              :bg_color => ferrari,
         
     | 
| 
      
 881 
     | 
    
         
            +
                              :pattern  => 1,
         
     | 
| 
      
 882 
     | 
    
         
            +
                              :border   => 1
         
     | 
| 
      
 883 
     | 
    
         
            +
                            )
         
     | 
| 
      
 884 
     | 
    
         
            +
             
     | 
| 
      
 885 
     | 
    
         
            +
                worksheet.write_blank('A1', format)
         
     | 
| 
      
 886 
     | 
    
         
            +
             
     | 
| 
      
 887 
     | 
    
         
            +
            以下のリンクが参考になるでしょう。
         
     | 
| 
      
 888 
     | 
    
         
            +
             
     | 
| 
      
 889 
     | 
    
         
            +
            エクセルのカラーパレットについて詳しく見る。
         
     | 
| 
      
 890 
     | 
    
         
            +
            http://www.mvps.org/dmcritchie/excel/colors.htm
         
     | 
| 
      
 891 
     | 
    
         
            +
             
     | 
| 
      
 892 
     | 
    
         
            +
            A decimal RGB chart: http://www.hypersolutions.org/pages/rgbdec.html
         
     | 
| 
      
 893 
     | 
    
         
            +
             
     | 
| 
      
 894 
     | 
    
         
            +
            A hex RGB chart: : http://www.hypersolutions.org/pages/rgbhex.html
         
     | 
| 
      
 895 
     | 
    
         
            +
             
     | 
| 
      
 896 
     | 
    
         
            +
            ===DATES AND TIME IN EXCEL
         
     | 
| 
      
 897 
     | 
    
         
            +
             
     | 
| 
      
 898 
     | 
    
         
            +
            エクセルでの日付・時刻について2つの重要なことがあります。
         
     | 
| 
      
 899 
     | 
    
         
            +
             
     | 
| 
      
 900 
     | 
    
         
            +
            1. エクセルの日付・時刻は正の実数形式である。
         
     | 
| 
      
 901 
     | 
    
         
            +
             
     | 
| 
      
 902 
     | 
    
         
            +
            2. WriteExcel は、Worksheet#write によって与えられた日付・時刻を表す文字列を
         
     | 
| 
      
 903 
     | 
    
         
            +
            自動的には日付・時刻データとして変換しない。
         
     | 
| 
      
 904 
     | 
    
         
            +
             
     | 
| 
      
 905 
     | 
    
         
            +
            この2点について、どのように求められる書式で日付・時刻として表示するのか、
         
     | 
| 
      
 906 
     | 
    
         
            +
            いくつかのサジェスチョンを以下に示します。
         
     | 
| 
      
 907 
     | 
    
         
            +
             
     | 
| 
      
 908 
     | 
    
         
            +
            ====エクセルの日付・時刻は数値と書式
         
     | 
| 
      
 909 
     | 
    
         
            +
             
     | 
| 
      
 910 
     | 
    
         
            +
            文字列をWorksheet#writeで書き込んだ場合、それはあくまで文字列です。
         
     | 
| 
      
 911 
     | 
    
         
            +
             
     | 
| 
      
 912 
     | 
    
         
            +
                worksheet.write('A1', '02/03/04')  # !! Writes a string not a date. !!
         
     | 
| 
      
 913 
     | 
    
         
            +
             
     | 
| 
      
 914 
     | 
    
         
            +
            エクセルでの日付・時刻にあたるのは実数です。
         
     | 
| 
      
 915 
     | 
    
         
            +
            "Jan 1 2001 12:30 AM" は、36892.521です。
         
     | 
| 
      
 916 
     | 
    
         
            +
             
     | 
| 
      
 917 
     | 
    
         
            +
            整数部分はエポックからの日数であり、小数部分は一日のうち経過した時間のパーセンテージ
         
     | 
| 
      
 918 
     | 
    
         
            +
            です。
         
     | 
| 
      
 919 
     | 
    
         
            +
            いくつか例を載せます。
         
     | 
| 
      
 920 
     | 
    
         
            +
             
     | 
| 
      
 921 
     | 
    
         
            +
                #!/usr/bin/ruby -w
         
     | 
| 
      
 922 
     | 
    
         
            +
             
     | 
| 
      
 923 
     | 
    
         
            +
                require 'writeexcel'
         
     | 
| 
      
 924 
     | 
    
         
            +
             
     | 
| 
      
 925 
     | 
    
         
            +
                workbook  = WriteExcel.new('date_examples.xls')
         
     | 
| 
      
 926 
     | 
    
         
            +
                worksheet = workbook.add_worksheet
         
     | 
| 
      
 927 
     | 
    
         
            +
             
     | 
| 
      
 928 
     | 
    
         
            +
                worksheet.set_column('A:A', 30)  # For extra visibility.
         
     | 
| 
      
 929 
     | 
    
         
            +
             
     | 
| 
      
 930 
     | 
    
         
            +
                number    = 39506.5
         
     | 
| 
      
 931 
     | 
    
         
            +
             
     | 
| 
      
 932 
     | 
    
         
            +
                worksheet.write('A1', number)            #     39506.5
         
     | 
| 
      
 933 
     | 
    
         
            +
             
     | 
| 
      
 934 
     | 
    
         
            +
                format2 = workbook.add_format(:num_format => 'dd/mm/yy')
         
     | 
| 
      
 935 
     | 
    
         
            +
                worksheet.write('A2', number , format2); #     28/02/08
         
     | 
| 
      
 936 
     | 
    
         
            +
             
     | 
| 
      
 937 
     | 
    
         
            +
                format3 = workbook.add_format(:num_format => 'mm/dd/yy')
         
     | 
| 
      
 938 
     | 
    
         
            +
                worksheet.write('A3', number , format3); #     02/28/08
         
     | 
| 
      
 939 
     | 
    
         
            +
             
     | 
| 
      
 940 
     | 
    
         
            +
                format4 = workbook.add_format(:num_format => 'd-m-yyyy')
         
     | 
| 
      
 941 
     | 
    
         
            +
                worksheet.write('A4', .number , format4) #     28-2-2008
         
     | 
| 
      
 942 
     | 
    
         
            +
             
     | 
| 
      
 943 
     | 
    
         
            +
                format5 = workbook.add_format(:num_format => 'dd/mm/yy hh:mm')
         
     | 
| 
      
 944 
     | 
    
         
            +
                worksheet.write('A5', number , format5)  #     28/02/08 12:00
         
     | 
| 
      
 945 
     | 
    
         
            +
             
     | 
| 
      
 946 
     | 
    
         
            +
                format6 = workbook.add_format(:num_format => 'd mmm yyyy')
         
     | 
| 
      
 947 
     | 
    
         
            +
                worksheet.write('A6', number , format6)  #     28 Feb 2008
         
     | 
| 
      
 948 
     | 
    
         
            +
             
     | 
| 
      
 949 
     | 
    
         
            +
                format7 = workbook.add_format(:num_format => 'mmm d yyyy hh:mm AM/PM')
         
     | 
| 
      
 950 
     | 
    
         
            +
                worksheet.write('A7', number , format7)  #     Feb 28 2008 12:00 PM
         
     | 
| 
      
 951 
     | 
    
         
            +
             
     | 
| 
      
 952 
     | 
    
         
            +
            ====WriteExcel は日付・時刻風の文字列を自動的に日付・時刻には変換しない
         
     | 
| 
      
 953 
     | 
    
         
            +
             
     | 
| 
      
 954 
     | 
    
         
            +
            WriteExcel は、日付・時刻風の文字列から日付・時刻の実数への変換を自動的には
         
     | 
| 
      
 955 
     | 
    
         
            +
            行いません。多くの書式があるため、また、解釈ミスを行う可能性があるためです。
         
     | 
| 
      
 956 
     | 
    
         
            +
             
     | 
| 
      
 957 
     | 
    
         
            +
            例えば、02/03/04 は 2002年3月4日/2004年2月3日/2004年3月2日いずれか判別できません。
         
     | 
| 
      
 958 
     | 
    
         
            +
             
     | 
| 
      
 959 
     | 
    
         
            +
            ですから、日付を扱うためには本来であれば数値に変換し、書式を指定して渡す必要があります。
         
     | 
| 
      
 960 
     | 
    
         
            +
             
     | 
| 
      
 961 
     | 
    
         
            +
            しかし、数値に変換するのも大変ですから、ISO8601の形式(yyyy-mm=ddThh:mm:ss.sss)の文字列で
         
     | 
| 
      
 962 
     | 
    
         
            +
            表し、Worksheet#write_date_timeで書き込む方法が用意されています。
         
     | 
| 
      
 963 
     | 
    
         
            +
             
     | 
| 
      
 964 
     | 
    
         
            +
                worksheet.write_date_time('A2', '2001-01-01T12:20', format)
         
     | 
| 
      
 965 
     | 
    
         
            +
             
     | 
| 
      
 966 
     | 
    
         
            +
            詳しくはWorksheet#write_date_time のドキュメントを参照ください。
         
     | 
| 
      
 967 
     | 
    
         
            +
             
     | 
| 
      
 968 
     | 
    
         
            +
                #!/usr/bin/ruby -w
         
     | 
| 
      
 969 
     | 
    
         
            +
             
     | 
| 
      
 970 
     | 
    
         
            +
                require 'writeexcel'
         
     | 
| 
      
 971 
     | 
    
         
            +
             
     | 
| 
      
 972 
     | 
    
         
            +
                workbook    = WriteExcel.new('example.xls')
         
     | 
| 
      
 973 
     | 
    
         
            +
                worksheet   = workbook.add_worksheet
         
     | 
| 
      
 974 
     | 
    
         
            +
             
     | 
| 
      
 975 
     | 
    
         
            +
                # Set the default format for dates.
         
     | 
| 
      
 976 
     | 
    
         
            +
                date_format = workbook.add_format(:num_format => 'mmm d yyyy')
         
     | 
| 
      
 977 
     | 
    
         
            +
             
     | 
| 
      
 978 
     | 
    
         
            +
                # Increase column width to improve visibility of data.
         
     | 
| 
      
 979 
     | 
    
         
            +
                worksheet.set_column('A:C', 20)
         
     | 
| 
      
 980 
     | 
    
         
            +
             
     | 
| 
      
 981 
     | 
    
         
            +
                data = [
         
     | 
| 
      
 982 
     | 
    
         
            +
                  %w(Item    Cost    Date),
         
     | 
| 
      
 983 
     | 
    
         
            +
                  %w(Book    10      1/9/2007),
         
     | 
| 
      
 984 
     | 
    
         
            +
                  %w(Beer    4       12/9/2007),
         
     | 
| 
      
 985 
     | 
    
         
            +
                  %w(Bed     500     5/10/2007)
         
     | 
| 
      
 986 
     | 
    
         
            +
                ]
         
     | 
| 
      
 987 
     | 
    
         
            +
             
     | 
| 
      
 988 
     | 
    
         
            +
                # Simulate reading from a data source.
         
     | 
| 
      
 989 
     | 
    
         
            +
                row = 0
         
     | 
| 
      
 990 
     | 
    
         
            +
             
     | 
| 
      
 991 
     | 
    
         
            +
                data.each do |row_data|
         
     | 
| 
      
 992 
     | 
    
         
            +
                  col  = 0
         
     | 
| 
      
 993 
     | 
    
         
            +
                  row_data.each do |item|
         
     | 
| 
      
 994 
     | 
    
         
            +
             
     | 
| 
      
 995 
     | 
    
         
            +
                    # Match dates in the following formats: d/m/yy, d/m/yyyy
         
     | 
| 
      
 996 
     | 
    
         
            +
                    if item =~ %r[^(\d{1,2})/(\d{1,2})/(\d{4})$]
         
     | 
| 
      
 997 
     | 
    
         
            +
                      # Change to the date format required by write_date_time().
         
     | 
| 
      
 998 
     | 
    
         
            +
                      date = sprintf "%4d-%02d-%02dT", $3, $2, $1
         
     | 
| 
      
 999 
     | 
    
         
            +
                      worksheet.write_date_time(row, col, date, date_format)
         
     | 
| 
      
 1000 
     | 
    
         
            +
                    else
         
     | 
| 
      
 1001 
     | 
    
         
            +
                      # Just plain data
         
     | 
| 
      
 1002 
     | 
    
         
            +
                      worksheet.write(row, col, item)
         
     | 
| 
      
 1003 
     | 
    
         
            +
                    end
         
     | 
| 
      
 1004 
     | 
    
         
            +
                    col += 1
         
     | 
| 
      
 1005 
     | 
    
         
            +
                  end
         
     | 
| 
      
 1006 
     | 
    
         
            +
                  row += 1
         
     | 
| 
      
 1007 
     | 
    
         
            +
                end
         
     | 
| 
      
 1008 
     | 
    
         
            +
             
     | 
| 
      
 1009 
     | 
    
         
            +
            ===エクセルにおけるグループとアウトライン
         
     | 
| 
      
 1010 
     | 
    
         
            +
             
     | 
| 
      
 1011 
     | 
    
         
            +
            エクセルでは、行や桁をグループ化し、ワンクリックで表示・非表示を行うことができます。
         
     | 
| 
      
 1012 
     | 
    
         
            +
            この昨日はアウトラインと関係があります。
         
     | 
| 
      
 1013 
     | 
    
         
            +
             
     | 
| 
      
 1014 
     | 
    
         
            +
                        ------------------------------------------
         
     | 
| 
      
 1015 
     | 
    
         
            +
                 1 2 3 |   |   A   |   B   |   C   |   D   |  ...
         
     | 
| 
      
 1016 
     | 
    
         
            +
                        ------------------------------------------
         
     | 
| 
      
 1017 
     | 
    
         
            +
                  _    | 1 |   A   |       |       |       |  ...
         
     | 
| 
      
 1018 
     | 
    
         
            +
                 |  _  | 2 |   B   |       |       |       |  ...
         
     | 
| 
      
 1019 
     | 
    
         
            +
                 | |   | 3 |  (C)  |       |       |       |  ...
         
     | 
| 
      
 1020 
     | 
    
         
            +
                 | |   | 4 |  (D)  |       |       |       |  ...
         
     | 
| 
      
 1021 
     | 
    
         
            +
                 | -   | 5 |   E   |       |       |       |  ...
         
     | 
| 
      
 1022 
     | 
    
         
            +
                 |  _  | 6 |   F   |       |       |       |  ...
         
     | 
| 
      
 1023 
     | 
    
         
            +
                 | |   | 7 |  (G)  |       |       |       |  ...
         
     | 
| 
      
 1024 
     | 
    
         
            +
                 | |   | 8 |  (H)  |       |       |       |  ...
         
     | 
| 
      
 1025 
     | 
    
         
            +
                 | -   | 9 |   I   |       |       |       |  ...
         
     | 
| 
      
 1026 
     | 
    
         
            +
                 -     | . |  ...  |  ...  |  ...  |  ...  |  ...
         
     | 
| 
      
 1027 
     | 
    
         
            +
             
     | 
| 
      
 1028 
     | 
    
         
            +
            レベル2のマイナス記号をクリックすると次のようになります。
         
     | 
| 
      
 1029 
     | 
    
         
            +
             
     | 
| 
      
 1030 
     | 
    
         
            +
                        ------------------------------------------
         
     | 
| 
      
 1031 
     | 
    
         
            +
                 1 2 3 |   |   A   |   B   |   C   |   D   |  ...
         
     | 
| 
      
 1032 
     | 
    
         
            +
                        ------------------------------------------
         
     | 
| 
      
 1033 
     | 
    
         
            +
                  _    | 1 |   A   |       |       |       |  ...
         
     | 
| 
      
 1034 
     | 
    
         
            +
                 |     | 2 |   B   |       |       |       |  ...
         
     | 
| 
      
 1035 
     | 
    
         
            +
                 | +   | 5 |   E   |       |       |       |  ...
         
     | 
| 
      
 1036 
     | 
    
         
            +
                 |     | 6 |   F   |       |       |       |  ...
         
     | 
| 
      
 1037 
     | 
    
         
            +
                 | +   | 9 |   I   |       |       |       |  ...
         
     | 
| 
      
 1038 
     | 
    
         
            +
                 -     | . |  ...  |  ...  |  ...  |  ...  |  ...
         
     | 
| 
      
 1039 
     | 
    
         
            +
             
     | 
| 
      
 1040 
     | 
    
         
            +
            さらにレベル1のマイナス記号をクリックすると次のようになります。
         
     | 
| 
      
 1041 
     | 
    
         
            +
             
     | 
| 
      
 1042 
     | 
    
         
            +
                        ------------------------------------------
         
     | 
| 
      
 1043 
     | 
    
         
            +
                 1 2 3 |   |   A   |   B   |   C   |   D   |  ...
         
     | 
| 
      
 1044 
     | 
    
         
            +
                        ------------------------------------------
         
     | 
| 
      
 1045 
     | 
    
         
            +
                       | 1 |   A   |       |       |       |  ...
         
     | 
| 
      
 1046 
     | 
    
         
            +
                 +     | . |  ...  |  ...  |  ...  |  ...  |  ...
         
     | 
| 
      
 1047 
     | 
    
         
            +
             
     | 
| 
      
 1048 
     | 
    
         
            +
            WriteExcel におけるグループ化は、Worksheet#set_row や Worksheet#set_column
         
     | 
| 
      
 1049 
     | 
    
         
            +
            を通じて行うことができます。
         
     | 
| 
      
 1050 
     | 
    
         
            +
             
     | 
| 
      
 1051 
     | 
    
         
            +
                set_row(row, height, format, hidden, level, collapsed)
         
     | 
| 
      
 1052 
     | 
    
         
            +
                set_column(first_col, last_col, width, format, hidden, level, collapsed)
         
     | 
| 
      
 1053 
     | 
    
         
            +
             
     | 
| 
      
 1054 
     | 
    
         
            +
            次の例では、行1と行2、桁BからGまでににアウトラインレベル1を設定しています。
         
     | 
| 
      
 1055 
     | 
    
         
            +
            hidden や format が nil の時は、デフォルトの値が用いられます。
         
     | 
| 
      
 1056 
     | 
    
         
            +
             
     | 
| 
      
 1057 
     | 
    
         
            +
                worksheet.set_row(1, nil, nil, 0, 1)
         
     | 
| 
      
 1058 
     | 
    
         
            +
                worksheet.set_row(2, nil, nil, 0, 1)
         
     | 
| 
      
 1059 
     | 
    
         
            +
                worksheet.set_column('B:G', nil, nil, 0, 1)
         
     | 
| 
      
 1060 
     | 
    
         
            +
             
     | 
| 
      
 1061 
     | 
    
         
            +
            エクセルではアウトラインレベル7まで用いることができます。ですから、パラメータ level は
         
     | 
| 
      
 1062 
     | 
    
         
            +
            0以上7以下でなければなりません。
         
     | 
| 
      
 1063 
     | 
    
         
            +
             
     | 
| 
      
 1064 
     | 
    
         
            +
            行、桁は hidden フラグをセットすることで折りたたむことができます。その場合、
         
     | 
| 
      
 1065 
     | 
    
         
            +
            フラグをセットした行、桁は+記号が付いて折りたたまれます。
         
     | 
| 
      
 1066 
     | 
    
         
            +
             
     | 
| 
      
 1067 
     | 
    
         
            +
                worksheet.set_row(1, nil, nil, 1, 1)
         
     | 
| 
      
 1068 
     | 
    
         
            +
                worksheet.set_row(2, nil, nil, 1, 1)
         
     | 
| 
      
 1069 
     | 
    
         
            +
                worksheet.set_row(3, nil, nil, 0, 0, 1)         # Collapsed flag.
         
     | 
| 
      
 1070 
     | 
    
         
            +
             
     | 
| 
      
 1071 
     | 
    
         
            +
                worksheet.set_column('B:G', nil, nil, 1, 1)
         
     | 
| 
      
 1072 
     | 
    
         
            +
                worksheet.set_column('H:H', nil, nil, 0, 0, 1)  # Collapsed flag.
         
     | 
| 
      
 1073 
     | 
    
         
            +
             
     | 
| 
      
 1074 
     | 
    
         
            +
            Note: collapsed フラグをセットすることは、OpenOffice.orgやGnumeric との互換性上
         
     | 
| 
      
 1075 
     | 
    
         
            +
            特に重要です。
         
     | 
| 
      
 1076 
     | 
    
         
            +
             
     | 
| 
      
 1077 
     | 
    
         
            +
            examplesディレクトリの outline.rb 及び outline_collapsed.rb をご覧ください。
         
     | 
| 
      
 1078 
     | 
    
         
            +
             
     | 
| 
      
 1079 
     | 
    
         
            +
            ===エクセルのデータ検証(データ-入力規則)
         
     | 
| 
      
 1080 
     | 
    
         
            +
             
     | 
| 
      
 1081 
     | 
    
         
            +
            データ検証は、ユーザのセルへの入力データを制限し、ヘルプやワーニングを
         
     | 
| 
      
 1082 
     | 
    
         
            +
            表示するエクセルの機能です。ドロップダウンリストで入力値を制限することもできます。
         
     | 
| 
      
 1083 
     | 
    
         
            +
             
     | 
| 
      
 1084 
     | 
    
         
            +
            一定の範囲内の整数に入力値を制限する際に、必要な値についてメッセージを表示し、
         
     | 
| 
      
 1085 
     | 
    
         
            +
            範囲外の時はワーニングを表示するなどの使い方が典型的な使用例でしょう。
         
     | 
| 
      
 1086 
     | 
    
         
            +
            WriteExcel では次のようにします。
         
     | 
| 
      
 1087 
     | 
    
         
            +
             
     | 
| 
      
 1088 
     | 
    
         
            +
                worksheet.data_validation('B3',
         
     | 
| 
      
 1089 
     | 
    
         
            +
                    {
         
     | 
| 
      
 1090 
     | 
    
         
            +
                        :validate        => 'integer',
         
     | 
| 
      
 1091 
     | 
    
         
            +
                        :criteria        => 'between',
         
     | 
| 
      
 1092 
     | 
    
         
            +
                        :minimum         => 1,
         
     | 
| 
      
 1093 
     | 
    
         
            +
                        :maximum         => 100,
         
     | 
| 
      
 1094 
     | 
    
         
            +
                        :input_title     => '整数値を入力:',
         
     | 
| 
      
 1095 
     | 
    
         
            +
                        :input_message   => '1以上100以下',
         
     | 
| 
      
 1096 
     | 
    
         
            +
                        :error_message   => 'すいません、もう一度お願いします。'
         
     | 
| 
      
 1097 
     | 
    
         
            +
                    })
         
     | 
| 
      
 1098 
     | 
    
         
            +
             
     | 
| 
      
 1099 
     | 
    
         
            +
            データ検証についてさらなる情報は、以下を参照のこと。
         
     | 
| 
      
 1100 
     | 
    
         
            +
            "Description and examples of data validation in Excel":
         
     | 
| 
      
 1101 
     | 
    
         
            +
               http://support.microsoft.com/kb/211485.
         
     | 
| 
      
 1102 
     | 
    
         
            +
             
     | 
| 
      
 1103 
     | 
    
         
            +
            ===エクセルの数式と関数
         
     | 
| 
      
 1104 
     | 
    
         
            +
             
     | 
| 
      
 1105 
     | 
    
         
            +
            ====注意
         
     | 
| 
      
 1106 
     | 
    
         
            +
             
     | 
| 
      
 1107 
     | 
    
         
            +
            数式及び関数の実装に際して、いくつか未解決の問題があります。
         
     | 
| 
      
 1108 
     | 
    
         
            +
             
     | 
| 
      
 1109 
     | 
    
         
            +
              1.数式を書き込むのは、文字列を書き込むのと比べ非常に遅いです。
         
     | 
| 
      
 1110 
     | 
    
         
            +
              2.関数内で{1;2;3}といった配列形式の定数は使えません。
         
     | 
| 
      
 1111 
     | 
    
         
            +
              3.単項演算子の「-」(マイナス)は、「-1*」と解釈されます。例:-SIN(PI()) => -1*SIN(PI())
         
     | 
| 
      
 1112 
     | 
    
         
            +
              4.演算子前後に空白は入れないでください。
         
     | 
| 
      
 1113 
     | 
    
         
            +
              5.名前付きレンジは未サポートです。
         
     | 
| 
      
 1114 
     | 
    
         
            +
              6.配列数式は未サポートです。
         
     | 
| 
      
 1115 
     | 
    
         
            +
             
     | 
| 
      
 1116 
     | 
    
         
            +
            ====イントロダクション
         
     | 
| 
      
 1117 
     | 
    
         
            +
             
     | 
| 
      
 1118 
     | 
    
         
            +
            数式は、等号で始まる文字列です。
         
     | 
| 
      
 1119 
     | 
    
         
            +
             
     | 
| 
      
 1120 
     | 
    
         
            +
                '=A1+B1'
         
     | 
| 
      
 1121 
     | 
    
         
            +
                '=AVERAGE(1, 2, 3)'
         
     | 
| 
      
 1122 
     | 
    
         
            +
             
     | 
| 
      
 1123 
     | 
    
         
            +
            数式には、数値、文字列、真偽値、セル参照、セル範囲、関数を含むことができます。
         
     | 
| 
      
 1124 
     | 
    
         
            +
            名前付き範囲はまだサポートされていません。
         
     | 
| 
      
 1125 
     | 
    
         
            +
            数式はエクセルで記載するときと同様、セルや関数は大文字にする必要があります。
         
     | 
| 
      
 1126 
     | 
    
         
            +
             
     | 
| 
      
 1127 
     | 
    
         
            +
            セルはA1形式で表します。桁はAからIVまで(0から255まで)。行は1から
         
     | 
| 
      
 1128 
     | 
    
         
            +
            65536までです。
         
     | 
| 
      
 1129 
     | 
    
         
            +
             
     | 
| 
      
 1130 
     | 
    
         
            +
            「$」による絶対指定もサポートしています。
         
     | 
| 
      
 1131 
     | 
    
         
            +
             
     | 
| 
      
 1132 
     | 
    
         
            +
                '=A1'   # Column and row are relative
         
     | 
| 
      
 1133 
     | 
    
         
            +
                '=$A1'  # Column is absolute and row is relative
         
     | 
| 
      
 1134 
     | 
    
         
            +
                '=A$1'  # Column is relative and row is absolute
         
     | 
| 
      
 1135 
     | 
    
         
            +
                '=$A$1' # Column and row are absolute
         
     | 
| 
      
 1136 
     | 
    
         
            +
             
     | 
| 
      
 1137 
     | 
    
         
            +
            数式では他のシートのセルを参照することもできます。
         
     | 
| 
      
 1138 
     | 
    
         
            +
             
     | 
| 
      
 1139 
     | 
    
         
            +
                '=Sheet2!A1'
         
     | 
| 
      
 1140 
     | 
    
         
            +
                '=Sheet2!A1:A5'
         
     | 
| 
      
 1141 
     | 
    
         
            +
                '=Sheet2:Sheet3!A1'
         
     | 
| 
      
 1142 
     | 
    
         
            +
                '=Sheet2:Sheet3!A1:A5'
         
     | 
| 
      
 1143 
     | 
    
         
            +
                q{='Test Data'!A1}
         
     | 
| 
      
 1144 
     | 
    
         
            +
                q{='Test Data1:Test Data2'!A1}
         
     | 
| 
      
 1145 
     | 
    
         
            +
             
     | 
| 
      
 1146 
     | 
    
         
            +
            シート参照とセル参照は「!」で区切られます。ワークシート名に空白やコンマ、括弧
         
     | 
| 
      
 1147 
     | 
    
         
            +
            が含まれる場合、シングルクオートで囲う必要があります(上記例の末尾2例参照)。
         
     | 
| 
      
 1148 
     | 
    
         
            +
            他のワークブックに含まれるシートを参照することはできません。
         
     | 
| 
      
 1149 
     | 
    
         
            +
             
     | 
| 
      
 1150 
     | 
    
         
            +
            以下にエクセルの数式で使うことができる演算子を示します。
         
     | 
| 
      
 1151 
     | 
    
         
            +
            ほとんど Ruby と同様ですが、異なるものには注記してあります。
         
     | 
| 
      
 1152 
     | 
    
         
            +
                Arithmetic operators:
         
     | 
| 
      
 1153 
     | 
    
         
            +
                =====================
         
     | 
| 
      
 1154 
     | 
    
         
            +
                Operator  Meaning                   Example
         
     | 
| 
      
 1155 
     | 
    
         
            +
                   +      Addition                  1+2
         
     | 
| 
      
 1156 
     | 
    
         
            +
                   -      Subtraction               2-1
         
     | 
| 
      
 1157 
     | 
    
         
            +
                   *      Multiplication            2*3
         
     | 
| 
      
 1158 
     | 
    
         
            +
                   /      Division                  1/4
         
     | 
| 
      
 1159 
     | 
    
         
            +
                   ^      Exponentiation            2^3      # べき乗
         
     | 
| 
      
 1160 
     | 
    
         
            +
                   -      Unary minus               -(1+2)   # -1*(1+2)を解釈される。
         
     | 
| 
      
 1161 
     | 
    
         
            +
                   %      Percent (Not modulus)     13%      # パーセント。サポートしていない。
         
     | 
| 
      
 1162 
     | 
    
         
            +
             
     | 
| 
      
 1163 
     | 
    
         
            +
                Comparison operators:
         
     | 
| 
      
 1164 
     | 
    
         
            +
                =====================
         
     | 
| 
      
 1165 
     | 
    
         
            +
                Operator  Meaning                   Example
         
     | 
| 
      
 1166 
     | 
    
         
            +
                    =     Equal to                  A1 =  B1 # ==
         
     | 
| 
      
 1167 
     | 
    
         
            +
                    <>    Not equal to              A1 <> B1 # !=
         
     | 
| 
      
 1168 
     | 
    
         
            +
                    >     Greater than              A1 >  B1
         
     | 
| 
      
 1169 
     | 
    
         
            +
                    <     Less than                 A1 <  B1
         
     | 
| 
      
 1170 
     | 
    
         
            +
                    >=    Greater than or equal to  A1 >= B1
         
     | 
| 
      
 1171 
     | 
    
         
            +
                    <=    Less than or equal to     A1 <= B1
         
     | 
| 
      
 1172 
     | 
    
         
            +
             
     | 
| 
      
 1173 
     | 
    
         
            +
                String operator:
         
     | 
| 
      
 1174 
     | 
    
         
            +
                ================
         
     | 
| 
      
 1175 
     | 
    
         
            +
                Operator  Meaning                   Example
         
     | 
| 
      
 1176 
     | 
    
         
            +
                    &     Concatenation             "Hello " & "World!" # 文字列の連結。
         
     | 
| 
      
 1177 
     | 
    
         
            +
             
     | 
| 
      
 1178 
     | 
    
         
            +
                Reference operators:
         
     | 
| 
      
 1179 
     | 
    
         
            +
                ====================
         
     | 
| 
      
 1180 
     | 
    
         
            +
                Operator  Meaning                   Example
         
     | 
| 
      
 1181 
     | 
    
         
            +
                    :     Range operator            A1:A4
         
     | 
| 
      
 1182 
     | 
    
         
            +
                    ,     Union operator            SUM(1, 2+2, B3)
         
     | 
| 
      
 1183 
     | 
    
         
            +
             
     | 
| 
      
 1184 
     | 
    
         
            +
            The range and comma operators can have different symbols in non-English
         
     | 
| 
      
 1185 
     | 
    
         
            +
            versions of Excel. These will be supported in a later version of WriteExcel.
         
     | 
| 
      
 1186 
     | 
    
         
            +
            European users of Excel take note:
         
     | 
| 
      
 1187 
     | 
    
         
            +
             
     | 
| 
      
 1188 
     | 
    
         
            +
                worksheet.write('A1', '=SUM(1; 2; 3)')  # Wrong!!
         
     | 
| 
      
 1189 
     | 
    
         
            +
                worksheet.write('A1', '=SUM(1, 2, 3)')  # Okay
         
     | 
| 
      
 1190 
     | 
    
         
            +
             
     | 
| 
      
 1191 
     | 
    
         
            +
            以下にはExcel5及びWriteExcelでサポートされている関数を示します。
         
     | 
| 
      
 1192 
     | 
    
         
            +
             
     | 
| 
      
 1193 
     | 
    
         
            +
                ABS           DB            INDIRECT      NORMINV       SLN
         
     | 
| 
      
 1194 
     | 
    
         
            +
                ACOS          DCOUNT        INFO          NORMSDIST     SLOPE
         
     | 
| 
      
 1195 
     | 
    
         
            +
                ACOSH         DCOUNTA       INT           NORMSINV      SMALL
         
     | 
| 
      
 1196 
     | 
    
         
            +
                ADDRESS       DDB           INTERCEPT     NOT           SQRT
         
     | 
| 
      
 1197 
     | 
    
         
            +
                AND           DEGREES       IPMT          NOW           STANDARDIZE
         
     | 
| 
      
 1198 
     | 
    
         
            +
                AREAS         DEVSQ         IRR           NPER          STDEV
         
     | 
| 
      
 1199 
     | 
    
         
            +
                ASIN          DGET          ISBLANK       NPV           STDEVP
         
     | 
| 
      
 1200 
     | 
    
         
            +
                ASINH         DMAX          ISERR         ODD           STEYX
         
     | 
| 
      
 1201 
     | 
    
         
            +
                ATAN          DMIN          ISERROR       OFFSET        SUBSTITUTE
         
     | 
| 
      
 1202 
     | 
    
         
            +
                ATAN2         DOLLAR        ISLOGICAL     OR            SUBTOTAL
         
     | 
| 
      
 1203 
     | 
    
         
            +
                ATANH         DPRODUCT      ISNA          PEARSON       SUM
         
     | 
| 
      
 1204 
     | 
    
         
            +
                AVEDEV        DSTDEV        ISNONTEXT     PERCENTILE    SUMIF
         
     | 
| 
      
 1205 
     | 
    
         
            +
                AVERAGE       DSTDEVP       ISNUMBER      PERCENTRANK   SUMPRODUCT
         
     | 
| 
      
 1206 
     | 
    
         
            +
                BETADIST      DSUM          ISREF         PERMUT        SUMSQ
         
     | 
| 
      
 1207 
     | 
    
         
            +
                BETAINV       DVAR          ISTEXT        PI            SUMX2MY2
         
     | 
| 
      
 1208 
     | 
    
         
            +
                BINOMDIST     DVARP         KURT          PMT           SUMX2PY2
         
     | 
| 
      
 1209 
     | 
    
         
            +
                CALL          ERROR.TYPE    LARGE         POISSON       SUMXMY2
         
     | 
| 
      
 1210 
     | 
    
         
            +
                CEILING       EVEN          LEFT          POWER         SYD
         
     | 
| 
      
 1211 
     | 
    
         
            +
                CELL          EXACT         LEN           PPMT          T
         
     | 
| 
      
 1212 
     | 
    
         
            +
                CHAR          EXP           LINEST        PROB          TAN
         
     | 
| 
      
 1213 
     | 
    
         
            +
                CHIDIST       EXPONDIST     LN            PRODUCT       TANH
         
     | 
| 
      
 1214 
     | 
    
         
            +
                CHIINV        FACT          LOG           PROPER        TDIST
         
     | 
| 
      
 1215 
     | 
    
         
            +
                CHITEST       FALSE         LOG10         PV            TEXT
         
     | 
| 
      
 1216 
     | 
    
         
            +
                CHOOSE        FDIST         LOGEST        QUARTILE      TIME
         
     | 
| 
      
 1217 
     | 
    
         
            +
                CLEAN         FIND          LOGINV        RADIANS       TIMEVALUE
         
     | 
| 
      
 1218 
     | 
    
         
            +
                CODE          FINV          LOGNORMDIST   RAND          TINV
         
     | 
| 
      
 1219 
     | 
    
         
            +
                COLUMN        FISHER        LOOKUP        RANK          TODAY
         
     | 
| 
      
 1220 
     | 
    
         
            +
                COLUMNS       FISHERINV     LOWER         RATE          TRANSPOSE
         
     | 
| 
      
 1221 
     | 
    
         
            +
                COMBIN        FIXED         MATCH         REGISTER.ID   TREND
         
     | 
| 
      
 1222 
     | 
    
         
            +
                CONCATENATE   FLOOR         MAX           REPLACE       TRIM
         
     | 
| 
      
 1223 
     | 
    
         
            +
                CONFIDENCE    FORECAST      MDETERM       REPT          TRIMMEAN
         
     | 
| 
      
 1224 
     | 
    
         
            +
                CORREL        FREQUENCY     MEDIAN        RIGHT         TRUE
         
     | 
| 
      
 1225 
     | 
    
         
            +
                COS           FTEST         MID           ROMAN         TRUNC
         
     | 
| 
      
 1226 
     | 
    
         
            +
                COSH          FV            MIN           ROUND         TTEST
         
     | 
| 
      
 1227 
     | 
    
         
            +
                COUNT         GAMMADIST     MINUTE        ROUNDDOWN     TYPE
         
     | 
| 
      
 1228 
     | 
    
         
            +
                COUNTA        GAMMAINV      MINVERSE      ROUNDUP       UPPER
         
     | 
| 
      
 1229 
     | 
    
         
            +
                COUNTBLANK    GAMMALN       MIRR          ROW           VALUE
         
     | 
| 
      
 1230 
     | 
    
         
            +
                COUNTIF       GEOMEAN       MMULT         ROWS          VAR
         
     | 
| 
      
 1231 
     | 
    
         
            +
                COVAR         GROWTH        MOD           RSQ           VARP
         
     | 
| 
      
 1232 
     | 
    
         
            +
                CRITBINOM     HARMEAN       MODE          SEARCH        VDB
         
     | 
| 
      
 1233 
     | 
    
         
            +
                DATE          HLOOKUP       MONTH         SECOND        VLOOKUP
         
     | 
| 
      
 1234 
     | 
    
         
            +
                DATEVALUE     HOUR          N             SIGN          WEEKDAY
         
     | 
| 
      
 1235 
     | 
    
         
            +
                DAVERAGE      HYPGEOMDIST   NA            SIN           WEIBULL
         
     | 
| 
      
 1236 
     | 
    
         
            +
                DAY           IF            NEGBINOMDIST  SINH          YEAR
         
     | 
| 
      
 1237 
     | 
    
         
            +
                DAYS360       INDEX         NORMDIST      SKEW          ZTEST
         
     | 
| 
      
 1238 
     | 
    
         
            +
             
     | 
| 
      
 1239 
     | 
    
         
            +
            上記数式や関数についての文法はエクセルのヘルプなどを参照ください。
         
     | 
| 
      
 1240 
     | 
    
         
            +
             
     | 
| 
      
 1241 
     | 
    
         
            +
            WriteExcel で数式がうまく機能しない場合、以下を確認ください。
         
     | 
| 
      
 1242 
     | 
    
         
            +
             
     | 
| 
      
 1243 
     | 
    
         
            +
             1.エクセルやGnumeric, OpenOffice.orgでその数式が動くこと。
         
     | 
| 
      
 1244 
     | 
    
         
            +
             2.注意の項で示した制限に該当しないこと
         
     | 
| 
      
 1245 
     | 
    
         
            +
             3.セル参照や関数名が大文字で記述されていること
         
     | 
| 
      
 1246 
     | 
    
         
            +
             4.範囲にはコロンが使われていること A1:A4.
         
     | 
| 
      
 1247 
     | 
    
         
            +
             5.引数区切りにはコンマが使われていること SUM(1,2,3).
         
     | 
| 
      
 1248 
     | 
    
         
            +
             6.上記で示した関数であること
         
     | 
| 
      
 1249 
     | 
    
         
            +
             
     | 
| 
      
 1250 
     | 
    
         
            +
            上記を満たしていて、なおかつ問題がある場合は、
         
     | 
| 
      
 1251 
     | 
    
         
            +
            cxn03651@msj.biglobe.ne.jp にお知らせください。
         
     | 
| 
      
 1252 
     | 
    
         
            +
             
     | 
| 
      
 1253 
     | 
    
         
            +
            ====数式を使う際のパフォーマンス改善
         
     | 
| 
      
 1254 
     | 
    
         
            +
             
     | 
| 
      
 1255 
     | 
    
         
            +
            WriteExcel でたくさんの数式を書き込む場合、とても時間がかかります。
         
     | 
| 
      
 1256 
     | 
    
         
            +
            これは、現在の実装ではそれぞれの数式ごとに解釈されるためです。
         
     | 
| 
      
 1257 
     | 
    
         
            +
             
     | 
| 
      
 1258 
     | 
    
         
            +
            しかしながら、以下のように同じような式を書き込んでいるのであれば改善策は
         
     | 
| 
      
 1259 
     | 
    
         
            +
            あります。
         
     | 
| 
      
 1260 
     | 
    
         
            +
             
     | 
| 
      
 1261 
     | 
    
         
            +
                worksheet.write_formula('B1',    '=A1 * 3 + 50',    format)
         
     | 
| 
      
 1262 
     | 
    
         
            +
                worksheet.write_formula('B2',    '=A2 * 3 + 50',    format)
         
     | 
| 
      
 1263 
     | 
    
         
            +
                ...
         
     | 
| 
      
 1264 
     | 
    
         
            +
                ...
         
     | 
| 
      
 1265 
     | 
    
         
            +
                worksheet.write_formula('B99',   '=A999 * 3 + 50',  format)
         
     | 
| 
      
 1266 
     | 
    
         
            +
                worksheet.write_formula('B1000', '=A1000 * 3 + 50', format)
         
     | 
| 
      
 1267 
     | 
    
         
            +
             
     | 
| 
      
 1268 
     | 
    
         
            +
            この例では、セル参照がA1からA1000まで順に変化しています。
         
     | 
| 
      
 1269 
     | 
    
         
            +
            こういうときは、Wordsheet#store_formulaとWorksheet#repeat_formulaを使って、
         
     | 
| 
      
 1270 
     | 
    
         
            +
            一度解釈したものを再利用することができます。
         
     | 
| 
      
 1271 
     | 
    
         
            +
             
     | 
| 
      
 1272 
     | 
    
         
            +
                formula = worksheet.store_formula('=A1 * 3 + 50')
         
     | 
| 
      
 1273 
     | 
    
         
            +
             
     | 
| 
      
 1274 
     | 
    
         
            +
                (0...1000).each do |row|
         
     | 
| 
      
 1275 
     | 
    
         
            +
                  worksheet.repeat_formula(row, 1, formula, format, 'A1', 'A' + (row +1).to_s)
         
     | 
| 
      
 1276 
     | 
    
         
            +
                end
         
     | 
| 
      
 1277 
     | 
    
         
            +
             
     | 
| 
      
 1278 
     | 
    
         
            +
            とあるマシン上では、これで10倍早くなりました。
         
     | 
| 
      
 1279 
     | 
    
         
            +
             
     | 
| 
      
 1280 
     | 
    
         
            +
            ===チャート
         
     | 
| 
      
 1281 
     | 
    
         
            +
             
     | 
| 
      
 1282 
     | 
    
         
            +
            ====概要(チャート)
         
     | 
| 
      
 1283 
     | 
    
         
            +
             
     | 
| 
      
 1284 
     | 
    
         
            +
            WriteExcelでチャートを含むエクセルファイルを作る例です。
         
     | 
| 
      
 1285 
     | 
    
         
            +
             
     | 
| 
      
 1286 
     | 
    
         
            +
                #!/usr/bin/ruby -w
         
     | 
| 
      
 1287 
     | 
    
         
            +
             
     | 
| 
      
 1288 
     | 
    
         
            +
                require 'writeexcel'
         
     | 
| 
      
 1289 
     | 
    
         
            +
             
     | 
| 
      
 1290 
     | 
    
         
            +
                workbook  = WriteExcel.new('chart.xls')
         
     | 
| 
      
 1291 
     | 
    
         
            +
                worksheet = workbook.add_worksheet
         
     | 
| 
      
 1292 
     | 
    
         
            +
             
     | 
| 
      
 1293 
     | 
    
         
            +
                chart     = workbook.add_chart(:type => 'Chart::Column')
         
     | 
| 
      
 1294 
     | 
    
         
            +
             
     | 
| 
      
 1295 
     | 
    
         
            +
                # Configure the chart.
         
     | 
| 
      
 1296 
     | 
    
         
            +
                chart.add_series(
         
     | 
| 
      
 1297 
     | 
    
         
            +
                  :categories => '=Sheet1!$A$2:$A$7',
         
     | 
| 
      
 1298 
     | 
    
         
            +
                  :values     => '=Sheet1!$B$2:$B$7'
         
     | 
| 
      
 1299 
     | 
    
         
            +
                )
         
     | 
| 
      
 1300 
     | 
    
         
            +
             
     | 
| 
      
 1301 
     | 
    
         
            +
                # Add the data to the worksheet the chart refers to.
         
     | 
| 
      
 1302 
     | 
    
         
            +
                data = [
         
     | 
| 
      
 1303 
     | 
    
         
            +
                   [ 'Category', 2, 3, 4, 5, 6, 7 ],
         
     | 
| 
      
 1304 
     | 
    
         
            +
                   [ 'Value',    1, 4, 5, 2, 1, 5 ]
         
     | 
| 
      
 1305 
     | 
    
         
            +
                ]
         
     | 
| 
      
 1306 
     | 
    
         
            +
             
     | 
| 
      
 1307 
     | 
    
         
            +
                worksheet.write('A1', data)
         
     | 
| 
      
 1308 
     | 
    
         
            +
             
     | 
| 
      
 1309 
     | 
    
         
            +
                workbook.close
         
     | 
| 
      
 1310 
     | 
    
         
            +
             
     | 
| 
      
 1311 
     | 
    
         
            +
            ====説明(チャート)
         
     | 
| 
      
 1312 
     | 
    
         
            +
             
     | 
| 
      
 1313 
     | 
    
         
            +
            チャートを使う場合、チャートのタイプを指定してWorkbook#add_chartを呼びます。
         
     | 
| 
      
 1314 
     | 
    
         
            +
             
     | 
| 
      
 1315 
     | 
    
         
            +
               chart = workbook.add_chart(:type => 'Chart::Column')
         
     | 
| 
      
 1316 
     | 
    
         
            +
             
     | 
| 
      
 1317 
     | 
    
         
            +
            現在サポートされているのは、次の5つ。
         
     | 
| 
      
 1318 
     | 
    
         
            +
             
     | 
| 
      
 1319 
     | 
    
         
            +
               * 'Chart::Column': Creates a column style (histogram) chart. See Column.
         
     | 
| 
      
 1320 
     | 
    
         
            +
               * 'Chart::Bar': Creates a Bar style (transposed histogram) chart. See Bar.
         
     | 
| 
      
 1321 
     | 
    
         
            +
               * 'Chart::Line': Creates a Line style chart. See Line.
         
     | 
| 
      
 1322 
     | 
    
         
            +
               * 'Chart::Area': Creates an Area (filled line) style chart. See Area.
         
     | 
| 
      
 1323 
     | 
    
         
            +
               * 'Chart::Scatter': Creates an Scatter style chart. See Scatter.
         
     | 
| 
      
 1324 
     | 
    
         
            +
               * 'Chart::Stock': Creates an Stock style chart. See Stock.
         
     | 
| 
      
 1325 
     | 
    
         
            +
             
     | 
| 
      
 1326 
     | 
    
         
            +
            More chart types will be supported in time. See the "TODO" section.
         
     | 
| 
      
 1327 
     | 
    
         
            +
             
     | 
| 
      
 1328 
     | 
    
         
            +
            === チャート名とリンク
         
     | 
| 
      
 1329 
     | 
    
         
            +
             
     | 
| 
      
 1330 
     | 
    
         
            +
            Chart#add_series, Chart#set_x_axis, Chart#set_y_axis, Chart#set_title メソッドは
         
     | 
| 
      
 1331 
     | 
    
         
            +
            methods all
         
     | 
| 
      
 1332 
     | 
    
         
            +
            support a name property. In general these names can be either a static
         
     | 
| 
      
 1333 
     | 
    
         
            +
            string or a link to a worksheet cell. If you choose to use the name_formula
         
     | 
| 
      
 1334 
     | 
    
         
            +
            property to specify a link then you should also the name property.
         
     | 
| 
      
 1335 
     | 
    
         
            +
            This isn't strictly required by Excel but some third party applications
         
     | 
| 
      
 1336 
     | 
    
         
            +
            expect it to be present.
         
     | 
| 
      
 1337 
     | 
    
         
            +
             
     | 
| 
      
 1338 
     | 
    
         
            +
                chartl.set_title(
         
     | 
| 
      
 1339 
     | 
    
         
            +
                  :name          => 'Year End Results',
         
     | 
| 
      
 1340 
     | 
    
         
            +
                  :name_formula  => '=Sheet1!$C$1'
         
     | 
| 
      
 1341 
     | 
    
         
            +
                )
         
     | 
| 
      
 1342 
     | 
    
         
            +
             
     | 
| 
      
 1343 
     | 
    
         
            +
            These links should be used sparingly since they aren't commonly
         
     | 
| 
      
 1344 
     | 
    
         
            +
            used in Excel charts.
         
     | 
| 
      
 1345 
     | 
    
         
            +
             
     | 
| 
      
 1346 
     | 
    
         
            +
            === Chart names and Unicode
         
     | 
| 
      
 1347 
     | 
    
         
            +
             
     | 
| 
      
 1348 
     | 
    
         
            +
            The add_series()), set_x_axis(), set_y_axis() and set_title() methods all
         
     | 
| 
      
 1349 
     | 
    
         
            +
            support a name property. These names can be UTF8 strings.
         
     | 
| 
      
 1350 
     | 
    
         
            +
             
     | 
| 
      
 1351 
     | 
    
         
            +
            This methodology is explained in the "UNICODE IN EXCEL" section of WriteExcel
         
     | 
| 
      
 1352 
     | 
    
         
            +
            but is semi-deprecated. If you are using Unicode the easiest option is to
         
     | 
| 
      
 1353 
     | 
    
         
            +
            just use UTF8.
         
     | 
| 
      
 1354 
     | 
    
         
            +
             
     | 
| 
      
 1355 
     | 
    
         
            +
            === TODO(Chart)
         
     | 
| 
      
 1356 
     | 
    
         
            +
             
     | 
| 
      
 1357 
     | 
    
         
            +
            Charts in WriteExcel are a work in progress. More chart types and
         
     | 
| 
      
 1358 
     | 
    
         
            +
            features will be added in time. Please be patient. Even a small feature
         
     | 
| 
      
 1359 
     | 
    
         
            +
            can take a week or more to implement, test and document.
         
     | 
| 
      
 1360 
     | 
    
         
            +
             
     | 
| 
      
 1361 
     | 
    
         
            +
            Features that are on the TODO list and will be added are:
         
     | 
| 
      
 1362 
     | 
    
         
            +
             
     | 
| 
      
 1363 
     | 
    
         
            +
                * Additional chart types. Stock, Pie and Scatter charts are next in line.
         
     | 
| 
      
 1364 
     | 
    
         
            +
                  Send an email if you are interested in other types and they will be
         
     | 
| 
      
 1365 
     | 
    
         
            +
                  added to the queue.
         
     | 
| 
      
 1366 
     | 
    
         
            +
                * Colours and formatting options. For now you will have to make do
         
     | 
| 
      
 1367 
     | 
    
         
            +
                  with the default Excel colours and formats.
         
     | 
| 
      
 1368 
     | 
    
         
            +
                * Axis controls, gridlines.
         
     | 
| 
      
 1369 
     | 
    
         
            +
                * Embedded data in charts for third party application support.
         
     | 
| 
      
 1370 
     | 
    
         
            +
             
     | 
| 
      
 1371 
     | 
    
         
            +
            == KNOWN ISSUES(Chart)
         
     | 
| 
      
 1372 
     | 
    
         
            +
             
     | 
| 
      
 1373 
     | 
    
         
            +
                * Currently charts don't contain embedded data from which the charts
         
     | 
| 
      
 1374 
     | 
    
         
            +
                  can be rendered. Excel and most other third party applications ignore
         
     | 
| 
      
 1375 
     | 
    
         
            +
                  this and read the data via the links that have been specified. However,
         
     | 
| 
      
 1376 
     | 
    
         
            +
                  some applications may complain or not render charts correctly. The
         
     | 
| 
      
 1377 
     | 
    
         
            +
                  preview option in Mac OS X is an known example. This will be fixed
         
     | 
| 
      
 1378 
     | 
    
         
            +
                  in a later release.
         
     | 
| 
      
 1379 
     | 
    
         
            +
                * When there are several charts with titles set in a workbook some of
         
     | 
| 
      
 1380 
     | 
    
         
            +
                  the titles may display at a font size of 10 instead of the default
         
     | 
| 
      
 1381 
     | 
    
         
            +
                  12 until another chart with the title set is viewed.
         
     | 
| 
      
 1382 
     | 
    
         
            +
             
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version 
     | 
|
| 
       5 
5 
     | 
    
         
             
              segments: 
         
     | 
| 
       6 
6 
     | 
    
         
             
              - 0
         
     | 
| 
       7 
7 
     | 
    
         
             
              - 4
         
     | 
| 
       8 
     | 
    
         
            -
              -  
     | 
| 
       9 
     | 
    
         
            -
              version: 0.4. 
     | 
| 
      
 8 
     | 
    
         
            +
              - 2
         
     | 
| 
      
 9 
     | 
    
         
            +
              version: 0.4.2
         
     | 
| 
       10 
10 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       11 
11 
     | 
    
         
             
            authors: 
         
     | 
| 
       12 
12 
     | 
    
         
             
            - Hideo NAKAMURA
         
     | 
| 
         @@ -14,7 +14,7 @@ autorequire: 
     | 
|
| 
       14 
14 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       15 
15 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       16 
16 
     | 
    
         | 
| 
       17 
     | 
    
         
            -
            date: 2010- 
     | 
| 
      
 17 
     | 
    
         
            +
            date: 2010-05-20 00:00:00 +09:00
         
     | 
| 
       18 
18 
     | 
    
         
             
            default_executable: 
         
     | 
| 
       19 
19 
     | 
    
         
             
            dependencies: []
         
     | 
| 
       20 
20 
     | 
    
         |