@@ -5,7 +5,6 @@ Apache poi dsl for scala
5
5
## Usage
6
6
7
7
``` scala
8
-
9
8
scala> import info .folone .scala .poi ._
10
9
import info .folone .scala .poi ._
11
10
@@ -24,83 +23,83 @@ import std.list._
24
23
25
24
// Creating a test workbook
26
25
scala> val sheetOne = Workbook {
27
- | Set (Sheet (" name" ) {
28
- | Set (Row (1 ) {
29
- | Set (NumericCell (1 , 13.0 / 5 ), FormulaCell (2 , " ABS(A1)" ))
30
- | },
31
- | Row (2 ) {
32
- | Set (StringCell (1 , " data" ), StringCell (2 , " data2" ))
33
- | })
34
- | },
35
- | Sheet (" name2" ) {
36
- | Set (Row (2 ) {
37
- | Set (BooleanCell (1 , true ), NumericCell (2 , 2.4 ))
38
- | })
39
- | })
40
- | }
41
- sheetOne: info.folone.scala.poi.Workbook = Workbook (Set (Sheet (" name" )(Set (Row (1 )(Set (NumericCell (1 ,2.6 ), FormulaCell (2 ,ABS (A0 ) ))), Row (2 )(Set (StringCell (1 ,data), StringCell (2 ,data2))))), Sheet (" name2" )(Set (Row (2 )(Set (BooleanCell (1 ,true ), NumericCell (2 ,2.4 )))))))
26
+ Set (Sheet (" name" ) {
27
+ Set (Row (1 ) {
28
+ Set (NumericCell (1 , 13.0 / 5 ), FormulaCell (2 , " ABS(A1)" ))
29
+ },
30
+ Row (2 ) {
31
+ Set (StringCell (1 , " data" ), StringCell (2 , " data2" ))
32
+ })
33
+ },
34
+ Sheet (" name2" ) {
35
+ Set (Row (2 ) {
36
+ Set (BooleanCell (1 , true ), NumericCell (2 , 2.4 ))
37
+ })
38
+ })
39
+ }
40
+ sheetOne: info.folone.scala.poi.Workbook = Workbook (Set (Sheet (" name" )(Set (Row (1 )(Set (NumericCell (1 , 2.6 ), FormulaCell (2 , " = ABS(A1) " ))), Row (2 )(Set (StringCell (1 , " data" ), StringCell (2 , " data2" ))))), Sheet (" name2" )(Set (Row (2 )(Set (BooleanCell (1 , true ), NumericCell (2 , 2.4 )))))))
42
41
43
42
scala> val path = " /home/folone/ok.xls"
44
- path: java.lang. String = / home/ folone/ ok.xls
43
+ path: String = / home/ folone/ ok.xls
45
44
46
45
// Saving the result (yes, it does control side-effects via scalaz.IO)
47
46
scala> sheetOne.safeToFile(path).unsafePerformIO
47
+ res0: scalaz.\/ [Throwable ,Unit ] = \/- (())
48
48
49
49
// Let's create another workbook
50
50
scala> val sheetTwo = Workbook {
51
- | Set (Sheet (" name" ) {
52
- | Set (Row (1 ) {
53
- | Set (StringCell (1 , " newdata" ), StringCell (2 , " data2" ), StringCell (3 , " data3" ))
54
- | },
55
- | Row (2 ) {
56
- | Set (StringCell (1 , " data" ), StringCell (2 , " data2" ))
57
- | },
58
- | Row (3 ) {
59
- | Set (StringCell (1 , " data" ), StringCell (2 , " data2" ))
60
- | })
61
- | },
62
- | Sheet (" name" ) {
63
- | Set (Row (2 ) {
64
- | Set (StringCell (1 , " data" ), StringCell (2 , " data2" ))
65
- | })
66
- | })
67
- | }
68
- sheetTwo: info.folone.scala.poi.Workbook = Workbook (Set (Sheet (" name" )(Set (Row (1 )(Set (StringCell (1 ,newdata), StringCell (2 ,data2), StringCell (3 ,data3))), Row (2 )(Set (StringCell (1 ,data), StringCell (2 ,data2))), Row (3 )(Set (StringCell (1 ,data), StringCell (2 ,data2))))), Sheet (" name" )(Set (Row (2 )(Set (StringCell (1 ,data), StringCell (2 ,data2)))))))
51
+ Set (Sheet (" name" ) {
52
+ Set (Row (1 ) {
53
+ Set (StringCell (1 , " newdata" ), StringCell (2 , " data2" ), StringCell (3 , " data3" ))
54
+ },
55
+ Row (2 ) {
56
+ Set (StringCell (1 , " data" ), StringCell (2 , " data2" ))
57
+ },
58
+ Row (3 ) {
59
+ Set (StringCell (1 , " data" ), StringCell (2 , " data2" ))
60
+ })
61
+ },
62
+ Sheet (" name" ) {
63
+ Set (Row (2 ) {
64
+ Set (StringCell (1 , " data" ), StringCell (2 , " data2" ))
65
+ })
66
+ })
67
+ }
68
+ sheetTwo: info.folone.scala.poi.Workbook = Workbook (Set (Sheet (" name" )(Set (Row (1 )(Set (StringCell (1 , " newdata" ), StringCell (2 , " data2" ), StringCell (3 , " data3" ))), Row (2 )(Set (StringCell (1 , " data" ), StringCell (2 , " data2" ))), Row (3 )(Set (StringCell (1 , " data" ), StringCell (2 , " data2" ))))), Sheet (" name" )(Set (Row (2 )(Set (StringCell (1 , " data" ), StringCell (2 , " data2" )))))))
69
69
70
70
scala> import syntax .equal ._
71
71
import syntax .equal ._
72
72
73
73
// And let's merge the saved workbook from before with the new one using the Monoid instance
74
- scala> Workbook (path).map {
75
- | case \/- (workbook) => (workbook |+| sheetTwo) === (sheetOne |+| sheetTwo)
76
- | case -\/ (_) => false
77
- | }
78
- res5 : scalaz.effect.IO [Boolean ] = scalaz.effect.IOFunctions $$anon$5 @ 2e48f14
74
+ scala> val res0 = { Workbook (path).map {
75
+ case \/- (workbook) => (workbook |+| sheetTwo) === (sheetOne |+| sheetTwo)
76
+ case -\/ (_) => false
77
+ } }
78
+ res0 : scalaz.effect.IO [Boolean ] = scalaz.effect.IOFunctions $$anon$5 @ 5fc1a208
79
79
80
- scala> .unsafePerformIO
81
- res6 : Boolean = true
80
+ scala> res0 .unsafePerformIO
81
+ res1 : Boolean = true
82
82
83
83
// The impure syntax:
84
84
scala> import impure ._
85
85
import impure ._
86
86
87
87
scala> sheetOne.overwrite(path)
88
- res4: scalaz.\/ [Throwable ,Unit ] = \/- (())
89
88
90
89
scala> sheetOne
91
- res5 : info.folone.scala.poi.Workbook = Workbook (Set (Sheet (" name" )(Set (Row (1 )(Set (NumericCell (1 ,2.6 ), FormulaCell (2 ,ABS (A1 )))), Row (2 )(Set (StringCell (1 ,data), StringCell (2 ,data2))))), Sheet (" name2" )(Set (Row (2 )(Set (BooleanCell (1 ,true ), NumericCell (2 ,2.4 )))))))
90
+ res3 : info.folone.scala.poi.Workbook = Workbook (Set (Sheet (" name" )(Set (Row (1 )(Set (NumericCell (1 , 2.6 ), FormulaCell (2 , " = ABS(A1)" ))), Row (2 )(Set (StringCell (1 , " data" ), StringCell (2 , " data2" ))))), Sheet (" name2" )(Set (Row (2 )(Set (BooleanCell (1 , true ), NumericCell (2 , 2.4 )))))))
92
91
93
92
scala> val mergeSheets = sheetOne |+| sheetTwo
94
- mergeSheets: info.folone.scala.poi.Workbook = Workbook (Set (Sheet (" name2" )(Set (Row (2 )(Set (BooleanCell (1 ,true ), NumericCell (2 ,2.4 ))))), Sheet (" name" )(Set (Row (1 )(Set (NumericCell (1 ,2.6 ), FormulaCell (2 ,ABS (A1 )))), Row (2 )(Set (StringCell (1 ,data), StringCell (2 ,data2)))))))
93
+ mergeSheets: info.folone.scala.poi.Workbook = Workbook (Set (Sheet (" name2" )(Set (Row (2 )(Set (BooleanCell (1 , true ), NumericCell (2 , 2.4 ))))), Sheet (" name" )(Set (Row (1 )(Set (NumericCell (1 , 2.6 ), FormulaCell (2 , " = ABS(A1)" ))), Row (2 )(Set (StringCell (1 , " data" ), StringCell (2 , " data2" )))))))
95
94
96
95
scala> val sheetOneReloaded = load(path)
97
- sheetOneReloaded: info.folone.scala.poi.Workbook = Workbook (Set (Sheet (" name" )(Set (Row (2 )(Set (StringCell (1 ,data ), StringCell (2 ,data2))) , Row (1 )(Set (NumericCell (1 ,2.6 ), FormulaCell (2 ,ABS ( A1 )))))) , Sheet (" name2" )(Set (Row (2 )(Set (BooleanCell (1 ,true ), NumericCell (2 ,2.4 )))))))
96
+ sheetOneReloaded: info.folone.scala.poi.Workbook = Workbook (Set (Sheet (" name" )(Set (Row (1 )(Set (NumericCell (1 , 2.6 ), FormulaCell (2 , " =ABS(A1) " ))) , Row (2 )(Set (StringCell (1 , " data " ), StringCell (2 , " data2 " ))))), Sheet (" name2" )(Set (Row (2 )(Set (BooleanCell (1 , true ), NumericCell (2 , 2.4 )))))))
98
97
99
98
scala> val mergeSheets2 = sheetOneReloaded |+| sheetTwo
100
- mergeSheets2: info.folone.scala.poi.Workbook = Workbook (Set (Sheet (" name2" )(Set (Row (2 )(Set (BooleanCell (1 ,true ), NumericCell (2 ,2.4 ))))), Sheet (" name" )(Set (Row (1 )(Set (NumericCell (1 ,2.6 ), FormulaCell (2 ,ABS (A1 )))), Row (2 )(Set (StringCell (1 ,data), StringCell (2 ,data2)))))))
99
+ mergeSheets2: info.folone.scala.poi.Workbook = Workbook (Set (Sheet (" name2" )(Set (Row (2 )(Set (BooleanCell (1 , true ), NumericCell (2 , 2.4 ))))), Sheet (" name" )(Set (Row (1 )(Set (NumericCell (1 , 2.6 ), FormulaCell (2 , " = ABS(A1)" ))), Row (2 )(Set (StringCell (1 , " data" ), StringCell (2 , " data2" )))))))
101
100
102
101
scala> mergeSheets == mergeSheets2
103
- res7 : Boolean = true
102
+ res4 : Boolean = true
104
103
```
105
104
106
105
0 commit comments