如何将CSV转换为Excel?

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”>
<表>
<世界其他地区>
<电池&gt&书信电报;数据ss:Type=“String”>ID&lt/数据&gt&lt/电池>
<电池&gt&书信电报;数据ss:Type=“String”>名称&lt/数据&gt&lt/电池>
<电池&gt&书信电报;数据ss:Type=“String”>发布日期&lt/数据&gt&lt/电池>
<电池&gt&书信电报;数据ss:Type=“String”>价格&lt/数据&gt&lt/电池>
&lt/世界其他地区>
<%@产品。每个do |产品|%>
<世界其他地区>
<电池&gt&书信电报;数据ss:Type=“Number”&gt<%=product.id%&gt&lt/数据&gt&lt/电池>
<电池&gt&书信电报;数据ss:Type=“String”&gt<%=product.name%&gt&lt/数据&gt&lt/电池>
<电池&gt&书信电报;数据ss:Type=“String”&gt<%=产品发布日期%&gt&lt/数据&gt&lt/电池>
<电池&gt&书信电报;数据ss:Type=“Number”&gt<%=产品价格%&gt&lt/数据&gt&lt/电池>
&lt/世界其他地区>
<%结束%>
&lt/表>
&lt/工作表>
&lt/工作手册>

这颗宝石看起来也很有希望

发表评论