2011-07-19 81 views
4

使用http://ruby-doc.org/stdlib/libdoc/win32ole/rdoc/classes/WIN32OLE.html,因爲我寫了下面的指南:無法使用Ruby來保存Excel文件修改後與WIN32OLE

require 'win32ole' 
excel = WIN32OLE.new('Excel.Application') 
excel.visible = false #Setting this is 'true' doesn't reveal anything 
workbook = excel.workbooks.open('C:\myspreadsheet.xlsx') 
worksheet = workbook.worksheets('sheet1') 
worksheet.Activate 

data = worksheet.UsedRange.Value 
p data.size #This works! - My spreadsheet has 3987 rows. 
p data[3932] #This works, too! - I can "see" row 3932. 

worksheet.Rows(3932).Insert #Insert a row above row 3932 

data = worksheet.UsedRange.Value 
p data.size #Returns 3988! This would seem to indicate that I've successfully added a row since it was just 3987. 

workbook.saved = true #Save the workbook and quit. 
excel.ActiveWorkbook.Close(0) 
excel.Quit() 

當我畢竟這打開Excel電子表格是不變的。有任何想法嗎?

回答

3

Workbook對象的Saved屬性設置爲True不會導致工作簿被保存。該屬性用作標誌來顯示工作簿是否存在未保存的更改。將其設置爲True是防止Excel關閉時出現的「您希望保存...」對話框的簡單方法。

要實際保存工作簿,您需要Workbook對象的Save方法。這種方法不會返回任何東西,所以我會假設workbook.Save會做的伎倆(我沒有Ruby的經驗,不幸的是,所以不能100%肯定)

+0

成功!非常感謝你。 –

+0

我在「workbook.saved = true」之後立即添加了「workbook.Save」,並且一切都很順利。 –

+0

如果你不介意,出於好奇,我可以自己去哪裏找到這些信息?我很高興能夠在stackoverflow上得到一個答案,但是在這種情況下沒有文檔或引用的地方嗎?我看過,但唯一能找到的就是頂部的鏈接。再一次感謝你的幫助! –

相關問題