2014-01-24 56 views
2

我試圖打開一個現有的.xls文件和一個電子表格覆蓋的內容(標籤)。還有在很多文件選項卡和許多有數據透視表和其他視覺呈現。如何與電子表格寶石.xls的編輯選項卡?

我已經嘗試電子表格和axlsx。 Axlsx具有很好的控制功能,但會覆蓋整個文件,包括任何其他創建的選項卡。電子表格將打開和編輯文件,但你必須複製其他選項卡,將刪除的Excel格式。

是否有使用Ruby到電子表格中的數據添加到只有一個標籤,而不在其他選項卡更換內容的方法嗎?

更新:

這裏是我現在測試使用電子表格的寶石。我可以打開具有多個選項卡,其中一個選項卡包含一個數據透視表中的電子表格,另一個包含圖表,和另一個的原始數據。他們必須保存爲新的文檔,否則你會得到一個文件格式不是有效的錯誤。

open_book = Spreadsheet.open('../data/exports/test_output_dashboard.xls') 
    puts "#{open_book.worksheet(0)}" 
    puts "#{open_book.worksheet(1)}" 
    puts "#{open_book.worksheet(2)}" 
    open_book.write('../data/exports/test_output_dashboard_2.xls') 

如果我只是打開並重新保存新文檔是好的,原來的工作副本。但是,如果我使用此代碼中的原始數據編輯選項卡,那麼當我打開該文件時,它將顯示爲需要「修復」,並且沒有任何選項卡顯示正確的信息。

open_book = Spreadsheet.open('../data/exports/test_output_dashboard.xls') 
puts "#{open_book.worksheet(0)}" 
puts "#{open_book.worksheet(1)}" 
puts "#{open_book.worksheet(2)}" 
new_row_index = open_book.worksheet(1).last_row_index + 1 
open_book.worksheet(1).insert_row(new_row_index, row_2) 
open_book.write('../data/exports/test_output_dashboard_4.xls') 

用於添加數據到Excel文檔的一個翼片,同時保持其他標籤完好任何建議,將不勝感激。解決方案可以是任何寶石,也可以是任何語言或自動化工具。

UPDATE:

這裏是我使用的測試爲例Excel的儀表板。我正在將行寫入數據選項卡。 https://dl.dropboxusercontent.com/u/23226147/test_output_dashboard.xlsx

UPDATE:

隨着RubyXL我可以打開和檢查每個選項卡的內容,但保存的文檔無法通過Excel打開。

工作簿= RubyXL :: Parser.parse( 「../數據/出口/ test_output_dashboard.xlsx」) 看跌期權 「#{workbook.worksheets [0] .inspect}」 看跌期權「#{workbook.worksheets [ 1] .inspect} 「 看跌期權 」#{workbook.worksheets [2] .inspect}「 workbook.write(」 ../數據/出口/ test_output_dashboard_5.xlsx「)

回答

0

我使用修改的Excel等試算表與寶石win32ole,它工作正常。

在情況下,它是給你的有趣這裏是一個簡短的樣本打開一個文件,並激活一個給定的標籤:

excel = WIN32OLE.new('Excel.Application') 
excel.visible = true 
filepath = 'e:\tmp\file.xlsx' 
cur_book = excel.workbooks.Open(filepath) 
sheet_name = 'sheet1' 
cur_sheet = cur_book.Worksheets(sheet_name) 
# put value 10 in Cell(2,2) 
cur_sheet.Cells(2,2).Value = 10 

正式文件:http://ruby-doc.org/stdlib-1.9.3/libdoc/win32ole/rdoc/WIN32OLE.html

+0

是隻有窗戶的寶石?我在Mac上。你用什麼系統? – analyticsPierce

+0

對不起,我的解決方案可能只是Windows。 – doc75

2

如果你只是尋找一種快速工具,RubyXL可能會爲你做的伎倆:

https://github.com/weshatheleopard/rubyXL

它解析現有的.xlsx .XLSM文件nd有一套體面的文件。

+0

是的我也試過RubyXL。我將我的代碼添加到了我的原始問題中。當我嘗試它時,保存的文件無法通過Excel打開。我嘗試用我添加到我的問題的示例excel文件。有什麼我應該做的與我如何使用RubyXL有所不同? – analyticsPierce

+0

這可能是導致它無法保存的問題:http://stackoverflow.com/questions/14174451/rubyxl-errnoenoent我沒有深入你的文件;但也許你的表單編號系統不符合寶石假定的固有單一迭代。我會四處尋找另一種選擇。 – Sady

0

您可以嘗試cloudxls.com API。您可以使用其API將數據合併到現有的xls和xlsx文件中。如果這不是一個選項,你很可能必須使用一些Java庫,比如Apache POI。