有没有Apache POI的Scala包装?

我想使用Apache POI在Scala应用程序中读取/创buildExcel文件。 当然,我可以直接使用POI库,毕竟它是Java,但我希望有Scala的感觉。 那么是否有一个Scala包装带来了斯卡拉的感觉(使用隐式转换),也就是某种“Scala-POI-DSL”可以免费获得?

花式POI – 没有太多的信息被发现似乎,但我想这是你在找什么。

感谢Dave Griffith的回答,我已经破解了类似于他的DSL的东西。

Workbook { Sheet("name") { Row(1) { Cell(1, "data") :: Cell(2, "data2") :: Nil } :: Row(2) { Cell(1, "data") :: Cell(2, "data2") :: Nil } :: Nil } :: Sheet("name2") { Row(2) { Cell(1, "data") :: Cell(2, "data2") :: Nil } :: Nil } :: Nil }.save("/home/path/ok.xls") 

代码可以在这里find。

鉴于Scala缺乏先进的开源电子表格包装器,我开始开发Spoiwo: https : //github.com/norbert-radyk/spoiwo 。 它允许生成XSSFWorkbook并支持POIfunction的重要子集。

它仍然需要一些文档,但下面应该对其function做一个粗略的说明:

  • 快速入门指南
  • POI繁忙开发者指南的重写版本

使用Spoiwo的简单电子表格示例:

 object GettingStartedExample { val headerStyle = CellStyle(fillPattern = CellFill.Solid, fillForegroundColor = Color.AquaMarine, fillBackgroundColor = Color.AquaMarine, font = Font(bold = true)) val gettingStartedSheet = Sheet(name = "Some serious stuff") .withRows( Row(style = headerStyle).withCellValues("NAME", "BIRTH DATE", "DIED AGED", "FEMALE"), Row().withCellValues("Marie Curie", new LocalDate(1867, 11, 7), 66, true), Row().withCellValues("Albert Einstein", new LocalDate(1879, 3, 14), 76, false), Row().withCellValues("Erwin Shrodinger", new LocalDate(1887, 8, 12), 73, false) ) .withColumns( Column(index = 0, style = CellStyle(font = Font(bold = true)), autoSized = true) ) def main(args: Array[String]) { gettingStartedSheet.saveAsXlsx("C:\\Reports\\getting_started.xlsx") } } 

这是完全没有帮助的,但我砍了一个Scala-ish DSL POI。 它允许像这样的代码

 Workbook{ Sheet("Multiplication"){ for(i<-1 to 10){ Row{ for(j<-1 to 10){ Cell(i*j) } } } } }.writeToFile("multiplication.xls") 

可悲的是,我不能和老板核对,但说实话,这并不难。 你应该能够从这个例子中大部分的反向工程,没有太多的麻烦。

如果您正在编写Office XML,则可以考虑避免POI并直接创buildXML(并将其一起归档)。 对于简单的电子表格来说,实现它非常简单,而且你正在消除很多variables。

请注意,对于POI的OOXML支持,如果您打算创build大型电子表格(大于65k行),则需要使用stream式传输模式。

我不知道这种封装的任何Scala库。

围绕使用Apache POI的大多数问题都是关于迭代器的 。
alexcheng项目没有导入一个Excel文件 ,并有一个testing用例 。
但是这是关于它的。