{"id":13792114,"url":"https://github.com/simmone/racket-simple-xlsx","last_synced_at":"2026-02-18T07:32:36.637Z","repository":{"id":24759618,"uuid":"28172621","full_name":"simmone/racket-simple-xlsx","owner":"simmone","description":"a Open Xml Spreadsheet Format(.xlsx) file tool for racket-lang","archived":false,"fork":false,"pushed_at":"2025-03-22T18:38:19.000Z","size":8000,"stargazers_count":27,"open_issues_count":0,"forks_count":9,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-10-20T15:01:11.398Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Racket","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/simmone.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2014-12-18T07:13:11.000Z","updated_at":"2025-03-22T18:38:22.000Z","dependencies_parsed_at":"2024-02-25T02:25:33.420Z","dependency_job_id":"d0827b48-8fce-4552-8502-4b11333f9541","html_url":"https://github.com/simmone/racket-simple-xlsx","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/simmone/racket-simple-xlsx","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simmone%2Fracket-simple-xlsx","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simmone%2Fracket-simple-xlsx/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simmone%2Fracket-simple-xlsx/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simmone%2Fracket-simple-xlsx/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/simmone","download_url":"https://codeload.github.com/simmone/racket-simple-xlsx/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simmone%2Fracket-simple-xlsx/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29572419,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-18T06:19:27.422Z","status":"ssl_error","status_checked_at":"2026-02-18T06:18:44.348Z","response_time":162,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-03T22:01:08.373Z","updated_at":"2026-02-18T07:32:36.614Z","avatar_url":"https://github.com/simmone.png","language":"Racket","funding_links":[],"categories":["Racket"],"sub_categories":["game"],"readme":"# simple-xlsx: access .xlsx file in Racket\n\nChen Xiao \u003c[chenxiao770117@gmail.com](mailto:chenxiao770117@gmail.com)\u003e\n\nThe `simple-xlsx` read and write `.xlsx` file.\n\n1. Campatible with Microsoft Office, Google Sheets, Libre Office, WPS.\n\n2. Support string, number, date as data type.\n\n3. Multiple style supported: color, border, font, etc.\n\n4. Can generate simple chart sheet.\n\n    1 Install                                              \n                                                           \n    2 Basic Example                                        \n      2.1 Generate a xlsx file                             \n      2.2 Read a xlsx file                                 \n      2.3 Read a xlsx file, modify something and Write back\n                                                           \n    3 Top Level: \\*-xlsx                                   \n      3.1 write-xlsx                                       \n      3.2 read-xlsx                                        \n      3.3 read-and-write-xlsx                              \n      3.4 get-sheet-name-list                              \n      3.5 get-sheet-count                                  \n                                                           \n    4 Second Level: with-sheet\\*                           \n      4.1 with-sheet-\\*                                    \n                                                           \n    5 Add Data Sheet                                       \n      5.1 add-data-sheet                                   \n                                                           \n    6 Access Data                                          \n      6.1 cell/cell-value?                                 \n      6.2 Example Sheet Data                               \n      6.3 Skip the with-sheet\\*                            \n      6.4 get-cell/set-cell!                               \n      6.5 get-row/set-row!                                 \n      6.6 get-rows/set-rows!                               \n      6.7 get-col/set-col!                                 \n      6.8 get-cols/set-cols!                               \n      6.9 get-rows-count/get-cols-count                    \n                                                           \n    7 Set Styles                                           \n      7.1 about styles                                     \n      7.2 cell/row/col range                               \n      7.3 set-row-range-height                             \n      7.4 set-col-range-width                              \n      7.5 set-freeze-row-col-range                         \n      7.6 set-merge-cell-range                             \n      7.7 about color                                      \n      7.8 set-cell-range-border-style                      \n      7.9 set-font-style                                   \n      7.10 set-alignment-style                             \n      7.11 set-number-style                                \n      7.12 set-date-style                                  \n      7.13 set-fill-style                                  \n                                                           \n    8 Add Chart Sheet                                      \n      8.1 add-chart-sheet                                  \n      8.2 Line Chart                                       \n      8.3 Bar Chart                                        \n      8.4 Pie Chart                                        \n\n## 1. Install\n\nraco pkg install simple-xlsx\n\nCaution: simple-xlsx depends on package: simple-xml, if you have\ninstalled simple-xml, should update the package to newest version.\n\n## 2. Basic Example\n\n### 2.1. Generate a xlsx file\n\n`(write-xlsx`                                                       \n  `\"basic.xlsx\"`                                                    \n  `(lambda ()`                                                      \n    `(add-data-sheet \"Sheet1\" '((\"month1\" \"month2\" \"month3\" \"month4\"\n\"real\")))`                                                          \n                                                                    \n    `(add-data-sheet \"Sheet2\" '((201601 100 110 1110 6.9)))))`      \n\n1. All operations in `write-xlsx`’s lambda scope.\n\n2. Specify file name, sheet name, have same count’s list data, done.\n\n### 2.2. Read a xlsx file\n\n`(read-xlsx`                                                          \n  `\"basic_write.xlsx\"`                                                \n  `(lambda ()`                                                        \n    `(check-equal? (get-sheet-name-list) '(\"Sheet1\" \"Sheet2\"))`       \n                                                                      \n    `(with-sheet-ref`                                                 \n    `0`                                                               \n    `(lambda ()`                                                      \n      `(check-equal? (get-row 1) '(\"month1\" \"month2\" \"month3\" \"month4\"\n\"real\"))))`                                                           \n                                                                      \n    `(with-sheet-ref`                                                 \n    `1`                                                               \n    `(lambda ()`                                                      \n      `(check-equal? (get-row 1) '(201601 100 110 1110 6.9))))))`     \n\nNavigate to a specific sheet have two ways: use index or name\n\n1. use sheet index: \\*\\*\\*\\*-ref, index from 0\n\n`(with-sheet-ref`   \n  `sheet_index`     \n  `(lambda () ...))`\n\n2. use sheet name: \\*\\*\\*\\*-name\n\n`(with-sheet-name`  \n  `sheet_name`      \n  `(lambda () ...))`\n\n### 2.3. Read a xlsx file, modify something and Write back\n\n`(read-and-write-xlsx`                                              \n  `basic_write_file`                                                \n  `basic_read_and_write_file`                                       \n  `(lambda ()`                                                      \n    `(check-equal? (get-sheet-name-list) '(\"Sheet1\" \"Sheet2\"))`     \n                                                                    \n    `(with-sheet-ref`                                               \n    `0`                                                             \n    `(lambda ()`                                                    \n      `(set-cell-value! \"B1\" \"John\")`                               \n      `(check-equal? (get-row 1) '(\"month1\" \"John\" \"month3\" \"month4\"\n\"real\"))))`                                                         \n                                                                    \n    `(with-sheet-ref`                                               \n    `1`                                                             \n    `(lambda ()`                                                    \n      `(check-equal? (get-row 1) '(201601 100 110 1110 6.9))))`     \n      `))`                                                          \n\nThe first arg is read file, second is the write back file, these two can\nbe a same file, if you want to replace the oringinal.\n\n## 3. Top Level: \\*-xlsx\n\nAll the operations on the xlsx file: write, read, modify, should be\nplaced in top level functions:\n\nwrite-xlsx: In its scope, add sheets, set data or styles, in the end,\ngenerate a new xlsx file.\n\nread-xlsx: In its scope, read from a xlsx file, get data.\n\nread-and-write-xlsx: In its scope, read from a xlsx file, set data or\nstyles, in the end, write back a new file or overlap the original file.\n\n### 3.1. write-xlsx\n\n```racket\nwrite-xlsx (-\u003e path-string? procedure? any)\n```\n\narg1: The output file name.\n\narg2: user procedure.\n\n### 3.2. read-xlsx\n\n```racket\nread-xlsx (-\u003e path-string? procedure? any)\n```\n\narg1: The input file name.\n\narg2: user procedure.\n\n### 3.3. read-and-write-xlsx\n\n```racket\nread-and-write-xlsx (-\u003e path-string? path-string? procedure? any)\n```\n\narg1: The input file name.\n\narg2: The output file name.\n\narg3: user procedure.\n\n### 3.4. get-sheet-name-list\n\n```racket\nget-sheet-name-list (-\u003e (listof string?))\n```\n\n### 3.5. get-sheet-count\n\n```racket\nget-sheet-count (-\u003e natural?)\n```\n\n## 4. Second Level: with-sheet\\*\n\nIn the with-sheet-\\*’s scope, you can get and set sheet data, set sheet\nstyles, etc.\n\n### 4.1. with-sheet-\\*\n\n```racket\nwith-sheet-ref (-\u003e natural? procedure? any)\nwith-sheet (-\u003e procedure? any)             \nwith-sheet-name (-\u003e string? procedure? any)\n```\n\nwith-sheet-ref’s first argument is the sheet index, start from 0.\nwith-sheet means with-sheet-ref 0. with-sheet-name use sheet name to\nspecify.\n\nAll the sheet data’s operations: get or set data, set data’s styles\nshould be placed in the with-sheet-\\*.\n\nBecause most methods is effect in the sheet scope, so normally, the code\nstyle is like below:\n\n```racket\n(write-xlsx                                                                  \n  \"out.xlsx\"                                                                 \n  (lambda ()                                                                 \n    (add-data-sheet \"Sheet1\" '((\"month1\" \"month2\" \"month3\" \"month4\" \"real\")))\n                                                                             \n    (with-sheet-ref                                                          \n    0                                                                        \n    (lambda ()                                                               \n      (set-cell! \"B1\" \"John\")))))                                            \n```\n\n## 5. Add Data Sheet\n\nIn the write-xlsx, you can add data sheets.\n\n### 5.1. add-data-sheet\n\n```racket\nadd-data-sheet (-\u003e string? (listof list?) void?)\n```\n\nfirst argument is sheet name: sheet name is unique, can’t have\nduplicated sheet names.\n\nsecond argument is a listof list.\n\ndata type you can use: string, number, date.\n\ndata is a listof list, each list’length can be different.\n\naccording to the longest list, function will pad value on the right to\nkeep all the list have the same length.\n\ndefault pad value is \"\", you can use \\#:fill? to specify other values.\n\nie:\n\n```racket\n(add-data-sheet               \n  \"Sheet1\"                    \n  '(                          \n    (\"a\" \"b\" \"c\")             \n    (1)                       \n    (1.0 2.0)                 \n    ))                        \n                              \n will add the data list below:\n '(                           \n   (\"a\" \"b\" \"c\")              \n   (1 \"\" \"\")                  \n   (1.0 2.0 \"\")               \n   )                          \n```\n\nuse \\#:start\\_cell? to specify the datalist’s start cell, default is\n\"A1\".\n\ncombine write-xlsx and add-data-sheet, you can generate a xlsx file:\n\n```racket\n(write-xlsx                                         \n  basic_file                                        \n  (lambda ()                                        \n    (add-data-sheet                                 \n      \"Sheet1\"                                      \n      '(                                            \n        (\"month1\" \"month2\" \"month3\" \"month4\" \"real\")\n        (201601 100 110 1110 6.9))                  \n       )                                            \n     ))                                             \n```\n\n## 6. Access Data\n\n### 6.1. cell/cell-value?\n\ncell is the XLSX’s cell’s name:\n\nFirst is the column’s index identified by the alphabet from \"A\".\n\nSecond is the row’s index identified by the number from 1.\n\nExample: Cell in the second row, the third column, so cell is \"C2\".\n\ncell-value can be these type: string, number, date.\n\n### 6.2. Example Sheet Data\n\n```racket\n(add-data-sheet \"sheet1\" '(        \n                            (1 2 3)\n                            (4 5 6)\n                          ))       \n```\n\n### 6.3. Skip the with-sheet\\*\n\nIf not have a mass access on a sheet, you can get/set data a sheet\ndirectly, not need in a with-sheet\\* scope.\n\nExample:\n\n1. Normally get a cell’s value:\n\n```racket\n(with-sheet (lambda () (get-cell \"A1\") ...))\n```\n\n2. Direct get a cell’s value:\n\n```racket\n(get-sheet-ref-cell 0 \"A1\")\n```\n\nThere are 3 ways to locate a sheet:\n\nsheet-ref: use sheet index, start from 0.\n\nsheet-name: use sheet name, match exactly.\n\nsheet-\\*name\\*: use part of sheet name, locate first matched sheet name.\n\nExample:\n\nget-cell have 3 direct function:\n\n```racket\nget-sheet-ref-cell, get-sheet-name-cell, get-sheet-*name*-cell\n```\n\n### 6.4. get-cell/set-cell!\n\n```racket\nget-cell (-\u003e string? cell-value?)\n                                 \n(check-equals (get-cell \"B2\") 5) \n```\n\nDirect function:\n\n```racket\nget-sheet-ref-cell, get-sheet-name-cell, get-sheet-*name*-cell\n```\n\n```racket\nset-cell! (-\u003e string? cell-value? void?)\n                                        \n(set-cell! \"C1\" 8)                      \n```\n\nDirect function:\n\n```racket\nset-sheet-ref-cell!, set-sheet-name-cell!, set-sheet-*name*-cell!\n```\n\n### 6.5. get-row/set-row!\n\nRow’s index from 1.\n\n```racket\nget-row (-\u003e natural? (listof cell-value?))\n                                          \n(check-equal? (get-row 1) '(1 2 3))       \n```\n\nDirect function:\n\n```racket\nget-sheet-ref-row, get-sheet-name-row, get-sheet-*name*-row\n```\n\n```racket\nset-row! (-\u003e natural? (listof cell-value?) void?)\n                                                 \n(set-row! 1 '(7 8 9))                            \n```\n\nDirect function:\n\n```racket\nset-sheet-ref-row!, set-sheet-name-row!, set-sheet-*name*-row!\n```\n\n### 6.6. get-rows/set-rows!\n\n```racket\nget-rows (-\u003e (listof (listof cell-value?))) \n                                            \n(check-equal? (get-rows) '((1 2 3) (4 5 6)))\n```\n\nDirect function:\n\n```racket\nget-sheet-ref-rows, get-sheet-name-rows, get-sheet-*name*-rows\n```\n\n```racket\nset-rows! (-\u003e (listof (listof cell-value?)) void?)\n                                                  \n(set-rows! '((1 2 3) (7 8 9)))                    \n```\n\nDirect function:\n\n```racket\nset-sheet-ref-rows!, set-sheet-name-rows!, set-sheet-*name*-rows!\n```\n\n### 6.7. get-col/set-col!\n\nCol’s index from 1.\n\n```racket\nget-col (-\u003e natural? (listof cell-value?))\n                                          \n(check-equal? (get-col 1) '(1 4))         \n(check-equal? (get-col 2) '(2 5))         \n(check-equal? (get-col 3) '(3 6))         \n```\n\nDirect function:\n\n```racket\nget-sheet-ref-col, get-sheet-name-col, get-sheet-*name*-col\n```\n\n```racket\nset-col! (-\u003e natural? (listof cell-value?) void?)\n                                                 \n(set-col! 1 '(7 8))                              \n```\n\nDirect function:\n\n```racket\nset-sheet-ref-col!, set-sheet-name-col!, set-sheet-*name*-col!\n```\n\n### 6.8. get-cols/set-cols!\n\n```racket\nget-cols (-\u003e (listof (listof cell-value?)))   \n                                              \n(check-equal? (get-cols) '((1 4) (2 5) (3 6)))\n```\n\nDirect function:\n\n```racket\nget-sheet-ref-cols, get-sheet-name-cols, get-sheet-*name*-cols\n```\n\n```racket\nset-cols! (-\u003e (listof (listof cell-value?)) void?)\n                                                  \n(set-cols! '((7 8) (9 0) (1 2)))                  \n```\n\nDirect function:\n\n```racket\nset-sheet-ref-cols!, set-sheet-name-cols!, set-sheet-*name*-cols!\n```\n\n### 6.9. get-rows-count/get-cols-count\n\n```racket\nget-rows-count (-\u003e natural?)     \nget-cols-count (-\u003e natural?)     \n                                 \n(check-equal? (get-rows-count) 2)\n(check-equal? (get-cols-count) 3)\n```\n\nDirect function:\n\n```racket\nget-sheet-ref-rows-count, get-sheet-name-rows-count, get-sheet-*name*-rows-count\n```\n\n```racket\nget-sheet-ref-cols-count, get-sheet-name-cols-count, get-sheet-*name*-cols-count\n```\n\n## 7. Set Styles\n\nadd styles to sheets.\n\n### 7.1. about styles\n\n1. styles only can be setted in one sheet, need be in a\nwith-data-sheet-\\*’s scope.\n\n2. you can set cell range, row range, col range styles.\n\n3. if you have overlap styles, the overlap area’s style will be piled\nup.\n\n### 7.2. cell/row/col range\n\ncell range: \"A1-B3\".\n\nrow range: \"1-3\", start from 1.\n\ncol range: \"A-C\" or \"1-3\", start from 1.\n\n### 7.3. set-row-range-height\n\n```racket\nset-row-range-height (-\u003e string? natural? void?)\n```\n\narg1: row range.\n\narg2: row height.\n\n### 7.4. set-col-range-width\n\n```racket\nset-col-range-width (-\u003e string? natural? void?)\n```\n\narg1: col range.\n\narg2: col width.\n\nExample:\n\n```racket\n(set-col-range-width \"A-C\" 30) \n(set-row-range-height \"1-2\" 40)\n```\n\n\n\n### 7.5. set-freeze-row-col-range\n\n```racket\nset-freeze-row-col-range (-\u003e natural? natural? void?)\n```\n\nfreeze rows and cols.\n\narg1: rows count.\n\narg2: cols count.\n\n```racket\n(set-freeze-row-col-range 2 2)\n```\n\n### 7.6. set-merge-cell-range\n\n```racket\nset-merge-cell-range (-\u003e cell-range? void?)\n```\n\n```racket\ncell-range?: as \"A1-C3\" or \"A1:C3\"\n```\n\nset merge cell ranges.(multiple times)\n\n```racket\n(set-merge-cell-range \"A1-C3\") \n(set-merge-cell-range \"D5-F7\") \n(set-merge-cell-range \"G8-I10\")\n```\n\n### 7.7. about color\n\nyou can set rgb color, like: FF0000.\n\n1. RGB use upcase, not support lower case string.\n\n2. Not support theme color yet, only support standard color.    If sheet\nsoftware set theme color, write back will lost color information.\n\n### 7.8. set-cell-range-border-style\n\n```racket\nset-cell-range-border-style (-\u003e string? border-direction? rgb? border-mode? void?)\nset-row-range-border-style (-\u003e string? border-direction? rgb? border-mode? void?) \nset-col-range-border-style (-\u003e string? border-direction? rgb? border-mode? void?) \n```\n\narg1: cell/row/col range.\n\narg2: border-direction?, one of ’\\(\"all\" \"side\" \"top\" \"bottom\" \"left\"\n\"right\"\\). the side direction means only set the cell range’s out\nborder.\n\narg3: rgb?, rgb color as \"0000FF\".\n\narg4: border-mode?, one of ’\\(\"\" \"thin\" \"dashed\" \"double\" \"thick\"\\)\n\n```racket\n(set-cell-range-border-style \"B2-F6\" \"all\" \"FF0000\" \"thick\")   \n(set-cell-range-border-style \"B8-F12\" \"left\" \"FF0000\" \"thick\") \n(set-cell-range-border-style \"H2-L6\" \"right\" \"FF0000\" \"dashed\")\n(set-cell-range-border-style \"H8-L12\" \"top\" \"FF0000\" \"double\") \n(set-cell-range-border-style \"N2-R6\" \"bottom\" \"FF0000\" \"thick\")\n(set-cell-range-border-style \"N8-R12\" \"side\" \"FF0000\" \"thick\") \n```\n\n\n\n### 7.9. set-font-style\n\n```racket\nset-cell-range-font-style (-\u003e string? natural? string? rgb? void?)\nset-row-range-font-style (-\u003e string? natural? string? rgb? void?) \nset-col-range-font-style (-\u003e string? natural? string? rgb? void?) \n```\n\narg1: cell/row/col range.\n\narg2: font size.\n\narg3: font name, as \"Arial\".\n\narg4: font color, rgb color, as \"0000FF\".\n\n```racket\n(set-cell-range-font-style \"A1-C1\" 12 \"Arial\" \"000000\")    \n(set-cell-range-font-style \"A2-C2\" 16 \"Monospace\" \"900000\")\n(set-cell-range-font-style \"A3-C3\" 20 \"Sans\" \"990000\")     \n```\n\n\n\n### 7.10. set-alignment-style\n\n```racket\nset-cell-range-alignment-style (-\u003e string? horizontal_mode? vertical_mode? void?)\nset-row-range-alignment-style (-\u003e string? horizontal_mode? vertical_mode? void?) \nset-col-range-alignment-style (-\u003e string? horizontal_mode? vertical_mode? void?) \n```\n\narg1: cell/row/col range.\n\narg2: horizontal\\_mode?, one of ’\\(\"left\" \"right\" \"center\"\\)\n\narg3: vertical\\_mode?, one of ’\\(\"top\" \"bottom\" \"center\"\\)\n\n```racket\n(set-cell-range-alignment-style \"A1-E5\" \"center\" \"center\")   \n(set-cell-range-border-style \"A1-E5\" \"side\" \"FF0000\" \"thick\")\n                                                             \n(set-cell-range-alignment-style \"G1-K5\" \"left\" \"top\")        \n(set-cell-range-border-style \"G1-K5\" \"side\" \"FF0000\" \"thick\")\n                                                             \n(set-cell-range-alignment-style \"M1-Q5\" \"right\" \"bottom\")    \n(set-cell-range-border-style \"M1-Q5\" \"side\" \"FF0000\" \"thick\")\n                                                             \n(set-row-range-height \"1-5\" 30)                              \n```\n\n\n\n### 7.11. set-number-style\n\n```racket\nset-cell-range-number-style (-\u003e string? string? void?)\nset-row-range-number-style (-\u003e string? string? void?) \nset-col-range-number-style (-\u003e string? string? void?) \n```\n\narg1: cell/row/col range.\n\narg2: number style as \"0.00\" \"0,000.00\" \"0.00%\" etc.\n\n```racket\n(set-cell-range-number-style \"A1-C1\" \"0.00\")     \n(set-cell-range-number-style \"A2-C2\" \"0.000\")    \n(set-cell-range-number-style \"A3-C3\" \"0,000.00%\")\n(set-col-range-width \"A-C\" 30)                   \n(set-row-range-height \"1-3\" 50)                  \n```\n\n\n\n### 7.12. set-date-style\n\n```racket\nset-cell-range-date-style (-\u003e string? string? void?)\nset-row-range-date-style (-\u003e string? string? void?) \nset-col-range-date-style (-\u003e string? string? void?) \n```\n\narg1: cell/row/col range.\n\narg2: date style, as \"yyyy/mm/dd\", \"yyyy-mm-dd\", \"yyyymmdd\" etc.\n\n```racket\n...                                                       \n(add-data-sheet                                           \n  \"Sheet1\"                                                \n  (list                                                   \n    (list                                                 \n      (seconds-\u003edate (find-seconds 0 0 0 17 9 2018 #f))   \n      (seconds-\u003edate (find-seconds 0 0 0 17 9 2018 #f))   \n      (seconds-\u003edate (find-seconds 0 0 0 17 9 2018 #f)))))\n                                                          \n...                                                       \n                                                          \n(set-cell-range-date-style \"A1\" \"yyyy-mm-dd\")             \n(set-cell-range-date-style \"B1\" \"yyyy/mm/dd\")             \n(set-cell-range-date-style \"C1\" \"yyyymmdd\")               \n                                                          \n(set-col-range-width \"A-C\" 20)                            \n(set-row-range-height \"1-3\" 20)                           \n```\n\n\n\n### 7.13. set-fill-style\n\n```racket\nset-cell-range-fill-style (-\u003e string? rgb? fill-pattern? void?)\nset-row-range-fill-style (-\u003e string? rgb? fill-pattern? void?) \nset-col-range-fill-style (-\u003e string? rgb? fill-pattern? void?) \n```\n\narg1: cell/row/col range.\n\narg2: rgb color as \"0000FF\".\n\narg3: fill pattern, one of\n\n```racket\n'(\"solid\" \"gray125\" \"darkGray\" \"mediumGray\" \"lightGray\"               \n\"gray0625\" \"darkHorizontal\" \"darkVertical\" \"darkDown\" \"darkUp\"        \n\"darkGrid\" \"darkTrellis\" \"lightHorizontal\" \"lightVertical\" \"lightDown\"\n\"lightUp\" \"lightGrid\" \"lightTrellis\")                                 \n```\n\n```racket\n(set-cell-range-fill-style \"B2-F6\" \"FF0000\" \"solid\")   \n(set-cell-range-fill-style \"H2-L6\" \"0000FF\" \"gray125\") \n(set-cell-range-fill-style \"N2-R6\" \"00FF00\" \"darkDown\")\n```\n\n\n\n## 8. Add Chart Sheet\n\nadd chart sheet to xlsx.\n\n### 8.1. add-chart-sheet\n\n```racket\n[add-chart-sheet (-\u003e string?                                                      \n                 (or/c 'LINE 'LINE3D 'BAR 'BAR3D 'PIE 'PIE3D)                     \n                 string?                                                          \n                 (listof (list/c string? string? string? string? string?)) void?)]\n```\n\narg1: chart sheet name.\n\narg2: chart type, one of (’LINE ’LINE3D ’BAR ’BAR3D ’PIE ’PIE3D).\n\narg3: chart topic, will display on the above top.\n\narg4: chart data serial, serial list.\n\nserial arguments:\n\narg1 string: category name.\n\narg2 string: category data sheet name.\n\narg3 string: category data range.\n\narg4 string: value data sheet name.\n\narg5 string: value data range.\n\n### 8.2. Line Chart\n\n```racket\n(add-data-sheet                                       \n  \"DataSheet\"                                         \n  '(                                                  \n    (\"201601\" \"201602\" \"201603\" \"201604\")             \n    (100 300 200 400)                                 \n    (200 400 300 100)                                 \n    (300 500 400 200)                                 \n))                                                    \n                                                      \n(add-chart-sheet                                      \n  \"LineChart\" 'LINE \"LineChartExample\"                \n  '(                                                  \n    (\"CAT\" \"DataSheet\" \"A1-D1\" \"DataSheet\" \"A2-D2\")   \n    (\"Puma\" \"DataSheet\" \"A1-D1\" \"DataSheet\" \"A3-D3\")  \n    (\"Brooks\" \"DataSheet\" \"A1-D1\" \"DataSheet\" \"A4-D4\")\n))                                                    \n```\n\n\n\n```racket\n(add-chart-sheet                                      \n  \"Line3DChart\" 'LINE3D \"Line3DChartExample\"          \n  '(                                                  \n    (\"CAT\" \"DataSheet\" \"A1-D1\" \"DataSheet\" \"A2-D2\")   \n    (\"Puma\" \"DataSheet\" \"A1-D1\" \"DataSheet\" \"A3-D3\")  \n    (\"Brooks\" \"DataSheet\" \"A1-D1\" \"DataSheet\" \"A4-D4\")\n))                                                    \n```\n\n\n\n### 8.3. Bar Chart\n\n```racket\n(add-chart-sheet                                      \n  \"BarChart\" 'BAR \"BarChartExample\"                   \n  '(                                                  \n    (\"CAT\" \"DataSheet\" \"A1-D1\" \"DataSheet\" \"A2-D2\")   \n    (\"Puma\" \"DataSheet\" \"A1-D1\" \"DataSheet\" \"A3-D3\")  \n    (\"Brooks\" \"DataSheet\" \"A1-D1\" \"DataSheet\" \"A4-D4\")\n))                                                    \n```\n\n\n\n```racket\n(add-chart-sheet                                      \n  \"Bar3DChart\" 'BAR3D \"Bar3DChartExample\"             \n  '(                                                  \n    (\"CAT\" \"DataSheet\" \"A1-D1\" \"DataSheet\" \"A2-D2\")   \n    (\"Puma\" \"DataSheet\" \"A1-D1\" \"DataSheet\" \"A3-D3\")  \n    (\"Brooks\" \"DataSheet\" \"A1-D1\" \"DataSheet\" \"A4-D4\")\n))                                                    \n```\n\n\n\n### 8.4. Pie Chart\n\n```racket\n(add-chart-sheet                                   \n  \"PieChart\" 'PIE \"PieChartExample\"                \n  '(                                               \n    (\"CAT\" \"DataSheet\" \"A1-D1\" \"DataSheet\" \"A2-D2\")\n))                                                 \n```\n\n\n\n```racket\n(add-chart-sheet                                   \n  \"Pie3DChart\" 'PIE3D \"Pie3DChartExample\"          \n  '(                                               \n    (\"CAT\" \"DataSheet\" \"A1-D1\" \"DataSheet\" \"A2-D2\")\n))                                                 \n```\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimmone%2Fracket-simple-xlsx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsimmone%2Fracket-simple-xlsx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimmone%2Fracket-simple-xlsx/lists"}