robust_excel_ole 1.11 → 1.12

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.
Files changed (54) hide show
  1. checksums.yaml +4 -4
  2. data/Changelog +11 -0
  3. data/README.rdoc +20 -8
  4. data/docs/README_open.rdoc +1 -0
  5. data/docs/README_ranges.rdoc +5 -11
  6. data/examples/{introducing_examples/example_introducing.rb → introductory_examples/example_introductory.rb} +10 -2
  7. data/examples/{introducing_examples → introductory_examples}/example_open.rb +18 -17
  8. data/examples/{introducing_examples → introductory_examples}/example_range.rb +29 -16
  9. data/examples/modifying_sheets/example_access_sheets_and_cells.rb +8 -7
  10. data/examples/modifying_sheets/example_add_names.rb +4 -8
  11. data/examples/modifying_sheets/example_adding_sheets.rb +7 -6
  12. data/examples/modifying_sheets/example_concating.rb +2 -2
  13. data/examples/modifying_sheets/example_copying.rb +3 -3
  14. data/examples/modifying_sheets/example_expanding.rb +2 -2
  15. data/examples/modifying_sheets/example_naming.rb +2 -2
  16. data/examples/modifying_sheets/example_ranges.rb +4 -4
  17. data/examples/modifying_sheets/example_saving.rb +3 -3
  18. data/examples/open_save_close/example_control_to_excel.rb +10 -11
  19. data/examples/open_save_close/example_default_excel.rb +13 -14
  20. data/examples/open_save_close/example_force_excel.rb +9 -10
  21. data/examples/open_save_close/example_if_obstructed_closeifsaved.rb +7 -7
  22. data/examples/open_save_close/example_if_obstructed_forget.rb +5 -5
  23. data/examples/open_save_close/example_if_obstructed_save.rb +7 -7
  24. data/examples/open_save_close/example_if_unsaved_accept.rb +13 -13
  25. data/examples/open_save_close/example_if_unsaved_forget.rb +9 -10
  26. data/examples/open_save_close/example_if_unsaved_forget_more.rb +9 -10
  27. data/examples/open_save_close/example_read_only.rb +6 -6
  28. data/examples/open_save_close/example_rename_cells.rb +4 -5
  29. data/examples/open_save_close/example_reuse.rb +6 -6
  30. data/examples/open_save_close/example_simple.rb +5 -5
  31. data/examples/open_save_close/example_unobtrusively.rb +4 -4
  32. data/lib/robust_excel_ole/address.rb +0 -4
  33. data/lib/robust_excel_ole/bookstore.rb +4 -28
  34. data/lib/robust_excel_ole/excel.rb +17 -22
  35. data/lib/robust_excel_ole/general.rb +11 -18
  36. data/lib/robust_excel_ole/range_owners.rb +17 -27
  37. data/lib/robust_excel_ole/reo_common.rb +7 -3
  38. data/lib/robust_excel_ole/version.rb +1 -1
  39. data/lib/robust_excel_ole/workbook.rb +178 -180
  40. data/lib/robust_excel_ole/worksheet.rb +7 -4
  41. data/robust_excel_ole.gemspec +6 -4
  42. data/spec/bookstore_spec.rb +38 -34
  43. data/spec/data/more_data/workbook.xls +0 -0
  44. data/spec/excel_spec.rb +89 -44
  45. data/spec/general_spec.rb +1 -0
  46. data/spec/range_spec.rb +7 -4
  47. data/spec/workbook_specs/workbook_close_spec.rb +2 -1
  48. data/spec/workbook_specs/workbook_misc_spec.rb +34 -18
  49. data/spec/workbook_specs/workbook_open_spec.rb +112 -71
  50. data/spec/workbook_specs/workbook_save_spec.rb +173 -5
  51. data/spec/workbook_specs/workbook_sheet_spec.rb +6 -42
  52. data/spec/workbook_specs/workbook_unobtr_spec.rb +9 -246
  53. data/spec/worksheet_spec.rb +21 -5
  54. metadata +12 -11
