Ruby - 将现有的xlsx附加到工作簿中

时间:2017-03-30 12:24:17

标签: ruby excel append win32ole

我在Ruby 1.9.3(在Windows上)中使用WIN32OLE来创建包含多个工作表的Excel工作簿。 我有一个.xlsx文件,我希望它成为我新工作簿中的第一个工作表。 怎么做到呢?这就是我已经做过的事情:

my_sheet_file = 'temp.xlsx'
begin
  xl = WIN32OLE.connect('Excel.Application')
rescue
  xl = WIN32OLE.new('Excel.Application')
end
wb = xl.Workbooks.Add()
ws = wb.Worksheets(1)
ws.Name = "My Sheet"
#need to write temp.xlsx into ws somehow

感谢。

1 个答案:

答案 0 :(得分:0)

这是我在Github上找到的宝石:https://gist.github.com/phollyer/1214475

#!/usr/bin/env ruby
require 'spreadsheet'

# Begin Test
print "Spreadsheet Test\n"

# Create the rows to be inserted
row_1 = ['A1', 'B1']
row_2 = ['A2', 'B2']

# Create a new Workbook
new_book = Spreadsheet::Workbook.new

# Create the worksheet
new_book.create_worksheet :name => 'Sheet Name'

# Add row_1
new_book.worksheet(0).insert_row(0, row_1)

# Write the file
new_book.write('test.xls')

# Wait for the user to inspect the file manually
print "Sheet Created, press Enter to continue...."
gets

# Open the previously created Workbook
open_book = Spreadsheet.open('test.xls')

# Get the row index in order to append a new row 
# after any exisitng rows with data
new_row_index = open_book.worksheet(0).last_row_index + 1

# Indicate the row index to the user
print "Inserting new row at index: #{new_row_index}\n"

# Insert row_2
open_book.worksheet(0).insert_row(new_row_index, row_2)

# Delete the file so that it can be re-written
File.delete('test.xls')

# Write out the Workbook again
open_book.write('test.xls')

# End Test
print "Test Complete.\n"