Parse excel file with combinator
| Stable | Prerelease |
|---|---|
| MacOS/Linux | Windows |
|---|---|
- Test file can be found in directory ExcelProcesser.Tests
- Following code can be found in directory ExcelProcesser.Tests too
openExcelProcessopenCellParsersopenSystem.DrawingopenArrayParsersletparser:ArrayParser=!@pRegex("GD.*")letworkSheet="test.xlsx"|>Excel.getWorksheetByIndex 1letreply=
workSheet
|>ArrayParser.run parser
|>fun c->c.userRange
|>Seq.map(fun c->c.Address)|>List.ofSeq
match reply with|["D2";"D4";"D11";"D13"]->pass()|_->fail()match cells of which text begins with GD, and of which background color is yellow
letparser:ArrayParser=!@(pRegex("GD.*")<&> pBkColor Color.Yellow)match cells of which text begins with GD, and of which right cell's font color is blue
letparser:ArrayParser=!@pRegex("GD.*")+>>+!@(pFontColor Color.Blue)Below operators are similiar
| Exprocessor | FParsec |
|---|---|
| +>>+ | .>>. |
| +>> | .>> |
| >>+ | >>. |
If operator prefix with ^.
eg. ^+>>+
This means it is used to parse multiple rows
Sample: match cells of which text begins with GD, and to which Second perpendicular of which text begins with GD
letparser:ArrayParser=!@pRegex("GD.*")^>>+ yPlaceholder 1^>>+!@pRegex("GD.*")Match cells whose left item beigin with STYLE and whose text begin with number Then batch the result as ExcelRange eg. "B18:E18"
letparser:ArrayParser=letsizeParser=!@pFParsec(pint32.>>pchar '#')|> xlMany
!@pRegex("STYLE.*")>>+ sizeParser
letreply=
workSheet
|> ArrayParser.run parser
|>fun c->c.userRange
|>Seq.map(fun c->c.Address)|>List.ofSeq
match reply with|["B18:E18"]->pass()|_->fail()letparser:ArrayParser=!@(pText ((=)"Begin"))+>> xUntil (fun _ ->true)!@(pText ((=)"Until"))letshift= workSheet
|>runArrayParser parser
|>fun c->c.xShifts
match shift with|[4]->pass()|_->fail()letparser:ArrayParser=!@(pText ((=)"Begin"))^+>> yUntil (fun _ ->true)!@(pText ((=)"Until"))letshift= workSheet
|>runArrayParser parser
|>fun c->c.xShifts
match shift with|[0;0;0;0;0;0;0]->pass()|_->fail()See Tests.MatrixParsers.fs For Details
- open reposity in VsCode
- .paket/paket.exe install
- cd ExcelProcesser.Tests
- dotnet restore
- press F5
