writeexcel 0.1.0 → 0.3.0
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 +26 -31
- data/examples/a_simple.rb +42 -42
- data/examples/{autofilters.rb → autofilter.rb} +264 -266
- data/examples/bigfile.rb +29 -0
- data/examples/chart_area.rb +120 -0
- data/examples/chart_bar.rb +119 -0
- data/examples/chart_column.rb +119 -0
- data/examples/chart_line.rb +119 -0
- data/examples/chart_pie.rb +107 -0
- data/examples/chart_scatter.rb +120 -0
- data/examples/chart_stock.rb +147 -0
- data/examples/copyformat.rb +51 -51
- data/examples/data_validate.rb +278 -278
- data/examples/date_time.rb +86 -86
- data/examples/defined_name.rb +31 -0
- data/examples/demo.rb +120 -118
- data/examples/diag_border.rb +35 -35
- data/examples/formats.rb +489 -489
- data/examples/header.rb +136 -136
- data/examples/hidden.rb +28 -28
- data/examples/hyperlink.rb +42 -42
- data/examples/images.rb +52 -52
- data/examples/merge1.rb +39 -39
- data/examples/merge2.rb +44 -44
- data/examples/merge3.rb +65 -65
- data/examples/merge4.rb +82 -82
- data/examples/merge5.rb +79 -79
- data/examples/properties.rb +33 -0
- data/examples/properties_jp.rb +32 -0
- data/examples/protection.rb +46 -46
- data/examples/regions.rb +52 -52
- data/examples/repeat.rb +42 -42
- data/examples/stats.rb +75 -75
- data/examples/stocks.rb +80 -80
- data/examples/tab_colors.rb +30 -30
- data/examples/write_arrays.rb +82 -0
- data/lib/writeexcel.rb +1134 -18
- data/lib/writeexcel/biffwriter.rb +273 -260
- data/lib/writeexcel/chart.rb +2306 -217
- data/lib/writeexcel/charts/area.rb +152 -0
- data/lib/writeexcel/charts/bar.rb +177 -0
- data/lib/writeexcel/charts/column.rb +156 -0
- data/lib/writeexcel/charts/external.rb +61 -0
- data/lib/writeexcel/charts/line.rb +152 -0
- data/lib/writeexcel/charts/pie.rb +169 -0
- data/lib/writeexcel/charts/scatter.rb +192 -0
- data/lib/writeexcel/charts/stock.rb +211 -0
- data/lib/writeexcel/excelformulaparser.rb +208 -195
- data/lib/writeexcel/format.rb +1697 -1108
- data/lib/writeexcel/formula.rb +1050 -986
- data/lib/writeexcel/olewriter.rb +322 -322
- data/lib/writeexcel/properties.rb +251 -250
- data/lib/writeexcel/storage_lite.rb +968 -0
- data/lib/writeexcel/workbook.rb +3294 -2630
- data/lib/writeexcel/worksheet.rb +9012 -6377
- data/test/excelfile/Chart1.xls +0 -0
- data/test/excelfile/Chart2.xls +0 -0
- data/test/excelfile/Chart3.xls +0 -0
- data/test/excelfile/Chart4.xls +0 -0
- data/test/excelfile/Chart5.xls +0 -0
- data/test/perl_output/Chart1.xls.data +0 -0
- data/test/perl_output/Chart2.xls.data +0 -0
- data/test/perl_output/Chart3.xls.data +0 -0
- data/test/perl_output/Chart4.xls.data +0 -0
- data/test/perl_output/Chart5.xls.data +0 -0
- data/test/perl_output/a_simple.xls +0 -0
- data/test/perl_output/autofilter.xls +0 -0
- data/test/perl_output/chart_area.xls +0 -0
- data/test/perl_output/chart_bar.xls +0 -0
- data/test/perl_output/chart_column.xls +0 -0
- data/test/perl_output/chart_line.xls +0 -0
- data/test/perl_output/data_validate.xls +0 -0
- data/test/perl_output/date_time.xls +0 -0
- data/test/perl_output/demo.xls +0 -0
- data/test/perl_output/demo101.bin +0 -0
- data/test/perl_output/demo201.bin +0 -0
- data/test/perl_output/demo301.bin +0 -0
- data/test/perl_output/demo401.bin +0 -0
- data/test/perl_output/demo501.bin +0 -0
- data/test/perl_output/diag_border.xls +0 -0
- data/test/perl_output/headers.xls +0 -0
- data/test/perl_output/hyperlink.xls +0 -0
- data/test/perl_output/images.xls +0 -0
- data/test/perl_output/merge1.xls +0 -0
- data/test/perl_output/merge2.xls +0 -0
- data/test/perl_output/merge3.xls +0 -0
- data/test/perl_output/merge4.xls +0 -0
- data/test/perl_output/merge5.xls +0 -0
- data/test/perl_output/protection.xls +0 -0
- data/test/perl_output/regions.xls +0 -0
- data/test/perl_output/stats.xls +0 -0
- data/test/perl_output/stocks.xls +0 -0
- data/test/perl_output/tab_colors.xls +0 -0
- data/test/perl_output/unicode_cyrillic.xls +0 -0
- data/test/perl_output/workbook1.xls +0 -0
- data/test/perl_output/workbook2.xls +0 -0
- data/test/tc_all.rb +32 -31
- data/test/tc_biff.rb +104 -104
- data/test/tc_chart.rb +22 -22
- data/test/tc_example_match.rb +1944 -1280
- data/test/tc_format.rb +1254 -1267
- data/test/tc_formula.rb +63 -63
- data/test/tc_ole.rb +110 -110
- data/test/tc_storage_lite.rb +149 -0
- data/test/tc_workbook.rb +140 -115
- data/test/tc_worksheet.rb +115 -115
- data/test/test_00_IEEE_double.rb +14 -14
- data/test/test_01_add_worksheet.rb +12 -12
- data/test/test_02_merge_formats.rb +58 -58
- data/test/test_04_dimensions.rb +397 -397
- data/test/test_05_rows.rb +182 -182
- data/test/test_06_extsst.rb +80 -80
- data/test/test_11_date_time.rb +484 -484
- data/test/test_12_date_only.rb +506 -506
- data/test/test_13_date_seconds.rb +486 -486
- data/test/test_21_escher.rb +642 -629
- data/test/test_22_mso_drawing_group.rb +750 -739
- data/test/test_23_note.rb +78 -78
- data/test/test_24_txo.rb +80 -80
- data/test/test_25_position_object.rb +82 -0
- data/test/test_26_autofilter.rb +327 -327
- data/test/test_27_autofilter.rb +144 -144
- data/test/test_28_autofilter.rb +174 -174
- data/test/test_29_process_jpg.rb +681 -131
- data/test/test_30_validation_dval.rb +82 -82
- data/test/test_31_validation_dv_strings.rb +131 -131
- data/test/test_32_validation_dv_formula.rb +211 -211
- data/test/test_40_property_types.rb +191 -191
- data/test/test_41_properties.rb +238 -238
- data/test/test_42_set_properties.rb +442 -419
- data/test/test_50_name_stored.rb +305 -0
- data/test/test_51_name_print_area.rb +363 -0
- data/test/test_52_name_print_titles.rb +460 -0
- data/test/test_53_autofilter.rb +209 -0
- data/test/test_60_chart_generic.rb +576 -0
- data/test/test_61_chart_subclasses.rb +97 -0
- data/test/test_62_chart_formats.rb +270 -0
- data/test/test_63_chart_area_formats.rb +647 -0
- data/test/test_chartex.rb +35 -0
- data/test/ts_all.rb +46 -34
- data/writeexcel.gemspec +18 -0
- data/writeexcel.rdoc +583 -0
- metadata +162 -108
@@ -0,0 +1,35 @@
|
|
1
|
+
$LOAD_PATH.unshift "#{File.dirname(__FILE__)}/../lib"
|
2
|
+
$LOAD_PATH.unshift "#{File.dirname(__FILE__)}/../charts"
|
3
|
+
|
4
|
+
require "test/unit"
|
5
|
+
require 'writeexcel'
|
6
|
+
require 'chartex'
|
7
|
+
|
8
|
+
class TestChartex < Test::Unit::TestCase
|
9
|
+
TEST_DIR = File.expand_path(File.dirname(__FILE__))
|
10
|
+
PERL_OUTDIR = File.join(TEST_DIR, 'perl_output')
|
11
|
+
EXCEL_OUTDIR = File.join(TEST_DIR, 'excelfile')
|
12
|
+
|
13
|
+
def setup
|
14
|
+
@chartex = Chartex.new
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_set_file
|
18
|
+
filename = 'filename'
|
19
|
+
@chartex.set_file(filename)
|
20
|
+
assert_equal(filename, @chartex.file)
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_get_workbook
|
24
|
+
files = %w(1 2 3 4 5).collect { |i| "#{EXCEL_OUTDIR}/Chart#{i}.xls" }
|
25
|
+
datas = %w(1 2 3 4 5).collect { |i| "#{PERL_OUTDIR}/Chart#{i}.xls.data" }
|
26
|
+
|
27
|
+
(0...files.size).each do |i|
|
28
|
+
@chartex.set_file(files[i])
|
29
|
+
workbook = @chartex.get_workbook
|
30
|
+
assert(workbook.kind_of?(OLEStorageLitePPS))
|
31
|
+
expected = File.open(datas[i], 'rb') { |f| f.read }
|
32
|
+
assert_equal(expected, workbook.data, "#{files[i]} failed.")
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
data/test/ts_all.rb
CHANGED
@@ -1,34 +1,46 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
require "
|
7
|
-
require "
|
8
|
-
require "
|
9
|
-
require "
|
10
|
-
require
|
11
|
-
require "
|
12
|
-
require '
|
13
|
-
require
|
14
|
-
require '
|
15
|
-
require '
|
16
|
-
require '
|
17
|
-
require '
|
18
|
-
require '
|
19
|
-
require '
|
20
|
-
require '
|
21
|
-
require '
|
22
|
-
require '
|
23
|
-
require '
|
24
|
-
require '
|
25
|
-
require '
|
26
|
-
require '
|
27
|
-
require '
|
28
|
-
require '
|
29
|
-
require '
|
30
|
-
require '
|
31
|
-
require '
|
32
|
-
require '
|
33
|
-
require '
|
34
|
-
require '
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
|
3
|
+
$LOAD_PATH.unshift(Dir.pwd)
|
4
|
+
$LOAD_PATH.unshift(Dir.pwd + "/test")
|
5
|
+
|
6
|
+
require "tc_biff"
|
7
|
+
require "tc_ole"
|
8
|
+
require "tc_workbook"
|
9
|
+
require "tc_worksheet"
|
10
|
+
require "tc_format"
|
11
|
+
require "tc_formula"
|
12
|
+
require 'tc_chart'
|
13
|
+
require "test_00_IEEE_double"
|
14
|
+
require 'test_01_add_worksheet'
|
15
|
+
require 'test_02_merge_formats'
|
16
|
+
require 'test_04_dimensions'
|
17
|
+
require 'test_05_rows'
|
18
|
+
require 'test_06_extsst'
|
19
|
+
require 'test_11_date_time'
|
20
|
+
require 'test_12_date_only'
|
21
|
+
require 'test_13_date_seconds'
|
22
|
+
require 'test_21_escher'
|
23
|
+
require 'test_22_mso_drawing_group'
|
24
|
+
require 'test_23_note'
|
25
|
+
require 'test_24_txo'
|
26
|
+
require 'test_25_position_object'
|
27
|
+
require 'test_26_autofilter'
|
28
|
+
require 'test_27_autofilter'
|
29
|
+
require 'test_28_autofilter'
|
30
|
+
require 'test_29_process_jpg'
|
31
|
+
require 'test_30_validation_dval'
|
32
|
+
require 'test_31_validation_dv_strings'
|
33
|
+
require 'test_32_validation_dv_formula'
|
34
|
+
require 'test_40_property_types'
|
35
|
+
require 'test_41_properties'
|
36
|
+
require 'test_42_set_properties'
|
37
|
+
require 'test_50_name_stored'
|
38
|
+
require 'test_51_name_print_area'
|
39
|
+
require 'test_52_name_print_titles'
|
40
|
+
require 'test_53_autofilter'
|
41
|
+
require 'test_60_chart_generic'
|
42
|
+
require 'test_61_chart_subclasses'
|
43
|
+
require 'test_62_chart_formats'
|
44
|
+
require 'test_63_chart_area_formats'
|
45
|
+
require 'tc_example_match'
|
46
|
+
require 'tc_storage_lite'
|
data/writeexcel.gemspec
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
|
3
|
+
version = '0.3.0'
|
4
|
+
|
5
|
+
spec = Gem::Specification.new do |s|
|
6
|
+
s.name = 'writeexcel'
|
7
|
+
s.version = version
|
8
|
+
s.author = 'Hideo NAKAMURA'
|
9
|
+
s.email = 'cxn03651@msj.biglobe.ne.jp'
|
10
|
+
s.summary = 'Write to a cross-platform Excel binary file.'
|
11
|
+
s.files = Dir['examples/**/*'] + Dir['lib/**/*.rb'] +
|
12
|
+
Dir['[A-Z]*'] + Dir['test/**/*']
|
13
|
+
s.require_path = 'lib'
|
14
|
+
s.test_file = 'test/ts_all.rb'
|
15
|
+
s.has_rdoc = true
|
16
|
+
s.rdoc_options << 'README'
|
17
|
+
s.required_ruby_version = '>=1.8'
|
18
|
+
end
|
data/writeexcel.rdoc
ADDED
@@ -0,0 +1,583 @@
|
|
1
|
+
= 説明
|
2
|
+
|
3
|
+
Spreadsheet::WriteExcelライブラリは、エクセルのバイナリファイルを作成することができます。プラットフォームを問いません。複数のワークシートを作成することができますし、セルの書式を設定することもできます。テキスト、数値、数式、ハイパーリンク、画像を格納することが出来ます。
|
4
|
+
|
5
|
+
このライブラリで作成されるエクセルファイルは、エクセル97、2000、2002、2003と互換性があります。
|
6
|
+
|
7
|
+
このライブラリは主要なWindows、UNIX、マッキントッシュプラットフォームで動作します。作成されたファイルは、LinuxやUNIXのスプレッドシートアプリケーションであるGnumericやOpenOffice.orgとも互換性があります。
|
8
|
+
|
9
|
+
このライブラリは、既存のエクセルファイルの編集には使うことができません。(See "MODIFYING AND REWRITING EXCEL FILES")
|
10
|
+
= クイックスタート
|
11
|
+
|
12
|
+
Spreadsheet::WriteExcelは、エクセルの機能へのできるだけ多くのインターフェイスを提供しようとしています。結果として、インターフェイスに関する多くのドキュメントがあります。最初はどれが重要でどれがそうでないかわかりずらいでしょう。イケアの家具を組み立てるのが好みの人は、まずこの使用説明を読んでください。3つの簡単なステップです。
|
13
|
+
|
14
|
+
1.new()メソッドで新規にエクセルのワークブックを作成する。
|
15
|
+
2.add_worksheet()メソッドでこのワークブックにワークシートを加える。
|
16
|
+
3.write()メソッドでこのワークシートにデータを書き込む。
|
17
|
+
|
18
|
+
こんな感じです。
|
19
|
+
|
20
|
+
require 'writeexcel' # Step 0
|
21
|
+
|
22
|
+
workbook = Spreadsheet::WriteExcel.new('ruby.xls') # Step 1
|
23
|
+
worksheet = workbook.add_worksheet # Step 2
|
24
|
+
worksheet.write('A1', 'Hi Excel!') # Step 3
|
25
|
+
workbook.close # ファイルに出力
|
26
|
+
|
27
|
+
これで、一つのワークシートを持ち、A1セルに'Hi Excel!'というテキストが書き込まれたエクセルファイルが作成されます。これでできあがりです。実際は0番目のステップがありますが、これはgoes without saying. 多くの使用例がgemには含まれていますので、それを参考にすることも出来ます。 See EXAMPLES
|
28
|
+
|
29
|
+
最初にこの使用方法を読んで後で家具を作る人は、どうやって進めるかわかるでしょう。;-)
|
30
|
+
|
31
|
+
= Workbook メソッド
|
32
|
+
|
33
|
+
Spreadsheet::WriteExcel ライブラリは新規のワークブックへのオブジェクト指向のインターフェイスを提供します。新たなワークブックに対して次のメソッドを使用することが出来ます。
|
34
|
+
|
35
|
+
new
|
36
|
+
add_worksheet
|
37
|
+
add_format
|
38
|
+
add_chart_ext ※ 未対応
|
39
|
+
close
|
40
|
+
compatibility_mode
|
41
|
+
set_properties ※ 未対応
|
42
|
+
set_tempdir
|
43
|
+
set_custom_color
|
44
|
+
sheets
|
45
|
+
set_1904
|
46
|
+
set_codepage
|
47
|
+
|
48
|
+
== new()
|
49
|
+
|
50
|
+
new コンストラクタは新しいエクセルワークブックを作成します。パラメータとしてファイル名かファイルハンドルを受け取ります。(※ファイル名しか対応していません)
|
51
|
+
|
52
|
+
workbook = Spreadsheet::WriteExcel.new('filename.xls')
|
53
|
+
worksheet = workbook.add_worksheet
|
54
|
+
worksheet.write(0, 0, 'Hi Excel!')
|
55
|
+
|
56
|
+
※ また、デフォルトのフォーマットを指定することもできます。例えば、MSP ゴシックで11ポイントなど。
|
57
|
+
|
58
|
+
workbook = Spreadsheet::WriteExcel.new('filename.xls', :font => 'MSP ゴシック', :size = 11)
|
59
|
+
|
60
|
+
ファイル名を使った別の使用例です。
|
61
|
+
|
62
|
+
workbook = Spreadsheet::WriteExcel.new(filename)
|
63
|
+
workbook = Spreadsheet::WriteExcel.new('/tmp/filename.xls')
|
64
|
+
workbook = Spreadsheet::WriteExcel.new("c:\\tmp\\filename.xls")
|
65
|
+
workbook = Spreadsheet::WriteExcel.new('c:\tmp\filename.xls')
|
66
|
+
|
67
|
+
最後の2つの例は、DOSやWindowsでディレクトリの区切りの「\」をエスケープするか、シングルクォートで囲んでそのまま指定していするかの例です。
|
68
|
+
|
69
|
+
new() コンストラクタは、Spreadsheet::WriteExcelオブジェクト(ワークブックオブジェクト)を返し、これにワークシートを加えデータを書き込みます。
|
70
|
+
|
71
|
+
== add_worksheet([sheetname])
|
72
|
+
|
73
|
+
ワークブックには少なくとも一つのワークシートを加える必要があります。ワークシートはセルにデータを記述するのに用いられます。
|
74
|
+
|
75
|
+
worksheet1 = workbook.add_worksheet # Sheet1
|
76
|
+
worksheet2 = workbook.add_worksheet('Foglio2') # Foglio2
|
77
|
+
worksheet3 = workbook.add_worksheet('Data') # Data
|
78
|
+
worksheet4 = workbook.add_worksheet # Sheet4
|
79
|
+
|
80
|
+
sheetname が指定されなければ、Sheet1, Sheet2といったデフォルトのエクセルの慣習に従います。
|
81
|
+
|
82
|
+
ワークシート名はエクセルのワークシート名として正しいものである必要があります。すなわち、[ ] : * ? / \ といった文字は使用できませんし、32文字以内でなければなりません。加えて、大文字小文字の別なく、同じシート名は使うことが出来ません。
|
83
|
+
|
84
|
+
シート名sheetnameには、UTF8文字列も使用することが出来ます。
|
85
|
+
|
86
|
+
worksheet = workbook.add_format('シート1') # UTF8でソースファイルを保存のこと
|
87
|
+
|
88
|
+
== add_format(properties)
|
89
|
+
|
90
|
+
add_format()メソッドは、セルに書式を設定するのに使用する新しいFormatオブジェクトを作成します。作成の際にpropertiesのハッシュ引数で指定することも出来ますし、後でメソッドを呼び出して指定することも出来ます。
|
91
|
+
|
92
|
+
format1 = workbook.add_format(props) # 作成時にプロパティをセットする
|
93
|
+
format2 = workbook.add_format # 後でプロパティをセットする
|
94
|
+
|
95
|
+
書式プロパティの詳細及び指定方法については、CELL FORMATTING セクションをご覧ください。
|
96
|
+
|
97
|
+
== close()
|
98
|
+
|
99
|
+
※ワークブックをエクセルファイルに書き出します。
|
100
|
+
|
101
|
+
== compatibility_mode()
|
102
|
+
|
103
|
+
※未検証
|
104
|
+
|
105
|
+
== set_properties()
|
106
|
+
|
107
|
+
※未対応
|
108
|
+
|
109
|
+
== set_tempdir()
|
110
|
+
|
111
|
+
速度と効率のため、ワークブックのデータを最後に組み立てる前に、Spreadsheet::WriteExcelはワークシートのデータをテンポラリファイルに置きます。テンポラリファイルを作ることが出来ない場合はメモリ上で作業します。この場合、大きなファイルになると遅くなることがあります。
|
112
|
+
この問題はWindows上でIISと併せて使っているときに主として発生しますが、UNIXシステムでも起こることがあります。
|
113
|
+
この問題は概して、既定の一時ファイルディレクトリがC:\やその他IISが書き込みを提供していないディレクトリに設定されているのが原因で発生します。
|
114
|
+
この問題を避けるために、set_tempdir()メソッドを使って一時ファイルを作成できるディレクトリを指定します。
|
115
|
+
|
116
|
+
お使いのシステムでどのディレクトリが使用されるかは、以下で知ることが出来ます。
|
117
|
+
|
118
|
+
ruby -e "print ENV['TMPDIR'] || ENV['TMP'] || ENV['TEMP'] || '/tmp'"
|
119
|
+
|
120
|
+
デフォルトの一時ファイルディレクトリは使用できる場合でも、セキュリティやメンテナンスの理由から別の場所を指定することもできます。
|
121
|
+
|
122
|
+
workbook.set_tempdir('/tmp/writeexcel')
|
123
|
+
workbook.set_tempdir('c:\windows\temp\writeexcel')
|
124
|
+
|
125
|
+
この一時ファイル用のディレクトリは実在しなければなりません。set_tempdir()が新たにディレクトリを作成することはしません。
|
126
|
+
|
127
|
+
set_tempdir()を使う一つの欠点は、Windowsシステムの中にはおおよそ800のコンカレント一時ファイルを限度としているのがあることです。これらのシステムで動かす単一のプログラムは総計で800のワークブックとワークシートオブジェクトを作成するのが上限となります。必要なら複数の、ノン・コンカレントなプログラムを実行してください。
|
128
|
+
|
129
|
+
== set_custom_color(index, red, green, ble)
|
130
|
+
|
131
|
+
set_custom_color()メソッドは、ビルトインされているパレットの値に、もう少し好みの色を加えるのに使用します。
|
132
|
+
index の値は、8から63の間でなければなりません。See "COLOURS IN EXCEL"
|
133
|
+
デフォルトの名前付きカラーは次のようになっています。
|
134
|
+
|
135
|
+
8 => black
|
136
|
+
9 => white
|
137
|
+
10 => red
|
138
|
+
11 => lime
|
139
|
+
12 => blue
|
140
|
+
13 => yellow
|
141
|
+
14 => magenta
|
142
|
+
15 => cyan
|
143
|
+
16 => brown
|
144
|
+
17 => green
|
145
|
+
18 => navy
|
146
|
+
20 => purple
|
147
|
+
22 => silver
|
148
|
+
23 => gray
|
149
|
+
33 => pink
|
150
|
+
53 => orange
|
151
|
+
|
152
|
+
RGB(red green blue)要素を用いて新しい色をセットすることも出来ます。red, green, blue の各値は0から255までの間でなければなりません。エクセルを使ってTools(ツール)->Options(オプション)->Colors(色)->Modify(変更)で必要な値を決めることが出来ます。
|
153
|
+
|
154
|
+
set_custom_color()メソッドでは、HTMLで用いられる#rrggbb形式の16進数値も使用できます。
|
155
|
+
|
156
|
+
workbook.set_custom_color(40, 255, 102, 0) # orange
|
157
|
+
workbook.set_custom_color(40, 0xFF, 0x66, 0x00) # same thing
|
158
|
+
workbook.set_custom_color(40, '#FF6600') # same thing
|
159
|
+
|
160
|
+
font = workbook.add_format(:color => 40) # use the modified color
|
161
|
+
|
162
|
+
set_custom_color()は作成された色のindexを返します。
|
163
|
+
|
164
|
+
ferrari = workbook.set_custom_color(40, 216, 12, 12)
|
165
|
+
format = workbook.add_format(
|
166
|
+
:bg_color => ferrari,
|
167
|
+
:pattern => 1,
|
168
|
+
:border => 1
|
169
|
+
)
|
170
|
+
|
171
|
+
== sheets([0, 1, ...])
|
172
|
+
|
173
|
+
sheets()メソッドはワークブック内のワークシートの全リストあるいは指定されたシートのリストを返します。
|
174
|
+
引数を指定しなければ全てのシートのリストを返します。これはそれぞれのシートに、ある操作を繰り返して行いたいときに便利です。
|
175
|
+
|
176
|
+
workbook.sheets.each do |worksheet|
|
177
|
+
print $worksheet.get_name
|
178
|
+
end
|
179
|
+
|
180
|
+
一つあるいは複数のワークシートオブジェクトを指定することもできます。
|
181
|
+
|
182
|
+
worksheet = workbook.sheets(0)
|
183
|
+
worksheet.write('A1', 'Hello')
|
184
|
+
|
185
|
+
workbook.sheets(0).write('A1', 'Hello') # same thing
|
186
|
+
|
187
|
+
次の例は、ワークブック内の最初と最後のワークシートを返し、操作します。
|
188
|
+
|
189
|
+
workbook.sheets(0, -1).each do |worksheet|
|
190
|
+
# Do something
|
191
|
+
end
|
192
|
+
|
193
|
+
== set_1904()
|
194
|
+
|
195
|
+
エクセルは日付を実数で格納しています。その整数部分は「epoch」からの日数を、小数部分は1日のうちのパーセンテージを格納しています。「epoch」は、Windowsのエクセルでは1900年、マッキントッシュのエクセルでは1904年です。ですが、どちらのプラットフォームでもエクセルは自動的にシステム間の相違をコンバートして扱います。
|
196
|
+
|
197
|
+
Spreadsheet::WriteExcelではデフォルトで1900年を用います。もしも変更したいのであれば、workbookに対してset_1904()メソッドを呼んでください。現在の値を問い合わせるにはget_1904()を呼びます。これは、1900ならば0を、1904ならば1を返します。
|
198
|
+
|
199
|
+
エクセルの日付の取り扱いについては、"DATES AND TIME IN EXCEL"も見てください。
|
200
|
+
|
201
|
+
通常であれば、set_1904()を使う必要はありません。
|
202
|
+
|
203
|
+
== set_codepage(codepage)
|
204
|
+
|
205
|
+
Spreadsheet::WriteExcelで使われるデフォルトのコードページ、文字セットはANSIです。これはWindowsのエクセルの既定値でもあります。しかしながら、たまにコードページを変更する必要が生じたときは、set_codepage()メソッドを使って変更します。
|
206
|
+
|
207
|
+
コードページの変更は、マッキントッシュ上でSpreadsheet::WriteExcelを使用していて、ASCII 128以外の文字セットを使いたい場合に必要になることがあります。
|
208
|
+
|
209
|
+
workbook.set_codepage(1) # ANSI, MS Windows
|
210
|
+
workbook.set_codepage(2) # Apple Macintosh
|
211
|
+
|
212
|
+
set_codepage()はめったに必要にはなりません。
|
213
|
+
|
214
|
+
= Worksheet メソッド
|
215
|
+
|
216
|
+
ワークブックオブジェクトにadd_worksheet()メソッドを呼ぶことで新しいワークシートが作成されます。
|
217
|
+
|
218
|
+
worksheet1 = workbook.add_worksheet
|
219
|
+
worksheet2 = workbook.add_worksheet
|
220
|
+
|
221
|
+
新しいワークシートに対して、次のメソッドを使うことが出来ます。
|
222
|
+
|
223
|
+
write()
|
224
|
+
write_number()
|
225
|
+
write_string()
|
226
|
+
write_utf16be_string()
|
227
|
+
write_utf16le_string()
|
228
|
+
keep_leading_zeros()
|
229
|
+
write_blank()
|
230
|
+
write_row()
|
231
|
+
write_col()
|
232
|
+
write_date_time()
|
233
|
+
write_url()
|
234
|
+
write_url_range()
|
235
|
+
write_formula()
|
236
|
+
store_formula()
|
237
|
+
repeat_formula()
|
238
|
+
write_comment()
|
239
|
+
show_comments()
|
240
|
+
add_write_handler()
|
241
|
+
insert_image()
|
242
|
+
embed_chart()
|
243
|
+
data_validation()
|
244
|
+
get_name()
|
245
|
+
activate()
|
246
|
+
select()
|
247
|
+
hide()
|
248
|
+
set_first_sheet()
|
249
|
+
protect()
|
250
|
+
set_selection()
|
251
|
+
set_row()
|
252
|
+
set_column()
|
253
|
+
outline_settings()
|
254
|
+
freeze_panes()
|
255
|
+
split_panes()
|
256
|
+
merge_range()
|
257
|
+
set_zoom()
|
258
|
+
right_to_left()
|
259
|
+
hide_zero()
|
260
|
+
set_tab_color()
|
261
|
+
autofilter()
|
262
|
+
|
263
|
+
== セル・ノーテーション
|
264
|
+
|
265
|
+
Spreadsheet::WriteExcelはセルの位置を指定するのに2つの表記法、Row-Column法とA1法をサポートしています。
|
266
|
+
|
267
|
+
Row-Column法は行、桁ともに0から始まるインデックスですが、A1法はエクセルで標準的に用いられる桁を示す英字と行を示す1から始まる数字からなる英数字の並びです。例えば、
|
268
|
+
|
269
|
+
(0, 0) # The top left cell in row-column notation.
|
270
|
+
('A1') # The top left cell in A1 notation.
|
271
|
+
|
272
|
+
(1999,29) # Row-column notation.
|
273
|
+
('AD2000') # The same cell in A1 notation.
|
274
|
+
|
275
|
+
Row-column法はセルをプログラムで扱うのに便利です。
|
276
|
+
|
277
|
+
0.upto(9) do |i|
|
278
|
+
worksheet.write(i, 0, 'Hello') # Cells A1 to A10
|
279
|
+
end
|
280
|
+
|
281
|
+
A1法はワークシートを手動で設定したり数式を用いるときに便利です。
|
282
|
+
|
283
|
+
worksheet.write('H1', 200)
|
284
|
+
worksheet.write('H2', '=H1+1') # 201
|
285
|
+
|
286
|
+
数式中やいくつかのメソッドでは、A:Aカラム法も使用できます。
|
287
|
+
|
288
|
+
worksheet.write('A1', '=SUM(B:B)')
|
289
|
+
|
290
|
+
簡便さのために、以下のワークシートのメソッドではrow-column法で記述していますが、全てA1法も用いることができます。
|
291
|
+
|
292
|
+
注:エクセルではR1C1法も使うことができますが、Spreadsheet::WriteExcelではサポートしていません。
|
293
|
+
|
294
|
+
== write(row, column, [token, format])
|
295
|
+
|
296
|
+
エクセルは、データのタイプ(文字列、数値、ブランク、数式、ハイパーリンク)によって区別して扱います。データの書き込みを簡単に扱うため、write()メソッドはいくつかのメソッドのエイリアスとして振る舞います。
|
297
|
+
|
298
|
+
write_string
|
299
|
+
write_number
|
300
|
+
write_blank
|
301
|
+
write_formula
|
302
|
+
write_url
|
303
|
+
write_row
|
304
|
+
write_col
|
305
|
+
|
306
|
+
全般的な規則は、データが何かを見て、何を書き込むかを決めます。row-column法とA1法それぞれの例を示します。オリジナルのパール版では'1'や'2.5E-4'といった数値風
|
307
|
+
の文字列を書き込むと数値として扱われますが、ruby版では異なるので注意。
|
308
|
+
|
309
|
+
# same as
|
310
|
+
worksheet.write(0, 0, 'Hello' ) # write_string
|
311
|
+
worksheet.write(1, 0, '1' ) # write_string
|
312
|
+
worksheet.write(2, 0, 2 ) # write_number
|
313
|
+
worksheet.write(3, 0, 3.00001 ) # write_number
|
314
|
+
worksheet.write(4, 0, "" ) # write_blank
|
315
|
+
worksheet.write(5, 0, '' ) # write_blank
|
316
|
+
worksheet.write(6, 0, nil ) # write_blank
|
317
|
+
worksheet.write(7, 0 ) # write_blank
|
318
|
+
worksheet.write(8, 0, 'http://www.ruby-lang.org/') # write_url
|
319
|
+
worksheet.write('A9', 'ftp://ftp.ruby-lang.org/' ) # write_url
|
320
|
+
worksheet.write('A10', 'internal:Sheet1!A1' ) # write_url
|
321
|
+
worksheet.write('A11', 'external:c:\foo.xls' ) # write_url
|
322
|
+
worksheet.write('A12', '=A3 + 3*A4' ) # write_formula
|
323
|
+
worksheet.write('A13', '=SIN(PI()/4)' ) # write_formula
|
324
|
+
worksheet.write('A14', Array ) # write_row
|
325
|
+
worksheet.write('A15', [ Array ] ) # write_col
|
326
|
+
|
327
|
+
オリジナルのパール版にあるkeep_leading_zeros プロパティは無効です。
|
328
|
+
0で始まる数字列を書き込むには、文字列にしてください。
|
329
|
+
数値リテラルで0で始まる数値を書き込むときは、8進数に解釈される
|
330
|
+
ので気を付けてください。
|
331
|
+
|
332
|
+
worksheet.write('A16', 010 ) # write_number 8
|
333
|
+
worksheet.write('A17', '010' ) # write_string '010'
|
334
|
+
worksheet.write('A18', 000020 ) # write_number 16
|
335
|
+
|
336
|
+
Arrayを渡すときの挙動は以下の通り。
|
337
|
+
|
338
|
+
TODO 記述すること
|
339
|
+
|
340
|
+
引数formatはオプションです。有効なFormatオブジェクトである必要があります。
|
341
|
+
"CELL FORMATTING"を参照。
|
342
|
+
|
343
|
+
format = workbook.add_format
|
344
|
+
format.set_bold
|
345
|
+
format.set_color('red')
|
346
|
+
format.set_align('center')
|
347
|
+
worksheet.write(4, 0, 'Hello', format) # formatted string
|
348
|
+
|
349
|
+
write()メソッドは空文字列''やnilがtokenとして渡された場合、formatが渡されなければ何もしません。つまり、上記の例では何もしない(無視する)ということです。ですから、空データやnilを扱うのに特別のことを気にする必要はありません。write_blank()メソッドも見てください。
|
350
|
+
|
351
|
+
add_write_handler()を使って、あなた独自のwrite()メソッドのデータ処理を加えることもできます。(※未検証)
|
352
|
+
|
353
|
+
UTF8文字列も扱うことが出来ます(※暫定実装)
|
354
|
+
|
355
|
+
write()メソッドは、次の値を返します。
|
356
|
+
|
357
|
+
0 : 成功
|
358
|
+
-1 : 引数の数が不足
|
359
|
+
-2 : 行や桁が範囲外
|
360
|
+
-3 : 文字列が長すぎる(32767バイト以上)
|
361
|
+
|
362
|
+
== write_number(row, column, number[, format])
|
363
|
+
|
364
|
+
指定されたセルに整数又は実数を書き込む。
|
365
|
+
|
366
|
+
worksheet.write_number(0, 0, 1234556)
|
367
|
+
worksheet.write_number('A2', 2.3456)
|
368
|
+
|
369
|
+
"Cell notation"も参照。formatはオプション。
|
370
|
+
|
371
|
+
一般的にはwrite()メソッドを使えばこと足りる。
|
372
|
+
|
373
|
+
== write_string(row, column, string[, format])
|
374
|
+
|
375
|
+
指定されたセルに文字列を書き込む。
|
376
|
+
|
377
|
+
worksheet.write_string(0, 0, 'Your text here')
|
378
|
+
worksheet.write_string('A2', 'or here')
|
379
|
+
|
380
|
+
文字列の最大サイズは32767文字。
|
381
|
+
|
382
|
+
== write_blank(row, column, format)
|
383
|
+
|
384
|
+
指定されたセルにブランクを書き込む。
|
385
|
+
|
386
|
+
worksheet.write_brank(0, 0, format)
|
387
|
+
|
388
|
+
このメソッドは、文字列も数値もないセルに書式を書き込むのに用いる。
|
389
|
+
エクセルでは空(Empty)セルとブランクセルとは異なる。空セルは何のデータも持たないが、ブランクセルは書式情報を持つ。
|
390
|
+
|
391
|
+
書式情報を持たない書き込みは無視される。
|
392
|
+
|
393
|
+
worksheet.write('A1', nil, format) # write_blank('A1', format)
|
394
|
+
worksheet.write('A1', nil ) # ignored
|
395
|
+
|
396
|
+
すなわち、配列にある一連のデータを書き込む際に、nilあるいは空白のセルについて特別の扱いをしなくても良いと言うことである。
|
397
|
+
|
398
|
+
"Cell notation"も参照。
|
399
|
+
|
400
|
+
== write_row(row, column, array[, format])
|
401
|
+
|
402
|
+
write_row()メソッドは、1次元あるいは2次元配列を一度に書き込む際に使用できます。データベースからのクエリ結果をエクセルに書き込む際に便利です。
|
403
|
+
実際は配列の各要素に対してwrite()メソッドを呼び出します。
|
404
|
+
|
405
|
+
array = ['awk', 'gawk', 'mawk']
|
406
|
+
worksheet.write_row(0, 0, array)
|
407
|
+
|
408
|
+
# この例は次と同じ
|
409
|
+
worksheet.write(0, 0, array[0])
|
410
|
+
worksheet.write(0, 1, array[1])
|
411
|
+
worksheet.write(0, 2, array[2])
|
412
|
+
|
413
|
+
注記:利便さのため、配列を渡されたときはwrite()はwrite_row()と同様に振る舞います。ですから、次の二つの例は同じことです。
|
414
|
+
|
415
|
+
worksheet.write_row('A1', array) # write a row of data
|
416
|
+
worksheet.write( 'A1', array) # same thing
|
417
|
+
|
418
|
+
format引数はオプションです。指定された場合、全ての配列要素の書き込みに際し適用されます。
|
419
|
+
|
420
|
+
2次元配列を渡すとこんな感じになります。
|
421
|
+
|
422
|
+
eec = [
|
423
|
+
['maggie', 'milly', 'molly', 'may' ],
|
424
|
+
[13, 14, 15, 16 ],
|
425
|
+
['shell', 'star', 'crab', 'stone']
|
426
|
+
]
|
427
|
+
|
428
|
+
worksheet.write_row('A1', eec)
|
429
|
+
|
430
|
+
以下のワークシートが作成されます。
|
431
|
+
|
432
|
+
-----------------------------------------------------------
|
433
|
+
| | A | B | C | D | E | ...
|
434
|
+
-----------------------------------------------------------
|
435
|
+
| 1 | maggie | 13 | shell | ... | ... | ...
|
436
|
+
| 2 | milly | 14 | star | ... | ... | ...
|
437
|
+
| 3 | molly | 15 | crab | ... | ... | ...
|
438
|
+
| 4 | may | 16 | stone | ... | ... | ...
|
439
|
+
| 5 | ... | ... | ... | ... | ... | ...
|
440
|
+
| 6 | ... | ... | ... | ... | ... | ...
|
441
|
+
|
442
|
+
縦横を反転して作成するには、下のwrite_col()メソッドを使うか、write()メソッドで2次元配列の配列、[ eec ] を渡してください。
|
443
|
+
|
444
|
+
nil要素は、formatが指定されていなければ無視されますし、指定されていればブランクセルとして書き込まれます。
|
445
|
+
|
446
|
+
write_row()メソッドの返値は、無事に終われば0、何か問題があれば最初に発生したエラーコードを返します。上のwrite()に記載された返値を見てください。
|
447
|
+
|
448
|
+
examplesディレクトリにあるwrite_arrays.rbもご覧ください。
|
449
|
+
|
450
|
+
== write_col(row, column, array[, format])
|
451
|
+
|
452
|
+
write_col()メソッドは、1次元あるいは2次元配列を一度に書き込む際に使用できます。データベースからのクエリ結果をエクセルに書き込む際に便利です。
|
453
|
+
実際は配列の各要素に対してwrite()メソッドを呼び出します。
|
454
|
+
|
455
|
+
array = ['awk', 'gawk', 'mawk']
|
456
|
+
worksheet.write_col(0, 0, array)
|
457
|
+
|
458
|
+
# この例は次と同じ
|
459
|
+
worksheet.write(0, 0, array[0])
|
460
|
+
worksheet.write(1, 0, array[1])
|
461
|
+
worksheet.write(2, 0, array[2])
|
462
|
+
|
463
|
+
format引数はオプションです。指定された場合、全ての配列要素の書き込みに際し適用されます。
|
464
|
+
|
465
|
+
2次元配列を渡すとこんな感じになります。
|
466
|
+
|
467
|
+
eec = [
|
468
|
+
['maggie', 'milly', 'molly', 'may' ],
|
469
|
+
[13, 14, 15, 16 ],
|
470
|
+
['shell', 'star', 'crab', 'stone']
|
471
|
+
]
|
472
|
+
|
473
|
+
worksheet.write_row('A1', eec)
|
474
|
+
|
475
|
+
以下のワークシートが作成されます。
|
476
|
+
|
477
|
+
-----------------------------------------------------------
|
478
|
+
| | A | B | C | D | E | ...
|
479
|
+
-----------------------------------------------------------
|
480
|
+
| 1 | maggie | milly | molly | may | ... | ...
|
481
|
+
| 2 | 13 | 14 | 15 | 16 | ... | ...
|
482
|
+
| 3 | shell | star | crab | stone | ... | ...
|
483
|
+
| 4 | ... | ... | ... | ... | ... | ...
|
484
|
+
| 5 | ... | ... | ... | ... | ... | ...
|
485
|
+
| 6 | ... | ... | ... | ... | ... | ...
|
486
|
+
|
487
|
+
縦横を反転して作成するには、上のwrite_col()メソッドを使うか、write()メソッドで2次元配列、eec を渡してください。
|
488
|
+
|
489
|
+
nil要素は、formatが指定されていなければ無視されますし、指定されていればブランクセルとして書き込まれます。
|
490
|
+
|
491
|
+
write_col()メソッドの返値は、無事に終われば0、何か問題があれば最初に発生したエラーコードを返します。上のwrite()に記載された返値を見てください。
|
492
|
+
|
493
|
+
examplesディレクトリにあるwrite_arrays.rbもご覧ください。
|
494
|
+
|
495
|
+
== write_date_time(row, column, date_string, format)
|
496
|
+
|
497
|
+
write_date_time()メソッドは、指定したセルに日付あるいは時刻を書き込みます。
|
498
|
+
|
499
|
+
worksheet.write_date_time('A1', '2009-03-25T12:30', date_format)
|
500
|
+
|
501
|
+
date_stringは次の形式です。
|
502
|
+
|
503
|
+
yyyy-mm-ddThh:mm:ss.sss
|
504
|
+
|
505
|
+
これはISO8601に適合していますが、ISO8601全てのフォーマットには適合していないことに留意してください。
|
506
|
+
|
507
|
+
date_stirngでは、次のバリエーションも使用できます。どの場合でも'T'は必要です。
|
508
|
+
|
509
|
+
yyyy-mm-ddThh:mm:ss.sss # standard format
|
510
|
+
yyyy-mm-ddT # No time
|
511
|
+
Thh:mm:ss.sss # No Date
|
512
|
+
yyyy-mm-ddThh:mm:ss.sssZ # Additional Z ( but not time zone)
|
513
|
+
yyyy-mm-ddThh:mm:ss # No fractal seconds
|
514
|
+
yyyy-mm-ddThh:mm # No seconds.
|
515
|
+
|
516
|
+
日時には書式(format)が必要です。指定しなければ数値として書き込まれます。"DATES AND TIME IN EXCEL"及び"CELL FORMATTING"を参照ください。
|
517
|
+
典型的な例です。
|
518
|
+
|
519
|
+
date_format = workbook.add_format(:num_format => 'mm/dd/yy')
|
520
|
+
worksheet.write_date_time('A1', '2009-03-25T12:30', date_format) # date
|
521
|
+
worksheet.write_date_time('A1', '2009-03-25T12:30' ) # number
|
522
|
+
|
523
|
+
日付としては、epochが1900の場合は1900-01-01から9999-12-31まで、epochが1904の場合は1904-01-01から9999-12-31までです。この範囲外の時は文字列が書き込まれます。
|
524
|
+
|
525
|
+
examplesディレクトリにあるdate_time.rbもご覧ください。
|
526
|
+
|
527
|
+
== write_url(row, column, url[, label, format])
|
528
|
+
|
529
|
+
指定されたセルにURLへのハイパーリンクを書き込みます。ハイパーリンクは、表示されるlabelと表示はされない実際のurlの2つからなります。labelが指定されない場合、urlが表示されます。labelとformatはオプションですし、その順番が入れ替わってもかまいません。
|
530
|
+
|
531
|
+
labelはwrite()メソッドで書き込まれます。ですから、書き込み可能な文字列、数値または数式でなければなりません。
|
532
|
+
|
533
|
+
URLの形式は4つ(http://, https://, ftp://, mailto:)をサポートしています。
|
534
|
+
|
535
|
+
worksheet.write_url(0, 0, 'ftp://www.ruby-lang.org/' )
|
536
|
+
worksheet.write_url(1, 0, 'http://www.ruby-lang.org/', 'Ruby home' )
|
537
|
+
worksheet.write_url('A3', 'http://www.ruby-lang.org/', format )
|
538
|
+
worksheet.write_url('A4', 'http://www.ruby-lang.org/', 'Perl', format)
|
539
|
+
worksheet.write_url('A5', 'mailto:foo@bar.com' )
|
540
|
+
|
541
|
+
このほか、ローカルリンクの2つ(internal:, external:)もサポートしています。これらは同じワークブック内のワークシートへ、あるいは他のワークブックへの参照に用います。
|
542
|
+
|
543
|
+
worksheet.write_url('A6', 'internal:Sheet2!A1' )
|
544
|
+
worksheet.write_url('A7', 'internal:Sheet2!A1', format )
|
545
|
+
worksheet.write_url('A8', 'internal:Sheet2!A1:B2' )
|
546
|
+
worksheet.write_url('A9', %q{internal:'Sales Data'!A1} )
|
547
|
+
worksheet.write_url('A10', 'external:c:\temp\foo.xls' )
|
548
|
+
worksheet.write_url('A11', 'external:c:\temp\foo.xls#Sheet2!A1' )
|
549
|
+
worksheet.write_url('A12', 'external:..\..\..\foo.xls' )
|
550
|
+
worksheet.write_url('A13', 'external:..\..\..\foo.xls#Sheet2!A1' )
|
551
|
+
worksheet.write_url('A14', 'external:\\\\NETWORK\share\foo.xls' )
|
552
|
+
|
553
|
+
これらのURLの形式はwrite()メソッドで自動的に認識されます。
|
554
|
+
|
555
|
+
ワークシートへの参照はSheet1!A1といった形式です。Sheet1!A1:B2といった範囲指定も使用できます。
|
556
|
+
外部の参照の際、ワークブック名とワークシート名の間は#で区切る必要があります。 external:workbook.xls#Sheet1!A1
|
557
|
+
|
558
|
+
※以下の名前付け範囲への対応は、未検証
|
559
|
+
名前付けされた範囲へのリンクも張ることができます。例えば、外部のc:\temp\foo.xlsにあるmy_nameという名前の範囲へのリンクは、
|
560
|
+
|
561
|
+
worksheet.write_url('A15', 'external:c;\temp\foo.xls#my_name')
|
562
|
+
|
563
|
+
注:現在のSpreadsheet::WriteExcelでは、名前付け範囲の設定は対応していません。
|
564
|
+
|
565
|
+
エクセルでは、シート名に空白や非英数字が含まれる場合、'Sales Data'!A1のようにクォートで囲む必要があります。この場合、シート名に含まれる文字は必要であればエスケープしてください。 'c:\temp' はダブルクォートでは"c:\\temp"とします。
|
566
|
+
|
567
|
+
DOSやWindowsであっても、ファイル名の区切りには'/'を使用することが出来ます。これで先ほどのエスケープの問題は回避することができます。
|
568
|
+
|
569
|
+
worksheet.write_url('A16', 'external:c:/temp/foo.xls')
|
570
|
+
worksheet.write_url('A16', 'external:c://NETWORK/share/foo.xls')
|
571
|
+
|
572
|
+
"Cell notation"も参照。
|
573
|
+
|
574
|
+
== write_formula(row, column, formula[, format, value])
|
575
|
+
|
576
|
+
指定されたセルに数式あるいは関数を書き込みます。
|
577
|
+
|
578
|
+
worksheet.write_formula(0, 0, '=$B$3 + B4' )
|
579
|
+
worksheet.write_formula(1, 0, '=SIN(PI()/4)')
|
580
|
+
worksheet.write_formula(2, 0, '=SUM(B1:B5)' )
|
581
|
+
worksheet.write_formula('A4', '=IF(A3>1,"Yes", "No")' )
|
582
|
+
worksheet.write_formula('A5', '=AVERAGE(1, 2, 3, 4)' )
|
583
|
+
worksheet.write_formula('A6', '=DATEVALUE("1-Jan-2001")')
|