@@ -154,6 +154,23 @@ describe Workbook do
154
154
 
155
155
  end
156
156
 
157
+ context "with saving with the same name in another directory" do
158
+
159
+ before do
160
+ @book = Workbook.open(@simple_file1)
161
+ end
162
+
163
+ it "should save with the same name in another directory" do
164
+ File.delete @simple_file_other_path1 rescue nil
165
+ File.open(@simple_file_other_path1,"w") do | file |
166
+ file.puts "garbage"
167
+ end
168
+ File.exist?(@simple_file_other_path1).should be true
169
+ @book.save_as(@simple_file_other_path1, :if_exists => :overwrite, :if_blocked => :forget)
170
+ end
171
+
172
+ end
173
+
157
174
  context "with blocked by another file" do
158
175
 
159
176
  before do
@@ -166,6 +183,156 @@ describe Workbook do
166
183
  @book2.close(:if_unsaved => :forget)
167
184
  end
168
185
 
186
+ it "should raise an error with :obstructed => :raise" do
187
+ File.delete @simple_file_other_path1 rescue nil
188
+ File.open(@simple_file_other_path1,"w") do | file |
189
+ file.puts "garbage"
190
+ end
191
+ File.exist?(@simple_file_other_path1).should be true
192
+ expect{
193
+ @book2.save_as(@simple_file_other_path1, :if_exists => :overwrite, :if_blocked => :raise)
194
+ }.to raise_error(WorkbookBlocked, /blocked by another workbook/)
195
+ end
196
+
197
+ it "should close the blocking workbook without saving, and save the current workbook with :if_blocked => :forget" do
198
+ File.delete @simple_file_other_path1 rescue nil
199
+ File.open(@simple_file_other_path1,"w") do | file |
200
+ file.puts "garbage"
201
+ end
202
+ @book2.save_as(@simple_file_other_path1, :if_exists => :overwrite, :if_blocked => :forget)
203
+ @book.should_not be_alive
204
+ File.exist?(@simple_file_other_path1).should be true
205
+ new_book = Workbook.open(@simple_file_other_path1)
206
+ new_book.should be_a Workbook
207
+ new_book.close
208
+ end
209
+
210
+ it "should close the blocking workbook without saving even if it is unsaved with :if_blocked => :forget" do
211
+ File.delete @simple_file_other_path1 rescue nil
212
+ File.open(@simple_file_other_path1,"w") do | file |
213
+ file.puts "garbage"
214
+ end
215
+ sheet = @book.sheet(1)
216
+ cell_value = sheet[1,1].Value
217
+ sheet[1,1] = sheet[1,1].Value == "foo" ? "bar" : "foo"
218
+ @book.Saved.should be false
219
+ @book2.save_as(@simple_file_other_path1, :if_exists => :overwrite, :if_blocked => :forget)
220
+ @book.should_not be_alive
221
+ @book2.should be_alive
222
+ File.exist?(@simple_file_other_path1).should be true
223
+ new_book = Workbook.open(@simple_file_other_path1)
224
+ new_book.should be_a Workbook
225
+ new_book.close
226
+ old_book = Workbook.open(@simple_file1)
227
+ old_sheet = old_book.sheet(1)
228
+ old_sheet[1,1].Value.should == cell_value
229
+ old_book.close
230
+ end
231
+
232
+ it "should save and close the blocking workbook, and save the current workbook with :if_obstructed => :save" do
233
+ File.delete @simple_file_other_path1 rescue nil
234
+ File.open(@simple_file_other_path1,"w") do | file |
235
+ file.puts "garbage"
236
+ end
237
+ sheet = @book.sheet(1)
238
+ cell_value = sheet[1,1].Value
239
+ sheet[1,1] = sheet[1,1].Value == "foo" ? "bar" : "foo"
240
+ @book.Saved.should be false
241
+ @book2.save_as(@simple_file_other_path1, :if_exists => :overwrite, :if_blocked => :save)
242
+ @book.should_not be_alive
243
+ @book2.should be_alive
244
+ File.exist?(@simple_file_other_path1).should be true
245
+ new_book = Workbook.open(@simple_file_other_path1)
246
+ new_book.should be_a Workbook
247
+ new_book.close
248
+ old_book = Workbook.open(@simple_file1)
249
+ old_sheet = old_book.sheet(1)
250
+ old_sheet[1,1].Value.should_not == cell_value
251
+ old_book.close
252
+ end
253
+
254
+ it "should close the blocking workbook if it was saved, and save the current workbook with :if_obstructed => :close_if_saved" do
255
+ File.delete @simple_file_other_path1 rescue nil
256
+ File.open(@simple_file_other_path1,"w") do | file |
257
+ file.puts "garbage"
258
+ end
259
+ @book.Saved.should be true
260
+ @book2.save_as(@simple_file_other_path1, :if_exists => :overwrite, :if_blocked => :close_if_saved)
261
+ @book.should_not be_alive
262
+ @book2.should be_alive
263
+ File.exist?(@simple_file_other_path1).should be true
264
+ new_book = Workbook.open(@simple_file_other_path1)
265
+ new_book.should be_a Workbook
266
+ new_book.close
267
+ end
268
+
269
+ it "should raise an error if the blocking workbook was unsaved with :if_blocked => :close_if_saved" do
270
+ sheet = @book.sheet(1)
271
+ cell_value = sheet[1,1].Value
272
+ sheet[1,1] = sheet[1,1].Value == "foo" ? "bar" : "foo"
273
+ @book.Saved.should be false
274
+ expect{
275
+ @book2.save_as(@simple_file_other_path1, :if_exists => :overwrite, :if_blocked => :close_if_saved)
276
+ }.to raise_error(WorkbookBlocked, /blocking workbook is unsaved: "workbook.xls"/)
277
+ end
278
+
279
+ it "should raise an error with an invalid option" do
280
+ File.delete @simple_file_other_path1 rescue nil
281
+ File.open(@simple_file_other_path1,"w") do | file |
282
+ file.puts "garbage"
283
+ end
284
+ File.exist?(@simple_file_other_path1).should be true
285
+ expect{
286
+ @book2.save_as(@simple_file_other_path1, :if_exists => :overwrite, :if_blocked => :invalid)
287
+ }.to raise_error(OptionInvalid, /invalid option/)
288
+ # }.to raise_error(OptionInvalid, ":if_blocked: invalid option: :invalid" +
289
+ # "\nHint: Valid values are :raise, :forget, :save, :if_closed_saveo")
290
+ end
291
+
292
+ it "should raise an error by default" do
293
+ File.delete @simple_file_other_path1 rescue nil
294
+ File.open(@simple_file_other_path1,"w") do | file |
295
+ file.puts "garbage"
296
+ end
297
+ File.exist?(@simple_file_other_path1).should be true
298
+ expect{
299
+ @book2.save_as(@simple_file_other_path1, :if_exists => :overwrite)
300
+ }.to raise_error(WorkbookBlocked, /blocked by another workbook/)
301
+ end
302
+
303
+ it "should raise an error if the file does not exist and an workbook with the same name and other path exists" do
304
+ File.delete @simple_file_other_path1 rescue nil
305
+ File.exist?(@simple_file_other_path1).should be false
306
+ expect{
307
+ @book2.save_as(@simple_file_other_path1, :if_exists => :overwrite, :if_blocked => :raise)
308
+ }.to raise_error(WorkbookBlocked, /blocked by another workbook/)
309
+ end
310
+
311
+ it "should raise an error if the file exists and an workbook with the same name and other path exists" do
312
+ File.delete @simple_file_other_path1 rescue nil
313
+ File.open(@simple_file_other_path1,"w") do | file |
314
+ file.puts "garbage"
315
+ end
316
+ File.exist?(@simple_file_other_path1).should be true
317
+ expect{
318
+ @book.save_as(@simple_file_other_path1, :if_exists => :raise, :if_blocked => :raise)
319
+ }.to raise_error(FileAlreadyExists, /file already exists: "workbook.xls"/)
320
+ end
321
+
322
+ end
323
+
324
+ context "with obstructed by another file" do
325
+
326
+ before do
327
+ @book = Workbook.open(@simple_file1)
328
+ @book2 = Workbook.open(@another_simple_file)
329
+ end
330
+
331
+ after do
332
+ @book.close(:if_unsaved => :forget)
333
+ @book2.close(:if_unsaved => :forget)
334
+ end
335
+
169
336
  it "should raise an error with :obstructed => :raise" do
