{"id":24756886,"url":"https://github.com/web-coke/databox","last_synced_at":"2026-05-06T05:38:20.275Z","repository":{"id":273970069,"uuid":"921080625","full_name":"Web-Coke/DataBox","owner":"Web-Coke","description":"Add-in built with a combination of Rust and CSharp!","archived":false,"fork":false,"pushed_at":"2025-02-05T09:01:02.000Z","size":5390,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-05T10:18:50.004Z","etag":null,"topics":["csharp","excel-addin","rust"],"latest_commit_sha":null,"homepage":"","language":"C#","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/Web-Coke.png","metadata":{"files":{"readme":"README-EN_US.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}},"created_at":"2025-01-23T09:53:02.000Z","updated_at":"2025-02-05T09:01:06.000Z","dependencies_parsed_at":"2025-01-24T04:31:33.095Z","dependency_job_id":null,"html_url":"https://github.com/Web-Coke/DataBox","commit_stats":null,"previous_names":["web-coke/databox"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Web-Coke%2FDataBox","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Web-Coke%2FDataBox/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Web-Coke%2FDataBox/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Web-Coke%2FDataBox/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Web-Coke","download_url":"https://codeload.github.com/Web-Coke/DataBox/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245071177,"owners_count":20556262,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["csharp","excel-addin","rust"],"created_at":"2025-01-28T14:21:13.842Z","updated_at":"2026-05-06T05:38:20.237Z","avatar_url":"https://github.com/Web-Coke.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\u003cp\u003e\u003cimg alt=\"DataBox\" width=\"256\" style=\"max-width:40%;min-width:60px;\" src=\"https://github.com/Web-Coke/DataBox/blob/main/DataBox.png\" /\u003e\u003c/p\u003e\n\u003cp\u003e\n    \u003ca href=\"README.md\"\u003e简体中文\u003c/a\u003e\n    \u003ca href=\"README-EN_US.md\"\u003eEnglish\u003c/a\u003e\n\u003c/p\u003e\n\u003cp\u003e\n\nDataBox is an Excel add-in based on [Excel-DNA](https://github.com/Excel-DNA).\n\nSome of the core features are implemented in [Rust](https://www.rust-lang.org/), It's incredibly fast.\n\nIf you are a regular user, you hope that DataBox can help you work efficiently.\n\nIf you are a programmer, I hope DataBox will inspire you in a new way.\n\n## Install and use\n\n### Automatic/manual installation\n\n[Click to understand the detailed steps](https://github.com/Web-Coke/DataBox/releases/)\n\n### Build from source\n\n```text\n1. Pull this item\n2. Install Rust(Version\u003e=1.80.0)\n3. Install Python(Version\u003e=3.8.1)\n4. Install Visual Studio\n5. Open the project's DataBox.sln\n6. Restore the NuGet package\n7. build DataBox\n8. Run the build.py of this project\n```\n\n## Example\n\nTo get you up and running quickly, this project provides an [Example](https://github.com/Web-Coke/DataBox/blob/main/Examples/示例.xlsx) file\n\n## Introduction to add-on functions\n\n\u003e Functions with bold function names are overflow functions\n\u003e\n\u003e Parameters with the parameter name in bold can be range parameters\n\u003e\n\u003e Parameter name marked with an underscore parameter is optional\n\n### 1 Time Calculation\n\n| Function name                                                | Function description                                         | Parameter description                                        |\n| :----------------------------------------------------------- | :----------------------------------------------------------- | ------------------------------------------------------------ |\n| AdjustTime(Time, \u003cu\u003eYear\u003c/u\u003e, \u003cu\u003eMonth\u003c/u\u003e, \u003cu\u003eDay\u003c/u\u003e, \u003cu\u003eHour\u003c/u\u003e, \u003cu\u003eMinute\u003c/u\u003e, \u003cu\u003eSecond\u003c/u\u003e) | Adjust the given time                                        | Time:Given time\u003cbr/\u003e\u003cu\u003eYear\u003c/u\u003e:Year\u003cbr/\u003e\u003cu\u003eMonth\u003c/u\u003e:Month\u003cbr/\u003e\u003cu\u003eDay\u003c/u\u003e:Day\u003cbr/\u003e\u003cu\u003eHour\u003c/u\u003e:Hour\u003cbr/\u003e\u003cu\u003eMinute\u003c/u\u003e:Minute\u003cbr/\u003e\u003cu\u003eSecond\u003c/u\u003e:Second |\n| **SecToTime**(**Sec**)                                       | The time to convert seconds to [hh]:mm:ss format             | **Sec**:The number of seconds to convert                         |\n| **TimeSub**(**TimeI**, **TimeN**)                            | Calculate the difference between the two times\u003cbr/\u003eThe output is in seconds | **TimeI**:The first time\u003cbr/\u003e**TimeN**:The second time               |\n| **TimeSub2**(**TimeI**, **TimeN**, Includ)                   | Calculate the difference between two times in the calculated includ time\u003cbr/\u003eThe output is in seconds        | **TimeI**:The first time\u003cbr/\u003e**TimeN**:The second time\u003cbr/\u003eInclud:Calculated includ time |\n\n### 2 Coordinate Calculation\n\n| Function name                    | Function description                                         | Parameter description                                        |\n| :------------------------------- | :----------------------------------------------------------- | ------------------------------------------------------------ |\n| Distance(Lon1, Lat1, Lon2, Lat2) | Calculate the distance between two WG S84 coordinates latitude and longitude\u003cbr/\u003eThe output is in meters | Lon1:The first longitude\u003cbr/\u003eLat1:The first latitude\u003cbr/\u003eLon2:The second longitude\u003cbr/\u003eLat2:The second latitude |\n\n### 3 Text Processing\n\n| Function name                             | Function description                                         | Parameter description                                        |\n| :---------------------------------------- | :----------------------------------------------------------- | ------------------------------------------------------------ |\n| **IsMatch**(**Input**, Pattern)           | Check if the entered string can be matched by a regular expression\u003cbr/\u003eIf the match is successful, it will return True, and if it fails, it will return False | **Input**:The string entered\u003cbr/\u003ePattern:regular expression                |\n| **Matches**(Input, Pattern, \u003cu\u003eLabel\u003c/u\u003e) | Returns all (or label) content of the entered string that matches in the regular expression         | Input:The string entered\u003cbr/\u003ePattern:regular expression\u003cbr/\u003e\u003cu\u003eLabel\u003c/u\u003e:label, optional parameter, label with \"$\" sign |\n| **Replaces**(**Input**, Pattern, Replace) | The part of the input string that is matched by the regular expression is the specified string       | **Input**:The string entered\u003cbr/\u003ePattern:regular expression\u003cbr/\u003eReplace:Specify a string with a \"$\" sign in the label |\n\n### 4 Scope Processing\n\n| Function name                             | Function description                                         | Parameter description                                        |\n| ----------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ |\n| **VLOOKUP2**(Value, **Array**, **Finds**) | An upgraded version of the VLOOKUP function\u003cbr/\u003eThis function returns the results of multiple lookups\u003cbr/\u003eReturn error #VALUE! when the search result is empty\u003cbr/\u003eIf there is a lot of data, we recommend that you use the `Data Quick Find` | Value:Specify a value\u003cbr/\u003e**Array**:Specify the scope\u003cbr/\u003e**Finds**:Return range |\n| **ANDS**(**Lhs**, **Rhs**)                | AND the **Lhs** and **Rhs** in order                          | **Lhs**:Lvalue range\u003cbr/\u003e**Rhs**:Rvalue range                |\n| **ORS**(**Lhs**, **Rhs**)                 | OR the **Lhs** and **Rhs** in order                           | **Lhs**:Lvalue range\u003cbr/\u003e**Rhs**:Rvalue range                |\n| **XORS**(**Lhs**, **Rhs**)                | XOR the **Lhs** and **Rhs** in order                          | **Lhs**:Lvalue range\u003cbr/\u003e**Rhs**:Rvalue range                |\n| **NOTS**(**Array**)                       | Perform the NOT operation with the `**Array**`                                       | **Array**:Given range                                           |\n\n### 5 Data Quick Find\n\n\u003e Before using the following functions, bind data in the ribbon\n\n| Function name                | Function description     | 参数说明                                         |\n| :----------------------------------- | -------------------------------- | ------------------------------------------------ |\n| **FLOOKUP**(Key, SerialNumber) | Retrieve a given value in the index and return the corresponding data | Key:Given value\u003cbr\u003eSerialNumber:The ordinal number of the column in which the data resides |\n| FCOUNTS(Key)                         | Count the number of times a given value appears in the index     | Key:Given value                                       |\n| **FGETKEY**()                  | Get the deduplicated index                 |                                                  |\n\n## Truth table\n\n|            AND            |            OR            |       NOT       |          XOR          |\n| :-----------------------: | :----------------------: | :-------------: | :-------------------: |\n| False `AND` False = False | False `OR` False = False | `NOT` False = True | False `XOR` False = False |\n| False `AND` True = False |  False `OR` True = True  | `NOT` True = False | False `XOR` False = True |\n|  True `AND` True = False  |  False `OR` True = True  |                      | False `XOR` False = True |\n|  True `AND` True = True  |  False `OR` True = True  |                      | False `XOR` False = False |\n\n## Regular Expression\n\n\u003e Regular Expressions e-learning or practice [website](https://regex101.com/)(https://regex101.com/)\n\u003e\n\u003e Please set `FLAVOR` to `Rust`\n\u003e\n\u003e The regular expression engine complies with the [Unicode® Technical Standard #18](https://www.unicode.org/reports/tr18/) specification.\n\u003e\n\u003e The `Characters Set` please refer to:[Regex Tutorial - Unicode Characters and Properties](https://www.regular-expressions.info/unicode.html#prop)(https://www.regular-expressions.info/unicode.html#prop)\n\n### Matching one character\n\n\u003cpre\u003e\n.             any character except new line (includes new line with s flag)\n[0-9]         any ASCII digit\n\\d            digit (\\p{Nd})\n\\D            not digit\n\\pX           Unicode character class identified by a one-letter name\n\\p{Greek}     Unicode character class (general category or script)\n\\PX           Negated Unicode character class identified by a one-letter name\n\\P{Greek}     negated Unicode character class (general category or script)\n\u003c/pre\u003e\n\n### Character classes\n\n\u003cpre\u003e\n[xyz]         A character class matching either x, y or z (union).\n[^xyz]        A character class matching any character except x, y and z.\n[a-z]         A character class matching any character in range a-z.\n[[:alpha:]]   ASCII character class ([A-Za-z])\n[[:^alpha:]]  Negated ASCII character class ([^A-Za-z])\n[x[^xyz]]     Nested/grouping character class (matching any character except y and z)\n[a-y\u0026amp;\u0026amp;xyz]    Intersection (matching x or y)\n[0-9\u0026amp;\u0026amp;[^4]]   Subtraction using intersection and negation (matching 0-9 except 4)\n[0-9--4]      Direct subtraction (matching 0-9 except 4)\n[a-g~~b-h]    Symmetric difference (matching `a` and `h` only)\n[\\[\\]]        Escaping in character classes (matching [ or ])\n[a\u0026amp;\u0026amp;b]        An empty character class matching nothing\n\u003c/pre\u003e\n\n### Composites\n\n\u003cpre\u003e\nxy    concatenation (x followed by y)\nx|y   alternation (x or y, prefer x)\n\u003c/pre\u003e\n\n### Repetitions\n\n\u003cpre\u003e\nx*        zero or more of x (greedy)\nx+        one or more of x (greedy)\nx?        zero or one of x (greedy)\nx*?       zero or more of x (ungreedy/lazy)\nx+?       one or more of x (ungreedy/lazy)\nx??       zero or one of x (ungreedy/lazy)\nx{n,m}    at least n x and at most m x (greedy)\nx{n,}     at least n x (greedy)\nx{n}      exactly n x\nx{n,m}?   at least n x and at most m x (ungreedy/lazy)\nx{n,}?    at least n x (ungreedy/lazy)\nx{n}?     exactly n x\n\u003c/pre\u003e\n\n\n### Empty matches\n\n\u003cpre\u003e\n^               the beginning of a haystack (or start-of-line with multi-line mode)\n$               the end of a haystack (or end-of-line with multi-line mode)\n\\A              only the beginning of a haystack (even with multi-line mode enabled)\n\\z              only the end of a haystack (even with multi-line mode enabled)\n\\b              a Unicode word boundary (\\w on one side and \\W, \\A, or \\z on other)\n\\B              not a Unicode word boundary\n\\b{start}, \\\u0026lt;   a Unicode start-of-word boundary (\\W|\\A on the left, \\w on the right)\n\\b{end}, \\\u0026gt;     a Unicode end-of-word boundary (\\w on the left, \\W|\\z on the right))\n\\b{start-half}  half of a Unicode start-of-word boundary (\\W|\\A on the left)\n\\b{end-half}    half of a Unicode end-of-word boundary (\\W|\\z on the right)\n\u003c/pre\u003e\n\n### Grouping and flags\n\n\u003cpre\u003e\n(exp)          numbered capture group (indexed by opening parenthesis)\n(?P\u0026lt;name\u0026gt;exp)  named (also numbered) capture group (names must be alpha-numeric)\n(?\u0026lt;name\u0026gt;exp)   named (also numbered) capture group (names must be alpha-numeric)\n(?:exp)        non-capturing group\n(?flags)       set flags within current group\n(?flags:exp)   set flags for exp (non-capturing)\n\u003c/pre\u003e\n\n### Escape sequences\n\n\u003cpre\u003e\n\\*              literal *, applies to all ASCII except [0-9A-Za-z\u0026lt;\u0026gt;]\n\\a              bell (\\x07)\n\\f              form feed (\\x0C)\n\\t              horizontal tab\n\\n              new line\n\\r              carriage return\n\\v              vertical tab (\\x0B)\n\\A              matches at the beginning of a haystack\n\\z              matches at the end of a haystack\n\\b              word boundary assertion\n\\B              negated word boundary assertion\n\\b{start}, \\\u0026lt;   start-of-word boundary assertion\n\\b{end}, \\\u0026gt;     end-of-word boundary assertion\n\\b{start-half}  half of a start-of-word boundary assertion\n\\b{end-half}    half of a end-of-word boundary assertion\n\\123            octal character code, up to three digits (when enabled)\n\\x7F            hex character code (exactly two digits)\n\\x{10FFFF}      any hex character code corresponding to a Unicode code point\n\\u007F          hex character code (exactly four digits)\n\\u{7F}          any hex character code corresponding to a Unicode code point\n\\U0000007F      hex character code (exactly eight digits)\n\\U{7F}          any hex character code corresponding to a Unicode code point\n\\p{Letter}      Unicode character class\n\\P{Letter}      negated Unicode character class\n\\d, \\s, \\w      Perl character class\n\\D, \\S, \\W      negated Perl character class\n\u003c/pre\u003e\n\n### Perl character classes (Unicode friendly)\n\n\u003cpre\u003e\n\\d     digit (\\p{Nd})\n\\D     not digit\n\\s     whitespace (\\p{White_Space})\n\\S     not whitespace\n\\w     word character (\\p{Alphabetic} + \\p{M} + \\d + \\p{Pc} + \\p{Join_Control})\n\\W     not word character\n\u003c/pre\u003e\n\n### ASCII character classes\n\n\u003cpre\u003e\n[[:alnum:]]    alphanumeric ([0-9A-Za-z])\n[[:alpha:]]    alphabetic ([A-Za-z])\n[[:ascii:]]    ASCII ([\\x00-\\x7F])\n[[:blank:]]    blank ([\\t ])\n[[:cntrl:]]    control ([\\x00-\\x1F\\x7F])\n[[:digit:]]    digits ([0-9])\n[[:graph:]]    graphical ([!-~])\n[[:lower:]]    lower case ([a-z])\n[[:print:]]    printable ([ -~])\n[[:punct:]]    punctuation ([!-/:-@\\[-`{-~])\n[[:space:]]    whitespace ([\\t\\n\\v\\f\\r ])\n[[:upper:]]    upper case ([A-Z])\n[[:word:]]     word characters ([0-9A-Za-z_])\n[[:xdigit:]]   hex digit ([0-9A-Fa-f])\n\u003c/pre\u003e\n\n## Contribute\n\nIf you have a good suggestion, fork the repository and create a pull request\n\nOf course, you can also file an issue with an enhancement\n\nDon't forget to give the project a Star, thanks again ❗❗❗\n\n\u003ca href=\"https://github.com/Web-Coke/DataBox/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contrib.rocks/image?repo=Web-Coke/DataBox\" /\u003e\n\u003c/a\u003e\n\n## Sponsor\n\nDataBox is an open source project, and you don't hesitate to praise it and Star is the biggest affirmation of this project\n\n\u003cp style=\"text-align: center;\"\u003e\n\u003cimg src=\"https://github.com/Web-Coke/DataBox/blob/main/DataBox/Ribbon/Src/AliPay.png\" alt=\"Alipay\" width=\"180\"/\u003e\n\u003cimg src=\"https://github.com/Web-Coke/DataBox/blob/main/DataBox/Ribbon/Src/WeChat.png\" alt=\"WeChat\" width=\"180\"/\u003e\n\u003c/p\u003e\n\n## Open-Source Protocol\n\nDataBox uses the [MIT](LICENSE) open source license\n\n## Description of existing problems\n\n- In the old version of WPS, the calculation results of overflow functions are not displayed completely, but in the latest version of WPS and Excel, the calculation results can be displayed normally, and the old version of WPS does not support overflow functions\n\n---\n\n\u003e Please contact me if you have any suggestions, feedback, or questions about using the add-in\n\u003e\n\u003e Email:`web-chang@foxmail.com`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fweb-coke%2Fdatabox","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fweb-coke%2Fdatabox","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fweb-coke%2Fdatabox/lists"}