2015-10-14 91 views
1

如何將單元格從一張工作表(或工作表)複製到所有樣式(不僅是值)並粘貼到另一個工作表上? 感謝您的回答。RubyXL - 在工作表之間複製單元格

+1

我覺得有一個r&b的歌曲有着相同的標題,但不能把我的手指放在上面...... – Anthony

回答

1

無法幫助您使用RubyXL,但是這裏有一個測試過的sript可以做到這一點。 儘管你需要在Windows上。

require 'win32ole' 

xl=WIN32OLE::new('Excel.Application') 
xl.Visible=0 #hide excel, 1 = show 

xl.Workbooks.Open('c:\\temp\\Map1.xlsx') #will open a file 
sheet = xl.sheets(1) 
sheet.activate #activate the sheet you want 
xlPasteValues = -4163 #(&HFFFFEFBD) 
xlPasteSpecialOperationNone = -4142 #(&HFFFFEFD2) 
xlPasteFormats = -4122 # Copied source format is pasted 
xlPasteValuesAndNumberFormats = 12 
sheet.Range("A1:A2").Copy 
sheet.Range("B1:B2").PasteSpecial(xlPasteValuesAndNumberFormats) 
sheet.Range("B1:B2").PasteSpecial(xlPasteFormats) 
xl.ActiveWorkbook.Save 
xl.ActiveWorkbook.Close() 
xl.Quit 
0

花了時間吐出來,因爲我在常規基礎上使用RubyXL。 似乎有一個更好的寶石axlsx使用電子表格,更合乎邏輯和更多的事情,你可以做。這裏有一個設置和複製樣式的簡單例子。我保留其他答案供參考,因爲它有效,但有明顯的缺點。

require 'axlsx' 

p = Axlsx::Package.new 
wb = p.workbook 

wb.add_worksheet(:name => "Basic Worksheet") do |sheet| 
    sheet.add_row ["First Column", "Second", "Third"] 
    sheet.add_row [1, 2, 3] 
    sheet.add_row ['  preserving whitespace'] 
    thin_border = Axlsx::STYLE_THIN_BORDER 
    sheet['A1:A1'].first.style = thin_border 
    sheet['A1:C1'].each{|cell|cell.style = sheet['A1'].style} 
end 

p.serialize('./simple.xlsx') 
相關問題