170
337
  File.delete @simple_file_other_path1 rescue nil
171
338
  File.open(@simple_file_other_path1,"w") do | file |
@@ -177,7 +344,7 @@ describe Workbook do
177
344
  }.to raise_error(WorkbookBlocked, /blocked by another workbook/)
178
345
  end
179
346
 
180
- it "should close the blocking workbook without saving, and save the current workbook with :if_obstructed => :forget" do
347
+ it "should close the blocking workbook without saving, and save the current workbook with :if_blocked => :forget" do
181
348
  File.delete @simple_file_other_path1 rescue nil
182
349
  File.open(@simple_file_other_path1,"w") do | file |
183
350
  file.puts "garbage"
@@ -234,7 +401,7 @@ describe Workbook do
234
401
  old_book.close
235
402
  end
236
403
 
237
- it "should close the blocking workbook if it was saved, and save the current workbook with :if_obstructed => :close_if_saved" do
404
+ it "should close the blocking workbook if it was saved, and save the current workbook with :if_blokced => :close_if_saved" do
238
405
  File.delete @simple_file_other_path1 rescue nil
239
406
  File.open(@simple_file_other_path1,"w") do | file |
240
407
  file.puts "garbage"
@@ -249,7 +416,7 @@ describe Workbook do
249
416
  new_book.close
