Ruby中是否有将CSV文件转换为Excel的插件。我用谷歌搜索了一下,但我发现的只是将Excel文件转换成CSV文件。我知道一些宝石,我可以调整一点,并使用它将Excel转换为CSV,但我需要知道是否有人这样做过
根据这篇文章,电子表格创业板是一种可能性。看起来这是一块非常受欢迎的宝石。过来看。例子:
book=电子表格::工作簿.new
sheet1=book.create\u工作表
页眉格式=电子表格::format.new(
:权重=>;:粗体,
:水平对齐=>;:居中,
:bottom=>;true,
:locked=>;true
)
sheet1.行(0).默认格式=页眉格式
FasterCSV.open(输入路径,'r')do | csv|
csv.each_with_index do|行,i|
活页1.第(i)排。更换第(i)排
终止
终止
book.write(输出路径)
根据这篇文章,write_xlsx是一种可能性
我使用ApachePOI库和JRuby导出xls文件。这里有一个简单的例子
需要“java”
需要'poi.jar'
#需要'poi ooxml.jar'
需要“rubygems”
需要'fastercsv'
java_import org.apache.poi.hssf.usermodel.HSSFWorkbook;
wb=HSSFWorkbook.new#或XSSF工作簿,用于xlsx
工作表=工作表。创建工作表(“工作表1”)
FasterCSV.open(ARGV.first)do | csv|
csv.each_,带索引do | csv_行,行号|
行=工作表。创建行(行号)
csv_行。每个_带有_索引do | csv_值,列号|
单元格=行。创建单元格(列号)
cell.setCellValue(csv_值),除非csv_值为.nil?#不能过零。
终止
终止
终止
f=java.io.FileOutputStream.new(“workbook.xls”)
wb.write(f)
f、 接近
设置POI电子表格格式的一些有用方法如下
sheet.createFriezePane(0,1,0,1)
wb.setRepeatingRowsAndColumns(0,-1,-1,0,1)
sheet.setColumnWidth(i,100*256)
sheet.autoSizeColumn(i)
,但请注意,如果您在headless模式下运行,则必须调用java.lang.System.setProperty(“java.awt.headless”,“true”)
如果已安装Excel,也可以在Windows上使用Win32 OLE
需要“win32ole”
需要“rubygems”
需要'fastercsv'
xl=WIN32OLE.new('Excel.Application')
xl.Visible=0
wb=xl.Workbooks.Add
ws=wb.工作表(1)
FasterCSV.open(ARGV.first)do | csv|
csv.each_,带索引do | csv_行,行号|
csv_行。每个_带_索引do |值,列|
ws.单元格(第1行,第1列)。值=值
终止
终止
终止
wb.SaveAs(“workbook.xls”,56)#56=xlExcel8又名Excel 97-2003。i、 e.xls
wb.SaveAs(“workbook.xlsx”,51)#51=xlOpenXMLWorkbook
wb.SaveAs(“workbook.xlsb”,50)#50=xlExcel12
wb.关闭(2)#xlDoNotSaveChanges
xl.退出
使用Excel格式化的一些有用方法包括
xl.Rows(1).Font.Bold=true
ws.Cells.entireclumn.AutoFit
另一种选择是直接写入Microsoft的XML电子表格格式,就像Railscasts.com上的Ryan Bates在导出CSV和Excel的剧集结束时所做的那样
<;?xml version=“1.0”?>;
<;工作簿xmlns=“urn:schemas microsoft com:office:spreadsheet”
xmlns:o=“urn:schemas microsoft com:office:office”
xmlns:x=“urn:schemas microsoft com:office:excel”
xmlns:ss=“urn:schemas microsoft com:office:spreadsheet”
xmlns:html=”http://www.w3.org/TR/REC-html40“>;
<;工作表ss:Name=“Sheet1”>;
<;表>;
<;世界其他地区>;
<;电池>&书信电报;数据ss:Type=“String”>;ID</数据></电池>;
<;电池>&书信电报;数据ss:Type=“String”>;名称</数据></电池>;
<;电池>&书信电报;数据ss:Type=“String”>;发布日期</数据></电池>;
<;电池>&书信电报;数据ss:Type=“String”>;价格</数据></电池>;
</世界其他地区>;
<;%@产品。每个do |产品|%>;
<;世界其他地区>;
<;电池>&书信电报;数据ss:Type=“Number”><;%=product.id%></数据></电池>;
<;电池>&书信电报;数据ss:Type=“String”><;%=product.name%></数据></电池>;
<;电池>&书信电报;数据ss:Type=“String”><;%=产品发布日期%></数据></电池>;
<;电池>&书信电报;数据ss:Type=“Number”><;%=产品价格%></数据></电池>;
</世界其他地区>;
<;%结束%>;
</表>;
</工作表>;
</工作手册>;
这颗宝石看起来也很有希望