commit 1611862598e6e75cbb9e818f97fbe04601934340 Author: Nicolas Sanchez Date: Thu Oct 2 22:56:33 2025 +0200 premier commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ea8c4bf --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/target diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..07dc9b5 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,1097 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + +[[package]] +name = "aes" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", +] + +[[package]] +name = "ahash" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" +dependencies = [ + "cfg-if", + "getrandom 0.3.3", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "arbitrary" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1" +dependencies = [ + "derive_arbitrary", +] + +[[package]] +name = "atoi_simd" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2a49e05797ca52e312a0c658938b7d00693ef037799ef7187678f212d7684cf" +dependencies = [ + "debug_unsafe", +] + +[[package]] +name = "autocfg" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "bit-set" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "block-padding" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8894febbff9f758034a5b8e12d87918f56dfc64a8e1fe757d65e29041538d93" +dependencies = [ + "generic-array", +] + +[[package]] +name = "bumpalo" +version = "3.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "calamine" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da56b262e8a827c6b12c3dde4ea4622e0ff542bd2e9ea5855e4cb523481d77b7" +dependencies = [ + "atoi_simd", + "byteorder", + "codepage", + "encoding_rs", + "fast-float2", + "log", + "quick-xml 0.38.3", + "serde", + "zip 4.6.1", +] + +[[package]] +name = "cbc" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26b52a9543ae338f279b96b0b9fed9c8093744685043739079ce85cd58f289a6" +dependencies = [ + "cipher", +] + +[[package]] +name = "cc" +version = "1.2.39" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1354349954c6fc9cb0deab020f27f783cf0b604e8bb754dc4658ecf0d29c35f" +dependencies = [ + "find-msvc-tools", + "shlex", +] + +[[package]] +name = "cfb" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8a4f8e55be323b378facfcf1f06aa97f6ec17cf4ac84fb17325093aaf62da41" +dependencies = [ + "byteorder", + "fnv", + "uuid", +] + +[[package]] +name = "cfg-if" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9" + +[[package]] +name = "chrono" +version = "0.4.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2" +dependencies = [ + "iana-time-zone", + "num-traits", + "windows-link", +] + +[[package]] +name = "cipher" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +dependencies = [ + "crypto-common", + "inout", +] + +[[package]] +name = "codepage" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48f68d061bc2828ae826206326e61251aca94c1e4a5305cf52d9138639c918b4" +dependencies = [ + "encoding_rs", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "debug_unsafe" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85d3cef41d236720ed453e102153a53e4cc3d2fde848c0078a50cf249e8e3e5b" + +[[package]] +name = "derive_arbitrary" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", + "subtle", +] + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "doc-comment" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" + +[[package]] +name = "encoding_rs" +version = "0.8.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "fancy-regex" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e24cb5a94bcae1e5408b0effca5cd7172ea3c5755049c5f3af4cd283a165298" +dependencies = [ + "bit-set", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "fast-float2" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8eb564c5c7423d25c886fb561d1e4ee69f72354d16918afa32c08811f6b6a55" + +[[package]] +name = "find-msvc-tools" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ced73b1dacfc750a6db6c0a0c3a3853c8b41997e2e2c563dc90804ae6867959" + +[[package]] +name = "flate2" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d" +dependencies = [ + "crc32fast", + "libz-rs-sys", + "miniz_oxide", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.11.1+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasi 0.14.7+wasi-0.2.4", +] + +[[package]] +name = "hashbrown" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest", +] + +[[package]] +name = "html_parser" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f56db07b6612644f6f7719f8ef944f75fff9d6378fdf3d316fd32194184abd" +dependencies = [ + "doc-comment", + "pest", + "pest_derive", + "serde", + "serde_derive", + "serde_json", + "thiserror 1.0.69", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "log", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "imagesize" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09e54e57b4c48b40f7aec75635392b12b3421fa26fe8b4332e63138ed278459c" + +[[package]] +name = "indexmap" +version = "2.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b0f83760fb341a774ed326568e19f5a863af4a952def8c39f9ab92fd95b88e5" +dependencies = [ + "equivalent", + "hashbrown", +] + +[[package]] +name = "inout" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" +dependencies = [ + "block-padding", + "generic-array", +] + +[[package]] +name = "itoa" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "js-sys" +version = "0.3.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec48937a97411dcb524a265206ccd4c90bb711fca92b2792c407f268825b9305" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + +[[package]] +name = "libc" +version = "0.2.176" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58f929b4d672ea937a23a1ab494143d968337a5f47e56d0815df1e0890ddf174" + +[[package]] +name = "libz-rs-sys" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "840db8cf39d9ec4dd794376f38acc40d0fc65eec2a8f484f7fd375b84602becd" +dependencies = [ + "zlib-rs", +] + +[[package]] +name = "log" +version = "0.4.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" + +[[package]] +name = "md-5" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" +dependencies = [ + "cfg-if", + "digest", +] + +[[package]] +name = "memchr" +version = "2.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" + +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "pest" +version = "2.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21e0a3a33733faeaf8651dfee72dd0f388f0c8e5ad496a3478fa5a922f49cfa8" +dependencies = [ + "memchr", + "thiserror 2.0.17", + "ucd-trie", +] + +[[package]] +name = "pest_derive" +version = "2.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc58706f770acb1dbd0973e6530a3cff4746fb721207feb3a8a6064cd0b6c663" +dependencies = [ + "pest", + "pest_generator", +] + +[[package]] +name = "pest_generator" +version = "2.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d4f36811dfe07f7b8573462465d5cb8965fffc2e71ae377a33aecf14c2c9a2f" +dependencies = [ + "pest", + "pest_meta", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "pest_meta" +version = "2.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42919b05089acbd0a5dcd5405fb304d17d1053847b81163d09c4ad18ce8e8420" +dependencies = [ + "pest", + "sha2", +] + +[[package]] +name = "proc-macro2" +version = "1.0.101" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quick-xml" +version = "0.37.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "331e97a1af0bf59823e6eadffe373d7b27f485be8748f71471c662c1f269b7fb" +dependencies = [ + "memchr", + "serde", +] + +[[package]] +name = "quick-xml" +version = "0.38.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42a232e7487fc2ef313d96dde7948e7a3c05101870d8985e4fd8d26aedd27b89" +dependencies = [ + "encoding_rs", + "memchr", +] + +[[package]] +name = "quote" +version = "1.0.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce25767e7b499d1b604768e7cde645d14cc8584231ea6b295e9c9eb22c02e1d1" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + +[[package]] +name = "regex" +version = "1.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b5288124840bee7b386bc413c487869b360b2b4ec421ea56425128692f2a82c" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "833eb9ce86d40ef33cb1306d8accf7bc8ec2bfea4355cbdebb3df68b40925cad" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "caf4aa5b0f434c91fe5c7f1ecb6a5ece2130b02ad2a590589dda5146df959001" + +[[package]] +name = "rustversion" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + +[[package]] +name = "ryu" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" + +[[package]] +name = "serde" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.145" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", + "serde_core", +] + +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "simd-adler32" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "syn" +version = "2.0.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "thin-vec" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "144f754d318415ac792f9d69fc87abbbfc043ce2ef041c60f16ad828f638717d" + +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" +dependencies = [ + "thiserror-impl 2.0.17", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "thousands" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3bf63baf9f5039dadc247375c29eb13706706cfde997d0330d05aa63a77d8820" + +[[package]] +name = "typenum" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" + +[[package]] +name = "ucd-trie" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" + +[[package]] +name = "umya-spreadsheet" +version = "2.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "408c7e039c96ec1d517a1111ade7fadab889f32c096dac691a1e3b8018c3e39a" +dependencies = [ + "aes", + "ahash", + "base64", + "byteorder", + "cbc", + "cfb", + "chrono", + "encoding_rs", + "fancy-regex", + "getrandom 0.2.16", + "hmac", + "html_parser", + "imagesize", + "lazy_static", + "md-5", + "quick-xml 0.37.5", + "regex", + "sha2", + "thin-vec", + "thousands", + "zip 2.4.2", +] + +[[package]] +name = "unicode-ident" +version = "1.0.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f63a545481291138910575129486daeaf8ac54aee4387fe7906919f7830c7d9d" + +[[package]] +name = "uuid" +version = "1.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasi" +version = "0.14.7+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "883478de20367e224c0090af9cf5f9fa85bed63a95c1abf3afc5c083ebc06e8c" +dependencies = [ + "wasip2", +] + +[[package]] +name = "wasip2" +version = "1.0.1+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" +dependencies = [ + "wit-bindgen", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1da10c01ae9f1ae40cbfac0bac3b1e724b320abfcf52229f80b547c0d250e2d" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "671c9a5a66f49d8a47345ab942e2cb93c7d1d0339065d4f8139c486121b43b19" +dependencies = [ + "bumpalo", + "log", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ca60477e4c59f5f2986c50191cd972e3a50d8a95603bc9434501cf156a9a119" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f07d2f20d4da7b26400c9f4a0511e6e0345b040694e8a75bd41d578fa4421d7" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bad67dc8b2a1a6e5448428adec4c3e84c43e561d8c9ee8a9e5aabeb193ec41d1" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "windows-core" +version = "0.62.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6844ee5416b285084d3d3fffd743b925a6c9385455f64f6d4fa3031c4c2749a9" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link", + "windows-result", + "windows-strings", +] + +[[package]] +name = "windows-implement" +version = "0.60.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edb307e42a74fb6de9bf3a02d9712678b22399c87e6fa869d6dfcd8c1b7754e0" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "windows-interface" +version = "0.59.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0abd1ddbc6964ac14db11c7213d6532ef34bd9aa042c2e5935f59d7908b46a5" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "windows-link" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45e46c0661abb7180e7b9c281db115305d49ca1709ab8242adf09666d2173c65" + +[[package]] +name = "windows-result" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7084dcc306f89883455a206237404d3eaf961e5bd7e0f312f7c91f57eb44167f" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-strings" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7218c655a553b0bed4426cf54b20d7ba363ef543b52d515b3e48d7fd55318dda" +dependencies = [ + "windows-link", +] + +[[package]] +name = "wit-bindgen" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" + +[[package]] +name = "xlsxtocsv" +version = "0.1.0" +dependencies = [ + "calamine", + "umya-spreadsheet", +] + +[[package]] +name = "zerocopy" +version = "0.8.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "zip" +version = "2.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fabe6324e908f85a1c52063ce7aa26b68dcb7eb6dbc83a2d148403c9bc3eba50" +dependencies = [ + "arbitrary", + "crc32fast", + "crossbeam-utils", + "displaydoc", + "flate2", + "indexmap", + "memchr", + "thiserror 2.0.17", + "zopfli", +] + +[[package]] +name = "zip" +version = "4.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "caa8cd6af31c3b31c6631b8f483848b91589021b28fffe50adada48d4f4d2ed1" +dependencies = [ + "arbitrary", + "crc32fast", + "flate2", + "indexmap", + "memchr", + "zopfli", +] + +[[package]] +name = "zlib-rs" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f06ae92f42f5e5c42443fd094f245eb656abf56dd7cce9b8b263236565e00f2" + +[[package]] +name = "zopfli" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edfc5ee405f504cd4984ecc6f14d02d55cfda60fa4b689434ef4102aae150cd7" +dependencies = [ + "bumpalo", + "crc32fast", + "log", + "simd-adler32", +] diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..022f1c0 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "xlsxtocsv" +version = "0.1.0" +edition = "2024" + +[dependencies] +calamine = "0.31.0" +umya-spreadsheet = "2.3.3" diff --git a/anafi.xlsx b/anafi.xlsx new file mode 100644 index 0000000..4c60b4f Binary files /dev/null and b/anafi.xlsx differ diff --git a/height.txt b/height.txt new file mode 100644 index 0000000..255be33 --- /dev/null +++ b/height.txt @@ -0,0 +1,431 @@ +(3, 223) -> (3, 225) +(3, 220) -> (3, 222) +(3, 176) -> (3, 178) +(3, 173) -> (3, 175) +(3, 88) -> (3, 89) +(2, 101) -> (2, 107) +(3, 101) -> (3, 103) +(3, 104) -> (3, 106) +(2, 242) -> (2, 250) +(2, 179) -> (2, 181) +(2, 191) -> (2, 202) +(2, 220) -> (2, 225) +(2, 204) -> (2, 218) +(2, 182) -> (2, 190) +(2, 124) -> (2, 138) +(3, 125) -> (3, 129) +(3, 131) -> (3, 137) +(2, 139) -> (2, 144) +(3, 139) -> (3, 143) +(2, 146) -> (2, 153) +(3, 146) -> (3, 152) +(2, 145) -> (3, 145) +(2, 155) -> (2, 159) +(3, 156) -> (3, 158) +(1, 124) -> (1, 159) +(3, 188) -> (3, 190) +(3, 185) -> (3, 187) +(3, 182) -> (3, 184) +(3, 207) -> (3, 209) +(3, 191) -> (3, 193) +(3, 164) -> (3, 166) +(3, 161) -> (3, 163) +(3, 194) -> (3, 196) +(3, 200) -> (3, 202) +(3, 204) -> (3, 206) +(3, 197) -> (3, 199) +(2, 161) -> (2, 178) +(3, 170) -> (3, 172) +(3, 167) -> (3, 169) +(3, 179) -> (3, 181) +(1, 70) -> (1, 72) +(1, 75) -> (1, 122) +(2, 75) -> (2, 97) +(2, 110) -> (2, 116) +(3, 110) -> (3, 112) +(2, 117) -> (3, 118) +(2, 36) -> (3, 37) +(2, 98) -> (3, 98) +(2, 60) -> (2, 61) +(2, 70) -> (3, 72) +(2, 66) -> (3, 67) +(3, 75) -> (3, 79) +(3, 80) -> (3, 81) +(2, 121) -> (2, 122) +(2, 108) -> (2, 109) +(1, 7) -> (1, 38) +(3, 9) -> (3, 12) +(3, 13) -> (3, 16) +(2, 99) -> (2, 100) +(2, 68) -> (3, 68) +(1, 73) -> (3, 73) +(3, 113) -> (3, 115) +(2, 46) -> (3, 47) +(2, 50) -> (2, 59) +(1, 1) -> (7, 1) +(2, 31) -> (2, 35) +(3, 33) -> (3, 35) +(3, 31) -> (3, 32) +(2, 40) -> (2, 45) +(3, 40) -> (3, 41) +(2, 62) -> (2, 65) +(3, 64) -> (3, 65) +(3, 62) -> (3, 63) +(3, 25) -> (3, 28) +(3, 7) -> (3, 8) +(2, 7) -> (2, 19) +(3, 20) -> (3, 21) +(2, 48) -> (3, 49) +(3, 52) -> (3, 54) +(3, 56) -> (3, 59) +(1, 4) -> (2, 5) +(2, 29) -> (2, 30) +(3, 17) -> (3, 19) +(3, 22) -> (3, 24) +(2, 20) -> (2, 28) +(3, 50) -> (3, 51) +(1, 40) -> (1, 68) +(1, 161) -> (1, 202) +(1, 295) -> (2, 298) +(3, 279) -> (3, 281) +(3, 282) -> (3, 284) +(3, 285) -> (3, 287) +(1, 273) -> (1, 293) +(2, 273) -> (2, 293) +(1, 236) -> (1, 271) +(2, 263) -> (2, 271) +(2, 226) -> (2, 234) +(3, 269) -> (3, 271) +(3, 266) -> (3, 268) +(3, 263) -> (3, 265) +(3, 273) -> (3, 275) +(3, 276) -> (3, 278) +(3, 288) -> (3, 290) +(3, 291) -> (3, 293) +(3, 236) -> (3, 238) +(3, 239) -> (3, 241) +(1, 204) -> (1, 218) +(1, 220) -> (1, 234) +(3, 210) -> (3, 212) +(3, 213) -> (3, 215) +(3, 216) -> (3, 218) +(3, 242) -> (3, 244) +(3, 251) -> (3, 253) +(3, 254) -> (3, 256) +(3, 257) -> (3, 259) +(3, 248) -> (3, 250) +(3, 232) -> (3, 234) +(3, 229) -> (3, 231) +(3, 226) -> (3, 228) +(2, 236) -> (2, 241) +(2, 251) -> (2, 262) +(3, 260) -> (3, 262) +(3, 245) -> (3, 247) +ligne 1 visible +ligne 2 visible +ligne 3 visible +ligne 4 visible +ligne 5 visible +ligne 6 visible +ligne 7 visible +ligne 8 visible +ligne 9 visible +ligne 10 visible +ligne 11 visible +ligne 12 visible +ligne 13 visible +ligne 14 visible +ligne 15 visible +ligne 16 visible +ligne 17 visible +ligne 18 visible +ligne 19 visible +ligne 20 visible +ligne 21 visible +ligne 22 visible +ligne 23 visible +ligne 24 visible +ligne 25 visible +ligne 26 visible +ligne 27 visible +ligne 28 visible +ligne 29 visible +ligne 30 visible +ligne 31 visible +ligne 32 visible +ligne 33 visible +ligne 34 visible +ligne 35 visible +ligne 36 visible +ligne 37 visible +ligne 38 visible +ligne 39 visible +ligne 40 visible +ligne 41 visible +ligne 42 visible +ligne 43 visible +ligne 44 visible +ligne 45 visible +ligne 46 visible +ligne 47 visible +ligne 48 visible +ligne 49 visible +ligne 50 visible +ligne 51 visible +ligne 52 visible +ligne 53 visible +ligne 54 visible +ligne 55 visible +ligne 56 visible +ligne 57 visible +ligne 58 visible +ligne 59 visible +ligne 60 visible +ligne 61 visible +ligne 62 visible +ligne 63 visible +ligne 64 visible +ligne 65 visible +ligne 66 visible +ligne 67 visible +ligne 68 visible +ligne 69 visible +ligne 70 visible +ligne 71 visible +ligne 72 visible +ligne 73 visible +ligne 74 visible +ligne 75 visible +ligne 76 visible +ligne 77 visible +ligne 78 visible +ligne 79 visible +ligne 80 visible +ligne 81 visible +ligne 82 visible +ligne 83 visible +ligne 84 visible +ligne 85 visible +ligne 86 visible +ligne 87 visible +ligne 88 visible +ligne 89 visible +ligne 90 visible +ligne 91 visible +ligne 92 visible +ligne 93 visible +ligne 94 visible +ligne 95 visible +ligne 96 visible +ligne 97 visible +ligne 98 visible +ligne 99 visible +ligne 100 visible +ligne 101 visible +ligne 102 visible +ligne 103 visible +ligne 104 visible +ligne 105 visible +ligne 106 visible +ligne 107 visible +ligne 108 visible +ligne 109 visible +ligne 110 visible +ligne 111 visible +ligne 112 visible +ligne 113 visible +ligne 114 visible +ligne 115 visible +ligne 116 visible +ligne 117 visible +ligne 118 visible +ligne 119 visible +ligne 120 visible +ligne 121 visible +ligne 122 visible +ligne 123 visible +ligne 124 masquée +ligne 125 masquée +ligne 126 masquée +ligne 127 masquée +ligne 128 masquée +ligne 129 masquée +ligne 130 masquée +ligne 131 masquée +ligne 132 masquée +ligne 133 masquée +ligne 134 masquée +ligne 135 masquée +ligne 136 masquée +ligne 137 masquée +ligne 138 masquée +ligne 139 masquée +ligne 140 masquée +ligne 141 masquée +ligne 142 masquée +ligne 143 masquée +ligne 144 masquée +ligne 145 masquée +ligne 146 masquée +ligne 147 masquée +ligne 148 masquée +ligne 149 masquée +ligne 150 masquée +ligne 151 masquée +ligne 152 masquée +ligne 153 masquée +ligne 154 masquée +ligne 155 masquée +ligne 156 masquée +ligne 157 masquée +ligne 158 masquée +ligne 159 masquée +ligne 160 visible +ligne 161 visible +ligne 162 visible +ligne 163 visible +ligne 164 visible +ligne 165 visible +ligne 166 visible +ligne 167 visible +ligne 168 visible +ligne 169 visible +ligne 170 visible +ligne 171 visible +ligne 172 visible +ligne 173 visible +ligne 174 visible +ligne 175 visible +ligne 176 masquée +ligne 177 masquée +ligne 178 masquée +ligne 179 masquée +ligne 180 masquée +ligne 181 masquée +ligne 182 visible +ligne 183 visible +ligne 184 visible +ligne 185 masquée +ligne 186 masquée +ligne 187 masquée +ligne 188 masquée +ligne 189 masquée +ligne 190 masquée +ligne 191 masquée +ligne 192 masquée +ligne 193 masquée +ligne 194 masquée +ligne 195 masquée +ligne 196 masquée +ligne 197 visible +ligne 198 visible +ligne 199 visible +ligne 200 masquée +ligne 201 masquée +ligne 202 masquée +ligne 203 visible +ligne 204 visible +ligne 205 visible +ligne 206 visible +ligne 207 masquée +ligne 208 masquée +ligne 209 masquée +ligne 210 masquée +ligne 211 masquée +ligne 212 masquée +ligne 213 masquée +ligne 214 masquée +ligne 215 masquée +ligne 216 masquée +ligne 217 masquée +ligne 218 masquée +ligne 219 visible +ligne 220 visible +ligne 221 visible +ligne 222 visible +ligne 223 visible +ligne 224 visible +ligne 225 visible +ligne 226 visible +ligne 227 visible +ligne 228 visible +ligne 229 masquée +ligne 230 masquée +ligne 231 masquée +ligne 232 visible +ligne 233 visible +ligne 234 visible +ligne 235 visible +ligne 236 visible +ligne 237 visible +ligne 238 visible +ligne 239 visible +ligne 240 visible +ligne 241 visible +ligne 242 visible +ligne 243 visible +ligne 244 visible +ligne 245 masquée +ligne 246 masquée +ligne 247 masquée +ligne 248 visible +ligne 249 visible +ligne 250 visible +ligne 251 masquée +ligne 252 masquée +ligne 253 masquée +ligne 254 masquée +ligne 255 masquée +ligne 256 masquée +ligne 257 masquée +ligne 258 masquée +ligne 259 masquée +ligne 260 visible +ligne 261 visible +ligne 262 visible +ligne 263 visible +ligne 264 visible +ligne 265 visible +ligne 266 visible +ligne 267 visible +ligne 268 visible +ligne 269 masquée +ligne 270 masquée +ligne 271 masquée +ligne 272 visible +ligne 273 visible +ligne 274 visible +ligne 275 visible +ligne 276 visible +ligne 277 visible +ligne 278 visible +ligne 279 masquée +ligne 280 masquée +ligne 281 masquée +ligne 282 visible +ligne 283 visible +ligne 284 visible +ligne 285 masquée +ligne 286 masquée +ligne 287 masquée +ligne 288 masquée +ligne 289 masquée +ligne 290 masquée +ligne 291 visible +ligne 292 visible +ligne 293 visible +ligne 294 visible +ligne 295 visible +ligne 296 visible +ligne 297 visible +ligne 298 visible +ligne 299 visible +ligne 300 visible +ligne 301 visible +ligne 302 visible +ligne 303 visible +ligne 304 visible +ligne 305 visible +ligne 306 visible +ligne 307 visible +la ligne 308 n'existe pas diff --git a/src/extractor.rs b/src/extractor.rs new file mode 100644 index 0000000..50d55be --- /dev/null +++ b/src/extractor.rs @@ -0,0 +1,64 @@ +use umya_spreadsheet::Worksheet; + +#[derive(Debug)] +pub struct Extractor<'a> { + sheet: &'a Worksheet, + pub separator: char, + pub merge_fill: MergeFill, + pub exclude_hidden: bool, +} + +impl<'a> Extractor<'a> { + pub fn new(sheet: &'a Worksheet) -> Self { + Extractor { + sheet, + separator: ';', + merge_fill: MergeFill::None, + exclude_hidden: true, + } + } + + fn is_row_hidden(&self, row_index: u32) -> Option { + if let Some(row) = self.sheet.get_row_dimension(&row_index) { + if *row.get_hidden() { + return Some(false); + } else { + return Some(true); + } + } + None + } + + fn is_column_hidden(&self, column_index: u32) -> Option { + if let Some(column) = self.sheet.get_column_dimension_by_number(&column_index) { + if *column.get_hidden() { + return Some(false); + } else { + return Some(true); + } + } + None + } + + fn is_cell_in_merge(&self, row_index: u32, column_index: u32) -> bool { + let merges = self.sheet.get_merge_cells(); + for merge in merges { + if row_index >= *merge.get_coordinate_start_row().unwrap().get_num() + && row_index <= *merge.get_coordinate_end_row().unwrap().get_num() + && column_index >= *merge.get_coordinate_start_col().unwrap().get_num() + && column_index <= *merge.get_coordinate_end_col().unwrap().get_num() + { + return true; + } + } + false + } +} + +#[derive(Debug)] +pub enum MergeFill { + None, + Horizontal, + Vertical, + Both, +} diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..3ea3f27 --- /dev/null +++ b/src/main.rs @@ -0,0 +1,14 @@ +use std::path::Path; +use umya_spreadsheet::reader; + +pub mod extractor; +use extractor::Extractor; + +fn main() { + let book = reader::xlsx::read(Path::new("anafi.xlsx")).unwrap(); + let sheets = book.get_sheet_collection(); + let sheet = sheets.get(1).unwrap(); + let extractor = Extractor::new(sheet); + +} + diff --git a/test_merge_excel.xlsx b/test_merge_excel.xlsx new file mode 100644 index 0000000..a6c0051 Binary files /dev/null and b/test_merge_excel.xlsx differ diff --git a/test_merge_oox.xlsx b/test_merge_oox.xlsx new file mode 100644 index 0000000..8c3b915 Binary files /dev/null and b/test_merge_oox.xlsx differ