250
417
  end
251
418
 
252
- it "should raise an error if the blocking workbook was unsaved with :if_obstructed => :close_if_saved" do
419
+ it "should raise an error if the blocking workbook was unsaved with :if_blocked => :close_if_saved" do
253
420
  sheet = @book.sheet(1)
254
421
  cell_value = sheet[1,1].Value
255
422
  sheet[1,1] = sheet[1,1].Value == "foo" ? "bar" : "foo"
@@ -267,8 +434,9 @@ describe Workbook do
267
434
  File.exist?(@simple_file_other_path1).should be true
268
435
  expect{
269
436
  @book2.save_as(@simple_file_other_path1, :if_exists => :overwrite, :if_obstructed => :invalid)
270
- }.to raise_error(OptionInvalid, ":if_obstructed: invalid option: :invalid" +
271
- "\nHint: Valid values are :raise, :overwrite, :alert, :excel")
437
+ }.to raise_error(OptionInvalid, /invalid option/)
438
+ #}.to raise_error(OptionInvalid, ":if_blocked: invalid option: :invalid" +
439
+ # "\nHint: Valid values are :raise, :forget, :save, :save_if_closed")
272
440
  end
273
441
 
274
442
  it "should raise an error by default" do
@@ -191,47 +191,11 @@ describe Workbook do
191
191
  end
192
192
  end
193
193
 
