scratchpad schemas poi ooxml for excel scala apache-poi

excel - schemas - ¿Hay un contenedor Scala para Apache POI?



poi-ooxml jar (6)

Esto es totalmente inútil, pero arreglé un DSL Scala-ish para POI. Permite código como

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

Lamentablemente, no puedo darlo sin consultar con mi jefe, pero para ser sincero, no fue tan difícil hacerlo. Debería poder aplicar ingeniería inversa a la mayoría de ese ejemplo sin muchos problemas.

Me gustaría utilizar Apache POI para leer / crear archivos de Excel en una aplicación de Scala. Claro, puedo usar la biblioteca POI directamente, es Java después de todo, pero me gustaría que Scala se sienta. Entonces, ¿hay un envoltorio de Scala que traiga la sensación de Scala (usando conversiones implícitas), es decir, algún tipo de "Scala-POI-DSL" disponible libremente?


Si está escribiendo Office XML, podría considerar evitar POI y crear el XML directamente (además de archivarlo juntos). Para las hojas de cálculo simples, es bastante simple hacerlo, y está eliminando muchas variables.

Tenga en cuenta que con el soporte OOXML de POI necesitará usar su modo de transmisión si tiene la intención de crear hojas de cálculo grandes (más de 65k filas).


Gracias a la respuesta de Dave Griffith, he pirateado algo similar a su 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")

El código se puede encontrar aquí .


PDI lujoso : no parece que haya mucha información, pero supongo que es lo que estás buscando.


Dada la falta de envoltorios avanzados de hojas de cálculo de código abierto para Scala, comencé el desarrollo de Spoiwo: https://github.com/norbert-radyk/spoiwo . Permite la generación de XSSFWorkbook y admite un subconjunto significativo de la funcionalidad de POI.

Todavía requiere un poco de documentación, pero el siguiente debe dar una idea aproximada de sus capacidades:

El ejemplo de hoja de cálculo simple con 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") } }