2015-10-14 92 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') 
相关问题