194
- describe "add_empty_sheet" do
195
-
196
- before do
197
- @book = Workbook.open(@simple_file)
198
- @sheet = @book.sheet(1)
199
- end
200
-
201
- after do
202
- @book.close(:if_unsaved => :forget)
203
- end
204
-
205
- it "should add empty sheet" do
206
- @book.ole_workbook.Worksheets.Count.should == 3
207
- @book.add_empty_sheet
208
- @book.ole_workbook.Worksheets.Count.should == 4
209
- end
210
-
211
- it "should add an empty sheet and return this added sheet" do
212
- sheet = @book.add_empty_sheet
213
- copyed_sheet = @book.ole_workbook.Worksheets.Item(@book.ole_workbook.Worksheets.Count)
214
- sheet.name.should eq copyed_sheet.name
215
- end
216
-
217
- it "should return new sheet" do
218
- @book.add_empty_sheet(:as => 'new sheet').name.should eq 'new sheet'
219
- end
220
-
221
- it "should add the first sheet" do
222
- @book.add_empty_sheet(:before => @sheet).name.should eq @book.sheet(1).name
223
- end
224
-
225
- it "should add the second sheet" do
226
- @book.add_empty_sheet(:after => @sheet).name.should eq @book.sheet(2).name
227
- end
228
- end
229
-
230
194
  describe "copy_sheet" do
231
195
 
232
196
  before do
233
- #@book = Workbook.open(@simple_file)
234
- @book = Workbook.open(@file_with_references)
197
+ @book = Workbook.open(@simple_file)
198
+ @book2 = Workbook.open(@file_with_references)
235
199
  @sheet = @book.sheet(1)
236
200
  @another_book = Workbook.open(@another_simple_file)
237
201
  end
@@ -242,10 +206,10 @@ describe Workbook do
242
206
  end
243
207
 
244
208
  it "should copy the second sheet, append it and leave the references so far" do
245
- @book.add_sheet(@book.sheet(2), :after => @book.sheet(3))
246
- @book.sheet(1)[2,1].Value.should == "x"
247
- @book.sheet(1)[2,2].Value.should == "y"
248
- @book.sheet(1)[2,3].Value.should == "z"
209
+ @book2.add_sheet(@book2.sheet(2), :after => @book2.sheet(3))
210
+ @book2.sheet(1)[2,1].Value.should == "x"
211
+ @book2.sheet(1)[2,2].Value.should == "y"
212
+ @book2.sheet(1)[2,3].Value.should == "z"
249
213
  end
250
214
 
251
215
  it "should copy and append a given sheet" do
@@ -53,222 +53,6 @@ describe Workbook do
53
53
  expect{unobtrusively_ok?}.to_not raise_error
54
54
  end
55
55
 
56
- =begin
57
- describe "with already open Excel instances and workbooks" do
58
-
59
- before do
60
- @ole_excel1 = WIN32OLE.new('Excel.Application')
61
- @ole_excel2 = WIN32OLE.new('Excel.Application')
62
- end
63
-
64
- context "with open unsaved workbook" do
65
-
66
- before do
67
- @book1 = Workbook.open(@simple_file1)
68
- @book1.sheet(1)[1,1] = "foo"
69
- #@ole_workbook1 = @ole_excel1.Workbooks.Open(@simple_file1, { 'ReadOnly' => false })
70
- #@old_value = @ole_workbook1.Worksheets.Item(1).Cells.Item(1, 1).Value
71
- #@ole_workbook1.Worksheets.Item(1).Cells.Item(1, 1).Value =
72
- # @old_value == "foo" ? "bar" : "foo"
73
- end
74
-
75
- context "with writability" do
76
-
77
- it "should open as read-write by default" do
78
- Workbook.unobtrusively(@simple_file1) do |book|
79
- book.Readonly.should be false
80
- #book.filename.should == @ole_workbook1.Fullname.tr('\\','/')
81
- #book.excel.ole_excel.Hwnd.should == @ole_excel1.Hwnd
82
- book.sheet(1)[1,1] = book.sheet(1)[1,1].Value == "foo" ? "bar" : "foo"
83
- end
84
- #@ole_workbook1.Saved.should be false
85
- Excel.kill_all
86
- sleep 1
87
- book2 = Workbook.open(@simple_file1)
88
- #book2.sheet(1)[1,1].Value.should == @old_value
89
- end
90
-
91
- it "should open not writable" do
92
- Workbook.unobtrusively(@simple_file1, :writable => false) do |book|
93
- book.ReadOnly.should be false
94
- book.filename.should == @ole_workbook1.Fullname.tr('\\','/')
95
- book.excel.ole_excel.Hwnd.should == @ole_excel1.Hwnd
96
- book.sheet(1)[1,1] = book.sheet(1)[1,1].Value == "foo" ? "bar" : "foo"
97
- end
98
- @book.Saved.should be false
99
- @book.sheet(1)[1,1].Value.should_not == @old_value
100
- Excel.kill_all
101
- sleep 1
102
- book2 = Workbook.open(@simple_file1)
103
- book2.sheet(1)[1,1].Value.should_not == @old_value
104
- end
105
- end
106
-
107
- context "further tests" do
108
-
109
- it "should write in the outer and not in the inner block" do
110
- Workbook.unobtrusively(@simple_file1) do |book|
111
- @old_value = book.sheet(1)[1,1].Value
112
- book.ReadOnly.should be false
113
- book.sheet(1)[1,1] = book.sheet(1)[1,1].Value == "foo" ? "bar" : "foo"
114
- book.Saved.should be false
115
- book.sheet(1)[1,1].Value.should_not == @old_value
116
- Workbook.unobtrusively(@simple_file1, :writable => false) do |book2|
117
- book2.should == book
118
- book2.ReadOnly.should be false
119
- book2.Saved.should be false
120
- book2.sheet(1)[1,1].Value.should_not == @old_value
121
- book2.sheet(1)[1,1] = book2.sheet(1)[1,1].Value == "foo" ? "bar" : "foo"
122
- book2.sheet(1)[1,1].Value.should == @old_value
123
- end
124
- book.should be_alive
125
- book.Saved.should be false
126
- book.sheet(1)[1,1].Value.should == @old_value
127
- end
128
- book = Workbook.open(@simple_file1)
129
- book.sheet(1)[1,1].Value.should == @old_value
130
- end
131
-
132
- it "should use the excel of the book and keep open the book" do
133
- @book = Workbook.open(@simple_file1)
134
- excel = Excel.new(:reuse => false)
135
- sheet = @book.sheet(1)
136
- old_cell_value = sheet[1,1].Value
137
- @book.close
138
- @book.should_not be_alive
139
- Workbook.unobtrusively(@simple_file, :keep_open => true) do |book|
140
- book.should be_a Workbook
141
- book.excel.should == @book.excel
142
- book.excel.should_not == excel
143
- sheet = book.sheet(1)
144
- cell = sheet[1,1]
145
- sheet[1,1] = cell.Value == "foo" ? "bar" : "foo"
146
- book.Saved.should be false
147
- end
148
- @book.should be_alive
149
- @book.close
150
- new_book = Workbook.open(@simple_file1)
151
- sheet = new_book.sheet(1)
152
- sheet[1,1].Value.should_not == old_cell_value
153
- end
154
-
155
- it "should use the excel of the book and keep open the book" do
156
- @book = Workbook.open(@simple_file1)
157
- excel = Excel.new(:reuse => false)
158
- sheet = @book.sheet(1)
159
- old_cell_value = sheet[1,1].Value
160
- @book.close
161
- @book.should_not be_alive
162
- Workbook.unobtrusively(@simple_file, :if_closed => :new) do |book|
163
- book.should be_a Workbook
164
- book.should be_alive
165
- book.excel.should_not == @book.excel
166
- book.excel.should_not == excel
167
- sheet = book.sheet(1)
168
- cell = sheet[1,1]
169
- sheet[1,1] = cell.Value == "foo" ? "bar" : "foo"
170
- book.Saved.should be false
171
- end
172
- @book.should_not be_alive
173
- new_book = Workbook.open(@simple_file1)
174
- sheet = new_book.sheet(1)
175
- sheet[1,1].Value.should_not == old_cell_value
176
- end
177
-
178
- it "should use a given Excel" do
179
- @book = Workbook.open(@simple_file1)
180
- @book.close
181
- new_excel = Excel.new(:reuse => false)
182
- another_excel = Excel.new(:reuse => false)
183
- Workbook.unobtrusively(@simple_file1, :if_closed => another_excel) do |book|
184
- book.excel.should_not == @book.excel
185
- book.excel.should_not == new_excel
186
- book.excel.should == another_excel
187
- end
188
- end
189
-
190
- it "should reuse Excel" do
191
- new_excel = Excel.new(:reuse => false)
192
- Workbook.unobtrusively(@simple_file1, :if_closed => :reuse) do |book|
193
- book.excel.should == @book.excel
194
- book.excel.should_not == new_excel
195
- end
196
-
197
- it "should open unobtrusively the closed book in the most recent Excel where it was open before" do
198
- @book1 = Workbook.open(@simple_file1)
199
- @book2 = Workbook.open(@simple_file1, :force_excel => :new)
200
- @book1.Readonly.should == false
201
- @book2.Readonly.should == true
202
- old_sheet = @book1.sheet(1)
203
- @old_cell_value = old_sheet[1,1].Value
204
- @book1.close
205
- @book2.close
206
- @book1.should_not be_alive
207
- @book2.should_not be_alive
208
- Workbook.unobtrusively(@simple_file1) do |book|
209
- book.excel.should_not == @book2.excel
210
- book.excel.should == @book1.excel
211
- book.ReadOnly.should == false
212
- sheet = book.sheet(1)
213
- cell = sheet[1,1]
214
- sheet[1,1] = cell.Value == "foo" ? "bar" : "foo"
215
- book.Saved.should be false
216
- end
217
- new_book = Workbook.open(@simple_file1)
218
- sheet = new_book.sheet(1)
219
- sheet[1,1].Value.should_not == @old_cell_value
220
- end
221
- end
222
- end
223
-
224
- context "with open unsaved read-only workbook" do
225
-
226
- before do
227
- @ole_workbook1 = @ole_excel1.Workbooks.Open(@simple_file1, { 'ReadOnly' => true })
228
- @old_value = @ole_workbook1.Worksheets.Item(1).Cells.Item(1, 1).Value
229
- @ole_workbook1.Worksheets.Item(1).Cells.Item(1, 1).Value =
230
- @old_value == "foo" ? "bar" : "foo"
231
- end
232
-
233
- context "with writability" do
234
-
235
- it "should open as read-only by default" do
236
- Workbook.unobtrusively(@simple_file1) do |book|
237
- book.Readonly.should be true
238
- book.filename.should == @ole_workbook1.Fullname.tr('\\','/')
239
- book.excel.ole_excel.Hwnd.should == @ole_excel1.Hwnd
240
- book.sheet(1)[1,1] = book.sheet(1)[1,1].Value == "foo" ? "bar" : "foo"
241
- end
242
- @ole_workbook1.Saved.should be false
243
- @ole_workbook1.ReadOnly.should be true
244
- @ole_workbook1.Worksheets.Item(1).Cells.Item(1, 1).Value.should_not == @old_value
245
- Excel.kill_all
246
- sleep 1
247
- book2 = Workbook.open(@simple_file1)
248
- book2.sheet(1)[1,1].Value.should_not == @old_value
249
- end
250
-
251
- it "should open not writable" do
252
- Workbook.unobtrusively(@simple_file1, :writable => false) do |book|
253
- book.ReadOnly.should be true
254
- book.filename.should == @ole_workbook1.Fullname.tr('\\','/')
255
- book.excel.ole_excel.Hwnd.should == @ole_excel1.Hwnd
256
- book.sheet(1)[1,1] = book.sheet(1)[1,1].Value == "foo" ? "bar" : "foo"
257
- end
258
- @ole_workbook1.Saved.should be false
259
- @ole_workbook1.ReadOnly.should be true
260
- @ole_workbook1.Worksheets.Item(1).Cells.Item(1, 1).Value.should_not == @old_value
261
- Excel.kill_all
262
- sleep 1
263
- book2 = Workbook.open(@simple_file1)
264
- book2.sheet(1)[1,1].Value.should == @old_value
265
- end
266
- end
267
- end
268
- end
269
- end
270
- =end
271
-
272
56
  describe "block transparency" do
273
57
 
274
58
  it "should return correct value of the block" do
@@ -314,28 +98,6 @@ describe Workbook do
314
98
 
315
99
  end
316
100
 
317
- describe "connecting to unknown workbooks" do
318
-
319
- context "with one unknown workbook" do
320
-
321
- before do
322
- ole_e1 = WIN32OLE.new('Excel.Application')
323
- ws = ole_e1.Workbooks
324
- abs_filename = General.absolute_path(@simple_file1).tr('/','\\')
325
- @ole_wb = ws.Open(abs_filename)
326
- end
327
-
328
- it "should connect to an unknown workbook" do
329
- Workbook.unobtrusively(@simple_file1) do |book|
330
- book.filename.should == @simple_file1
331
- book.excel.ole_excel.Hwnd.should == @ole_wb.Application.Hwnd
332
- end
333
- end
334
-
335
- end
336
-
337
- end
338
-
339
101
  describe "writability" do
340
102
 
341
103
  context "with no book" do
@@ -618,7 +380,7 @@ describe Workbook do
618
380
 
619
381
  it "should force to read-write" do
620
382
  Workbook.unobtrusively(@simple_file1, :writable => true) do |book|
621
- book.Readonly.should be false
383
+ book.ReadOnly.should be false
622
384
  book.should == @book
623
385
  book.filename.should == @book.filename
624
386
  book.excel.should == @book.excel
@@ -1263,11 +1025,12 @@ describe Workbook do
1263
1025
  end
1264
1026
 
1265
1027
  it "should open in another Excel instance if the given Excel instance is not alive" do
1266
- Excel.kill_all
1028
+ @excel1.close
1267
1029
  sleep 2
1268
1030
  expect{
1269
1031
  Workbook.unobtrusively(@simple_file, :if_closed => @excel2) do |book|
1270
1032
  book.should be_alive
1033
+ book.excel.should == @excel2
1271
1034
  end
1272
1035
  }.to_not raise_error
1273
1036
  end
@@ -1555,18 +1318,18 @@ describe Workbook do
1555
1318
  book.excel.displayalerts.should == :if_visible
1556
1319
  @another_excel = book.excel
1557
1320
  end
1558
- Workbook.unobtrusively(@simple_file1, :if_closed => :reuse) do |book|
1559
- book.excel.should == @book.excel
1321
+ Workbook.unobtrusively(@simple_file1, :if_closed => :current) do |book|
1322
+ book.excel.should_not == @book.excel
1560
1323
  book.excel.should_not == new_excel
1324
+ book.excel.should == @another_excel
1561
1325
  book.excel.visible.should be false
1562
1326
  book.excel.displayalerts.should == :if_visible
1563
- book.excel.should_not == @another_excel
1564
1327
  end
1565
1328
  end
1566
1329
 
1567
1330
  it "should reuse Excel" do
1568
1331
  new_excel = Excel.new(:reuse => false)
1569
- Workbook.unobtrusively(@simple_file1, :if_closed => :reuse) do |book|
1332
+ Workbook.unobtrusively(@simple_file1, :if_closed => :current) do |book|
1570
1333
  book.excel.should == @book.excel
1571
1334
  book.excel.should_not == new_excel
1572
1335
  end
@@ -1863,8 +1626,8 @@ describe Workbook do
1863
1626
 
1864
1627
  it "should open unobtrusively the closed book in the most recent Excel where it was open before" do
1865
1628
  Workbook.unobtrusively(@simple_file1) do |book|
1866
- book.excel.should_not == @book2.excel
1867
- book.excel.should == @book1.excel
1629
+ book.excel.should == @book2.excel
1630
+ book.excel.should_not == @book1.excel
1868
1631
  book.ReadOnly.should == false
1869
1632
  sheet = book.sheet(1)
1870
1633
  cell = sheet[1,1]