Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
S
sparrowzz
概览
Overview
Details
Activity
Cycle Analytics
版本库
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
问题
0
Issues
0
列表
Board
标记
里程碑
合并请求
0
Merge Requests
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
Snippets
成员
Collapse sidebar
Close sidebar
活动
图像
聊天
创建新问题
作业
提交
Issue Boards
Open sidebar
sgool
sparrowzz
Commits
a4d16295
Commit
a4d16295
authored
Oct 17, 2024
by
dongshufeng
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
refactor(all): add iesplan example
parent
584b119b
显示空白字符变更
内嵌
并排
正在显示
9 个修改的文件
包含
642 行增加
和
91 行删除
+642
-91
Cargo.lock
+223
-83
eig-domain/Cargo.toml
+5
-1
eig-domain/src/excel.rs
+364
-0
eig-domain/src/lib.rs
+1
-0
mems/examples/ds-powerflow/ds-common/Cargo.toml
+2
-1
mems/examples/iesplan/Cargo.toml
+2
-1
mems/examples/iesplan/layout.xlsx
+0
-0
mems/examples/iesplan/src/lib.rs
+43
-3
mems/examples/iesplan/src/startpage.rs
+2
-2
没有找到文件。
Cargo.lock
查看文件 @
a4d16295
...
@@ -43,9 +43,9 @@ dependencies = [
...
@@ -43,9 +43,9 @@ dependencies = [
[[package]]
[[package]]
name = "anyhow"
name = "anyhow"
version = "1.0.8
7
"
version = "1.0.8
9
"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "
10f00e1f6e58a40e807377c75c6a7f97bf9044fab57816f2414e6f5f4499d7b8
"
checksum = "
86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6
"
[[package]]
[[package]]
name = "anymap2"
name = "anymap2"
...
@@ -63,6 +63,15 @@ dependencies = [
...
@@ -63,6 +63,15 @@ dependencies = [
]
]
[[package]]
[[package]]
name = "arbitrary"
version = "1.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110"
dependencies = [
"derive_arbitrary",
]
[[package]]
name = "arrow-schema"
name = "arrow-schema"
version = "52.2.0"
version = "52.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "registry+https://github.com/rust-lang/crates.io-index"
...
@@ -73,9 +82,9 @@ dependencies = [
...
@@ -73,9 +82,9 @@ dependencies = [
[[package]]
[[package]]
name = "arrow-schema"
name = "arrow-schema"
version = "53.
0
.0"
version = "53.
1
.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "
c85320a3a2facf2b2822b57aa9d6d9d55edb8aee0b6b5d3b8df158e503d10858
"
checksum = "
fbf0388a18fd7f7f3fe3de01852d30f54ed5182f9004db700fbe3ba843ed2794
"
dependencies = [
dependencies = [
"serde",
"serde",
]
]
...
@@ -94,9 +103,9 @@ dependencies = [
...
@@ -94,9 +103,9 @@ dependencies = [
[[package]]
[[package]]
name = "autocfg"
name = "autocfg"
version = "1.
3
.0"
version = "1.
4
.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "
0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0
"
checksum = "
ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26
"
[[package]]
[[package]]
name = "backtrace"
name = "backtrace"
...
@@ -157,9 +166,9 @@ checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c"
...
@@ -157,9 +166,9 @@ checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c"
[[package]]
[[package]]
name = "bytemuck"
name = "bytemuck"
version = "1.1
8
.0"
version = "1.1
9
.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "
94bbb0ad554ad961ddc5da507a12a29b14e4ae5bda06b19f575a3e6079d2e2ae
"
checksum = "
8334215b81e418a0a7bdb8ef0849474f40bb10c8b71f1c4ed315cff49f32494d
"
[[package]]
[[package]]
name = "byteorder"
name = "byteorder"
...
@@ -169,15 +178,30 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
...
@@ -169,15 +178,30 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
[[package]]
[[package]]
name = "bytes"
name = "bytes"
version = "1.7.
1
"
version = "1.7.
2
"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50"
checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3"
[[package]]
name = "calamine"
version = "0.26.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "138646b9af2c5d7f1804ea4bf93afc597737d2bd4f7341d67c48b03316976eb1"
dependencies = [
"byteorder",
"codepage",
"encoding_rs",
"log",
"quick-xml",
"serde",
"zip",
]
[[package]]
[[package]]
name = "cc"
name = "cc"
version = "1.1.
18
"
version = "1.1.
30
"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b
62ac837cdb5cb22e10a256099b4fc502b1dfe560cb282963a974d7abd80e476
"
checksum = "b
16803a61b81d9eabb7eae2588776c4c1e584b738ede45fdbb4c972cec1e9945
"
dependencies = [
dependencies = [
"shlex",
"shlex",
]
]
...
@@ -252,6 +276,15 @@ dependencies = [
...
@@ -252,6 +276,15 @@ dependencies = [
]
]
[[package]]
[[package]]
name = "codepage"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "48f68d061bc2828ae826206326e61251aca94c1e4a5305cf52d9138639c918b4"
dependencies = [
"encoding_rs",
]
[[package]]
name = "concurrent-queue"
name = "concurrent-queue"
version = "2.5.0"
version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "registry+https://github.com/rust-lang/crates.io-index"
...
@@ -286,6 +319,15 @@ dependencies = [
...
@@ -286,6 +319,15 @@ dependencies = [
]
]
[[package]]
[[package]]
name = "crc32fast"
version = "1.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3"
dependencies = [
"cfg-if",
]
[[package]]
name = "cron"
name = "cron"
version = "0.12.1"
version = "0.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "registry+https://github.com/rust-lang/crates.io-index"
...
@@ -359,6 +401,17 @@ dependencies = [
...
@@ -359,6 +401,17 @@ dependencies = [
]
]
[[package]]
[[package]]
name = "derive_arbitrary"
version = "1.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.79",
]
[[package]]
name = "derive_more"
name = "derive_more"
version = "1.0.0"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "registry+https://github.com/rust-lang/crates.io-index"
...
@@ -375,7 +428,7 @@ checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22"
...
@@ -375,7 +428,7 @@ checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22"
dependencies = [
dependencies = [
"proc-macro2",
"proc-macro2",
"quote",
"quote",
"syn 2.0.7
7
",
"syn 2.0.7
9
",
"unicode-xid",
"unicode-xid",
]
]
...
@@ -390,6 +443,17 @@ dependencies = [
...
@@ -390,6 +443,17 @@ dependencies = [
]
]
[[package]]
[[package]]
name = "displaydoc"
version = "0.2.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.79",
]
[[package]]
name = "ds-3phase-pf"
name = "ds-3phase-pf"
version = "0.1.0"
version = "0.1.0"
dependencies = [
dependencies = [
...
@@ -505,7 +569,10 @@ dependencies = [
...
@@ -505,7 +569,10 @@ dependencies = [
name = "eig-domain"
name = "eig-domain"
version = "0.1.0"
version = "0.1.0"
dependencies = [
dependencies = [
"calamine",
"csv",
"eig-expr",
"eig-expr",
"encoding_rs",
"protobuf",
"protobuf",
"protobuf-codegen",
"protobuf-codegen",
"serde",
"serde",
...
@@ -532,6 +599,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
...
@@ -532,6 +599,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0"
checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0"
[[package]]
[[package]]
name = "encoding_rs"
version = "0.8.34"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59"
dependencies = [
"cfg-if",
]
[[package]]
name = "equivalent"
name = "equivalent"
version = "1.0.1"
version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "registry+https://github.com/rust-lang/crates.io-index"
...
@@ -581,6 +657,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
...
@@ -581,6 +657,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80"
checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80"
[[package]]
[[package]]
name = "flate2"
version = "1.0.34"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0"
dependencies = [
"crc32fast",
"miniz_oxide",
]
[[package]]
name = "fnv"
name = "fnv"
version = "1.0.7"
version = "1.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "registry+https://github.com/rust-lang/crates.io-index"
...
@@ -639,7 +725,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650"
...
@@ -639,7 +725,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650"
dependencies = [
dependencies = [
"proc-macro2",
"proc-macro2",
"quote",
"quote",
"syn 2.0.7
7
",
"syn 2.0.7
9
",
]
]
[[package]]
[[package]]
...
@@ -1062,7 +1148,7 @@ dependencies = [
...
@@ -1062,7 +1148,7 @@ dependencies = [
"proc-macro-crate",
"proc-macro-crate",
"proc-macro2",
"proc-macro2",
"quote",
"quote",
"syn 2.0.7
7
",
"syn 2.0.7
9
",
]
]
[[package]]
[[package]]
...
@@ -1089,9 +1175,9 @@ checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
...
@@ -1089,9 +1175,9 @@ checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
[[package]]
[[package]]
name = "hashbrown"
name = "hashbrown"
version = "0.1
4.5
"
version = "0.1
5.0
"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "
e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1
"
checksum = "
1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb
"
[[package]]
[[package]]
name = "hermit-abi"
name = "hermit-abi"
...
@@ -1121,9 +1207,9 @@ dependencies = [
...
@@ -1121,9 +1207,9 @@ dependencies = [
[[package]]
[[package]]
name = "iana-time-zone"
name = "iana-time-zone"
version = "0.1.6
0
"
version = "0.1.6
1
"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "
e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141
"
checksum = "
235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220
"
dependencies = [
dependencies = [
"android_system_properties",
"android_system_properties",
"core-foundation-sys",
"core-foundation-sys",
...
@@ -1150,6 +1236,7 @@ dependencies = [
...
@@ -1150,6 +1236,7 @@ dependencies = [
"bytes",
"bytes",
"chrono",
"chrono",
"cron",
"cron",
"eig-domain",
"getrandom",
"getrandom",
"gloo-file 0.3.0",
"gloo-file 0.3.0",
"gloo-timers 0.3.0",
"gloo-timers 0.3.0",
...
@@ -1186,7 +1273,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
...
@@ -1186,7 +1273,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f8a9aa791c7b5a71b636b7a68207fdebf171ddfc593d9c8506ec4cbc527b6a84"
checksum = "f8a9aa791c7b5a71b636b7a68207fdebf171ddfc593d9c8506ec4cbc527b6a84"
dependencies = [
dependencies = [
"implicit-clone-derive",
"implicit-clone-derive",
"indexmap 2.
5
.0",
"indexmap 2.
6
.0",
]
]
[[package]]
[[package]]
...
@@ -1196,7 +1283,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
...
@@ -1196,7 +1283,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9311685eb9a34808bbb0608ad2fcab9ae216266beca5848613e95553ac914e3b"
checksum = "9311685eb9a34808bbb0608ad2fcab9ae216266beca5848613e95553ac914e3b"
dependencies = [
dependencies = [
"quote",
"quote",
"syn 2.0.7
7
",
"syn 2.0.7
9
",
]
]
[[package]]
[[package]]
...
@@ -1211,12 +1298,12 @@ dependencies = [
...
@@ -1211,12 +1298,12 @@ dependencies = [
[[package]]
[[package]]
name = "indexmap"
name = "indexmap"
version = "2.
5
.0"
version = "2.
6
.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "
68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5
"
checksum = "
707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da
"
dependencies = [
dependencies = [
"equivalent",
"equivalent",
"hashbrown 0.1
4.5
",
"hashbrown 0.1
5.0
",
]
]
[[package]]
[[package]]
...
@@ -1227,18 +1314,18 @@ checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
...
@@ -1227,18 +1314,18 @@ checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
[[package]]
[[package]]
name = "js-sys"
name = "js-sys"
version = "0.3.7
0
"
version = "0.3.7
2
"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "
1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a
"
checksum = "
6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9
"
dependencies = [
dependencies = [
"wasm-bindgen",
"wasm-bindgen",
]
]
[[package]]
[[package]]
name = "libc"
name = "libc"
version = "0.2.1
58
"
version = "0.2.1
60
"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "
d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439
"
checksum = "
f0b21006cd1874ae9e650973c565615676dc4a274c965bb0a73796dac838ce4f
"
[[package]]
[[package]]
name = "linux-raw-sys"
name = "linux-raw-sys"
...
@@ -1247,6 +1334,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
...
@@ -1247,6 +1334,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89"
checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89"
[[package]]
[[package]]
name = "lockfree-object-pool"
version = "0.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9374ef4228402d4b7e403e5838cb880d9ee663314b0a900d5a6aabf0c213552e"
[[package]]
name = "log"
name = "log"
version = "0.4.22"
version = "0.4.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "registry+https://github.com/rust-lang/crates.io-index"
...
@@ -1272,7 +1365,7 @@ checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
...
@@ -1272,7 +1365,7 @@ checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
name = "mems"
name = "mems"
version = "0.1.0"
version = "0.1.0"
dependencies = [
dependencies = [
"arrow-schema 53.
0
.0",
"arrow-schema 53.
1
.0",
"async-channel",
"async-channel",
"base64",
"base64",
"byteorder",
"byteorder",
...
@@ -1309,9 +1402,9 @@ dependencies = [
...
@@ -1309,9 +1402,9 @@ dependencies = [
[[package]]
[[package]]
name = "nalgebra"
name = "nalgebra"
version = "0.33.
0
"
version = "0.33.
1
"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3
c4b5f057b303842cf3262c27e465f4c303572e7f6b0648f60e16248ac3397f4
"
checksum = "3
bf139e93ad757869338ad85239cb1d6c067b23b94e5846e637ca6328ee4be60
"
dependencies = [
dependencies = [
"approx",
"approx",
"matrixmultiply",
"matrixmultiply",
...
@@ -1331,7 +1424,7 @@ checksum = "254a5372af8fc138e36684761d3c0cdb758a4410e938babcff1c860ce14ddbfc"
...
@@ -1331,7 +1424,7 @@ checksum = "254a5372af8fc138e36684761d3c0cdb758a4410e938babcff1c860ce14ddbfc"
dependencies = [
dependencies = [
"proc-macro2",
"proc-macro2",
"quote",
"quote",
"syn 2.0.7
7
",
"syn 2.0.7
9
",
]
]
[[package]]
[[package]]
...
@@ -1441,9 +1534,9 @@ dependencies = [
...
@@ -1441,9 +1534,9 @@ dependencies = [
[[package]]
[[package]]
name = "once_cell"
name = "once_cell"
version = "1.
19.0
"
version = "1.
20.2
"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "
3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92
"
checksum = "
1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775
"
[[package]]
[[package]]
name = "parking"
name = "parking"
...
@@ -1479,7 +1572,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
...
@@ -1479,7 +1572,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db"
checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db"
dependencies = [
dependencies = [
"fixedbitset",
"fixedbitset",
"indexmap 2.
5
.0",
"indexmap 2.
6
.0",
"serde",
"serde",
"serde_derive",
"serde_derive",
]
]
...
@@ -1539,7 +1632,7 @@ checksum = "a4502d8515ca9f32f1fb543d987f63d95a14934883db45bdb48060b6b69257f8"
...
@@ -1539,7 +1632,7 @@ checksum = "a4502d8515ca9f32f1fb543d987f63d95a14934883db45bdb48060b6b69257f8"
dependencies = [
dependencies = [
"proc-macro2",
"proc-macro2",
"quote",
"quote",
"syn 2.0.7
7
",
"syn 2.0.7
9
",
]
]
[[package]]
[[package]]
...
@@ -1567,9 +1660,9 @@ dependencies = [
...
@@ -1567,9 +1660,9 @@ dependencies = [
[[package]]
[[package]]
name = "portable-atomic"
name = "portable-atomic"
version = "1.
7
.0"
version = "1.
9
.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "
da544ee218f0d287a911e9c99a39a8c9bc8fcad3cb8db5959940044ecfc67265
"
checksum = "
cc9c68a3f6da06753e9335d63e27f6b9754dd1920d941135b7ea8224f141adb2
"
[[package]]
[[package]]
name = "portable-atomic-util"
name = "portable-atomic-util"
...
@@ -1597,7 +1690,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
...
@@ -1597,7 +1690,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "479cf940fbbb3426c32c5d5176f62ad57549a0bb84773423ba8be9d089f5faba"
checksum = "479cf940fbbb3426c32c5d5176f62ad57549a0bb84773423ba8be9d089f5faba"
dependencies = [
dependencies = [
"proc-macro2",
"proc-macro2",
"syn 2.0.7
7
",
"syn 2.0.7
9
",
]
]
[[package]]
[[package]]
...
@@ -1636,9 +1729,9 @@ dependencies = [
...
@@ -1636,9 +1729,9 @@ dependencies = [
[[package]]
[[package]]
name = "proc-macro2"
name = "proc-macro2"
version = "1.0.8
6
"
version = "1.0.8
8
"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "
5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77
"
checksum = "
7c3a7fc5db1e57d5a779a352c8cdb57b29aa4c40cc69c3a68a7fedc815fbf2f9
"
dependencies = [
dependencies = [
"unicode-ident",
"unicode-ident",
]
]
...
@@ -1694,7 +1787,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
...
@@ -1694,7 +1787,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "322330e133eab455718444b4e033ebfac7c6528972c784fcde28d2cc783c6257"
checksum = "322330e133eab455718444b4e033ebfac7c6528972c784fcde28d2cc783c6257"
dependencies = [
dependencies = [
"anyhow",
"anyhow",
"indexmap 2.
5
.0",
"indexmap 2.
6
.0",
"log",
"log",
"protobuf",
"protobuf",
"protobuf-support",
"protobuf-support",
...
@@ -1713,6 +1806,16 @@ dependencies = [
...
@@ -1713,6 +1806,16 @@ dependencies = [
]
]
[[package]]
[[package]]
name = "quick-xml"
version = "0.31.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1004a344b30a54e2ee58d66a71b32d2db2feb0a31f9a2d302bf0536f15de2a33"
dependencies = [
"encoding_rs",
"memchr",
]
[[package]]
name = "quote"
name = "quote"
version = "1.0.37"
version = "1.0.37"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "registry+https://github.com/rust-lang/crates.io-index"
...
@@ -1764,9 +1867,9 @@ dependencies = [
...
@@ -1764,9 +1867,9 @@ dependencies = [
[[package]]
[[package]]
name = "regex"
name = "regex"
version = "1.1
0.6
"
version = "1.1
1.0
"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "
4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619
"
checksum = "
38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8
"
dependencies = [
dependencies = [
"aho-corasick",
"aho-corasick",
"memchr",
"memchr",
...
@@ -1776,9 +1879,9 @@ dependencies = [
...
@@ -1776,9 +1879,9 @@ dependencies = [
[[package]]
[[package]]
name = "regex-automata"
name = "regex-automata"
version = "0.4.
7
"
version = "0.4.
8
"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3
8caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df
"
checksum = "3
68758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3
"
dependencies = [
dependencies = [
"aho-corasick",
"aho-corasick",
"memchr",
"memchr",
...
@@ -1787,9 +1890,9 @@ dependencies = [
...
@@ -1787,9 +1890,9 @@ dependencies = [
[[package]]
[[package]]
name = "regex-syntax"
name = "regex-syntax"
version = "0.8.
4
"
version = "0.8.
5
"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "
7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b
"
checksum = "
2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c
"
[[package]]
[[package]]
name = "rustc-demangle"
name = "rustc-demangle"
...
@@ -1805,9 +1908,9 @@ checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152"
...
@@ -1805,9 +1908,9 @@ checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152"
[[package]]
[[package]]
name = "rustix"
name = "rustix"
version = "0.38.3
6
"
version = "0.38.3
7
"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "
3f55e80d50763938498dd5ebb18647174e0c76dc38c5505294bb224624f30f36
"
checksum = "
8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811
"
dependencies = [
dependencies = [
"bitflags",
"bitflags",
"errno",
"errno",
...
@@ -1886,7 +1989,7 @@ checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f"
...
@@ -1886,7 +1989,7 @@ checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f"
dependencies = [
dependencies = [
"proc-macro2",
"proc-macro2",
"quote",
"quote",
"syn 2.0.7
7
",
"syn 2.0.7
9
",
]
]
[[package]]
[[package]]
...
@@ -1944,6 +2047,12 @@ dependencies = [
...
@@ -1944,6 +2047,12 @@ dependencies = [
]
]
[[package]]
[[package]]
name = "simd-adler32"
version = "0.3.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe"
[[package]]
name = "siphasher"
name = "siphasher"
version = "0.3.11"
version = "0.3.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "registry+https://github.com/rust-lang/crates.io-index"
...
@@ -1971,9 +2080,9 @@ dependencies = [
...
@@ -1971,9 +2080,9 @@ dependencies = [
[[package]]
[[package]]
name = "syn"
name = "syn"
version = "2.0.7
7
"
version = "2.0.7
9
"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "
9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed
"
checksum = "
89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590
"
dependencies = [
dependencies = [
"proc-macro2",
"proc-macro2",
"quote",
"quote",
...
@@ -1982,9 +2091,9 @@ dependencies = [
...
@@ -1982,9 +2091,9 @@ dependencies = [
[[package]]
[[package]]
name = "tempfile"
name = "tempfile"
version = "3.1
2
.0"
version = "3.1
3
.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "
04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64
"
checksum = "
f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b
"
dependencies = [
dependencies = [
"cfg-if",
"cfg-if",
"fastrand",
"fastrand",
...
@@ -1995,22 +2104,22 @@ dependencies = [
...
@@ -1995,22 +2104,22 @@ dependencies = [
[[package]]
[[package]]
name = "thiserror"
name = "thiserror"
version = "1.0.6
3
"
version = "1.0.6
4
"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "
c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea40572
4"
checksum = "
d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a8
4"
dependencies = [
dependencies = [
"thiserror-impl",
"thiserror-impl",
]
]
[[package]]
[[package]]
name = "thiserror-impl"
name = "thiserror-impl"
version = "1.0.6
3
"
version = "1.0.6
4
"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "
a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261
"
checksum = "
08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3
"
dependencies = [
dependencies = [
"proc-macro2",
"proc-macro2",
"quote",
"quote",
"syn 2.0.7
7
",
"syn 2.0.7
9
",
]
]
[[package]]
[[package]]
...
@@ -2046,7 +2155,7 @@ version = "0.19.15"
...
@@ -2046,7 +2155,7 @@ version = "0.19.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421"
checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421"
dependencies = [
dependencies = [
"indexmap 2.
5
.0",
"indexmap 2.
6
.0",
"toml_datetime",
"toml_datetime",
"winnow",
"winnow",
]
]
...
@@ -2070,7 +2179,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
...
@@ -2070,7 +2179,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
dependencies = [
dependencies = [
"proc-macro2",
"proc-macro2",
"quote",
"quote",
"syn 2.0.7
7
",
"syn 2.0.7
9
",
]
]
[[package]]
[[package]]
...
@@ -2090,9 +2199,9 @@ checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825"
...
@@ -2090,9 +2199,9 @@ checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825"
[[package]]
[[package]]
name = "unicode-ident"
name = "unicode-ident"
version = "1.0.1
2
"
version = "1.0.1
3
"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "
3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b
"
checksum = "
e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe
"
[[package]]
[[package]]
name = "unicode-xid"
name = "unicode-xid"
...
@@ -2114,9 +2223,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
...
@@ -2114,9 +2223,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
[[package]]
[[package]]
name = "wasm-bindgen"
name = "wasm-bindgen"
version = "0.2.9
3
"
version = "0.2.9
5
"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "
a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5
"
checksum = "
128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e
"
dependencies = [
dependencies = [
"cfg-if",
"cfg-if",
"once_cell",
"once_cell",
...
@@ -2125,24 +2234,24 @@ dependencies = [
...
@@ -2125,24 +2234,24 @@ dependencies = [
[[package]]
[[package]]
name = "wasm-bindgen-backend"
name = "wasm-bindgen-backend"
version = "0.2.9
3
"
version = "0.2.9
5
"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "
9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b
"
checksum = "
cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358
"
dependencies = [
dependencies = [
"bumpalo",
"bumpalo",
"log",
"log",
"once_cell",
"once_cell",
"proc-macro2",
"proc-macro2",
"quote",
"quote",
"syn 2.0.7
7
",
"syn 2.0.7
9
",
"wasm-bindgen-shared",
"wasm-bindgen-shared",
]
]
[[package]]
[[package]]
name = "wasm-bindgen-futures"
name = "wasm-bindgen-futures"
version = "0.4.4
3
"
version = "0.4.4
5
"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "
61e9300f63a621e96ed275155c108eb6f843b6a26d053f122ab69724559dc8ed
"
checksum = "
cc7ec4f8827a71586374db3e87abdb5a2bb3a15afed140221307c3ec06b1f63b
"
dependencies = [
dependencies = [
"cfg-if",
"cfg-if",
"js-sys",
"js-sys",
...
@@ -2152,9 +2261,9 @@ dependencies = [
...
@@ -2152,9 +2261,9 @@ dependencies = [
[[package]]
[[package]]
name = "wasm-bindgen-macro"
name = "wasm-bindgen-macro"
version = "0.2.9
3
"
version = "0.2.9
5
"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "
585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf
"
checksum = "
e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56
"
dependencies = [
dependencies = [
"quote",
"quote",
"wasm-bindgen-macro-support",
"wasm-bindgen-macro-support",
...
@@ -2162,28 +2271,28 @@ dependencies = [
...
@@ -2162,28 +2271,28 @@ dependencies = [
[[package]]
[[package]]
name = "wasm-bindgen-macro-support"
name = "wasm-bindgen-macro-support"
version = "0.2.9
3
"
version = "0.2.9
5
"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "
afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836
"
checksum = "
26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68
"
dependencies = [
dependencies = [
"proc-macro2",
"proc-macro2",
"quote",
"quote",
"syn 2.0.7
7
",
"syn 2.0.7
9
",
"wasm-bindgen-backend",
"wasm-bindgen-backend",
"wasm-bindgen-shared",
"wasm-bindgen-shared",
]
]
[[package]]
[[package]]
name = "wasm-bindgen-shared"
name = "wasm-bindgen-shared"
version = "0.2.9
3
"
version = "0.2.9
5
"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "
c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484
"
checksum = "
65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d
"
[[package]]
[[package]]
name = "web-sys"
name = "web-sys"
version = "0.3.7
0
"
version = "0.3.7
2
"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "
26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0
"
checksum = "
f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112
"
dependencies = [
dependencies = [
"js-sys",
"js-sys",
"wasm-bindgen",
"wasm-bindgen",
...
@@ -2346,7 +2455,7 @@ dependencies = [
...
@@ -2346,7 +2455,7 @@ dependencies = [
"futures",
"futures",
"gloo 0.10.0",
"gloo 0.10.0",
"implicit-clone 0.4.9",
"implicit-clone 0.4.9",
"indexmap 2.
5
.0",
"indexmap 2.
6
.0",
"js-sys",
"js-sys",
"prokio",
"prokio",
"rustversion",
"rustversion",
...
@@ -2374,7 +2483,7 @@ dependencies = [
...
@@ -2374,7 +2483,7 @@ dependencies = [
[[package]]
[[package]]
name = "yew-bulma"
name = "yew-bulma"
version = "0.1.0"
version = "0.1.0"
source = "git+https://github.com/shufengdong/yew-bulma.git#
3d845ab40b113f83b006e8f094786f745bf3de0b
"
source = "git+https://github.com/shufengdong/yew-bulma.git#
26d4bab9e21144613448e0562c26ca09ce556cee
"
dependencies = [
dependencies = [
"bytes",
"bytes",
"chrono",
"chrono",
...
@@ -2420,5 +2529,36 @@ dependencies = [
...
@@ -2420,5 +2529,36 @@ dependencies = [
"proc-macro-error",
"proc-macro-error",
"proc-macro2",
"proc-macro2",
"quote",
"quote",
"syn 2.0.77",
"syn 2.0.79",
]
[[package]]
name = "zip"
version = "2.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dc5e4288ea4057ae23afc69a4472434a87a2495cafce6632fd1c4ec9f5cf3494"
dependencies = [
"arbitrary",
"crc32fast",
"crossbeam-utils",
"displaydoc",
"flate2",
"indexmap 2.6.0",
"memchr",
"thiserror",
"zopfli",
]
[[package]]
name = "zopfli"
version = "0.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e5019f391bac5cf252e93bbcc53d039ffd62c7bfb7c150414d61369afe57e946"
dependencies = [
"bumpalo",
"crc32fast",
"lockfree-object-pool",
"log",
"once_cell",
"simd-adler32",
]
]
eig-domain/Cargo.toml
查看文件 @
a4d16295
...
@@ -11,7 +11,11 @@ serde = { version = "1.0", features = ["derive"] }
...
@@ -11,7 +11,11 @@ serde = { version = "1.0", features = ["derive"] }
protobuf
=
{
version
=
"3.5"
,
features
=
["with-bytes"]
}
protobuf
=
{
version
=
"3.5"
,
features
=
["with-bytes"]
}
# this project
# this project
eig-expr
=
{
path
=
"../eig-expr"
}
eig-expr
=
{
path
=
"../eig-expr"
}
csv
=
"1.3"
calamine
=
"0.26"
encoding_rs
=
"0.8.34"
[build-dependencies]
[build-dependencies]
# protobuf-codegen-pure = "2.28"
# protobuf-codegen-pure = "2.28"
...
...
eig-domain/src/excel.rs
0 → 100644
查看文件 @
a4d16295
use
std
::
collections
::
HashMap
;
use
std
::
io
::{
Cursor
,
Write
};
use
std
::
path
::
Path
;
use
calamine
::
ReaderRef
;
use
calamine
::{
open_workbook_auto_from_rs
,
Data
,
Reader
,
Sheets
,
Xlsx
,
open_workbook_from_rs
};
pub
fn
excel_to_csv_bytes
<
P
:
AsRef
<
Path
>>
(
path
:
P
)
->
Option
<
Vec
<
Vec
<
u8
>>>
{
let
bytes
=
std
::
fs
::
read
(
path
)
.ok
()
?
;
excel_bytes_to_csv_bytes
(
bytes
.as_slice
())
}
pub
fn
get_first_sheet_merged_cells
(
bytes
:
Vec
<
u8
>
)
->
Option
<
(
u32
,
u32
,
HashMap
<
(
u32
,
u32
),
(
u32
,
u32
)
>
)
>
{
let
c
=
Cursor
::
new
(
bytes
);
let
mut
excel
:
Xlsx
<
_
>
=
open_workbook_from_rs
(
c
)
.ok
()
?
;
excel
.load_merged_regions
()
.ok
()
?
;
let
sheet_names
=
excel
.sheet_names
();
let
mut
max_col
=
0
;
if
sheet_names
.len
()
>
0
{
let
v
=
excel
.merged_regions_by_sheet
(
&
sheet_names
[
0
]);
let
mut
merged_cells
=
HashMap
::
with_capacity
(
v
.len
());
for
(
_
,
_
,
c
)
in
v
{
merged_cells
.insert
(
c
.start
,
c
.end
);
if
c
.end
.
1
>
max_col
{
max_col
=
c
.end
.
1
;
}
}
let
range
=
excel
.worksheet_range_ref
(
&
sheet_names
[
0
])
.ok
()
?
;
let
(
m
,
w
)
=
range
.get_size
();
let
n
=
if
w
as
u32
>
max_col
+
1
{
w
as
u32
}
else
{
max_col
+
1
};
return
Some
((
m
as
u32
,
n
,
merged_cells
));
}
None
}
pub
fn
excel_bytes_to_csv_bytes
(
bytes
:
&
[
u8
])
->
Option
<
Vec
<
Vec
<
u8
>>>
{
let
c
=
Cursor
::
new
(
bytes
.to_vec
());
if
let
Ok
(
mut
xl
)
=
open_workbook_auto_from_rs
(
c
)
{
let
mut
sheet_names
=
xl
.sheet_names
();
sheet_names
.retain
(|
name
|
!
name
.starts_with
(
'_'
));
sheets_to_csv
(
&
mut
xl
,
sheet_names
)
}
else
{
let
is_csv
=
csv
::
ReaderBuilder
::
new
()
.has_headers
(
true
)
.from_reader
(
bytes
)
.records
()
.next
()
.is_some_and
(|
x
|
x
.is_ok
());
if
is_csv
{
Some
(
vec!
[
bytes
.to_vec
()])
}
else
{
None
}
}
}
pub
fn
excel_bytes_to_csv_bytes_by_sheet_names
(
bytes
:
&
[
u8
],
names
:
Vec
<
String
>
,
)
->
Option
<
Vec
<
Vec
<
u8
>>>
{
let
c
=
Cursor
::
new
(
bytes
.to_vec
());
let
mut
xl
=
open_workbook_auto_from_rs
(
c
)
.ok
()
?
;
sheets_to_csv
(
&
mut
xl
,
names
)
}
fn
sheets_to_csv
<
T
>
(
xl
:
&
mut
Sheets
<
T
>
,
names
:
Vec
<
String
>
)
->
Option
<
Vec
<
Vec
<
u8
>>>
where
T
:
std
::
io
::
Read
+
std
::
io
::
Seek
,
{
let
mut
result
=
Vec
::
with_capacity
(
names
.len
());
for
name
in
names
{
let
range
=
xl
.worksheet_range
(
name
.as_str
())
.ok
()
?
;
let
n
=
range
.get_size
()
.
1
-
1
;
let
mut
dest
=
Vec
::
new
();
for
r
in
range
.rows
()
{
for
(
i
,
c
)
in
r
.iter
()
.enumerate
()
{
match
*
c
{
Data
::
Empty
=>
Ok
(()),
Data
::
String
(
ref
s
)
=>
{
if
s
.contains
(
','
)
||
s
.contains
(
'\r'
)
||
s
.contains
(
'\n'
)
||
s
.contains
(
'"'
)
{
let
new_s
=
s
.replace
(
'\
"', "
\
"
\
"");
write!(dest, "
\
"{new_s}
\
"")
} else {
write!(dest, "
{
s
}
")
}
}
Data::Float(ref f) => write!(dest, "
{
f
}
"),
Data::DateTime(ref data) => write!(dest, "
{
data
}
"),
Data::DurationIso(ref s) | Data::DateTimeIso(ref s) => write!(dest, "
{
s
}
"),
Data::Int(ref i) => write!(dest, "
{
i
}
"),
Data::Error(ref e) => write!(dest, "
{:
?
}
", e),
Data::Bool(ref b) => write!(dest, "
{
b
}
"),
}
.ok()?;
if i != n {
write!(dest, "
,
").ok()?;
}
}
write!(dest, "
\
r
\
n
").ok()?;
}
if !dest.is_empty() {
result.push(dest);
}
}
Some(result)
}
#[derive(Debug, PartialEq)]
enum FileEncode {
UTF8,
UTF16LE,
UTF16BE,
GBK,
}
pub fn transfer_to_utf8(data: Vec<u8>) -> Result<Vec<u8>,()> {
let encode = get_encoding(data.as_slice());
// encoding_rs::max_utf8_buffer_length
let mut decoder = match encode {
FileEncode::UTF8 => encoding_rs::UTF_8.new_decoder(),
FileEncode::UTF16LE => {
encoding_rs::UTF_16LE.new_decoder()
}
FileEncode::UTF16BE => {
encoding_rs::UTF_16BE.new_decoder()
}
FileEncode::GBK => {
encoding_rs::GBK.new_decoder()
}
};
let mut result = Vec::with_capacity(
decoder.max_utf8_buffer_length(data.len()).unwrap()
);
result.resize(result.capacity(), 0u8);
let (_, _, written, has_errors) = decoder.decode_to_utf8(data.as_slice(), &mut result, true);
if has_errors {
Err(())
} else {
result.truncate(written);
Ok(result)
}
}
fn get_encoding(data: &[u8]) -> FileEncode {
// let data: Vec<u8> = vec![0xFF, 0xFE, 0x41, 0x00, 0x42, 0x00];
// let data = data.to_owned();
// let data_clone = data.to_owned();
let len = data.len();
if len > 2 && data[0] == 0xFF && data[1] == 0xFE {
return FileEncode::UTF16LE;
} else if len > 2 && data[0] == 0xFE && data[1] == 0xFF {
return FileEncode::UTF16BE;
} else if len > 3 && data[0] == 0xEF && data[1] == 0xBB && data[2] == 0xBF {
// UTF8-BOM
return FileEncode::UTF8;
} else {
// 根据编码规则判断编码格式是GBK/UTF-8
//无文件头根据编码规律来判断编码格式
//UTF-8的编码规则很简单,只有二条:
//1)对于单字节的符号,字节的第一位设为0,后面7位为这个符号的unicode码。因此对于英语字母,UTF - 8编码和ASCII码是相同的。
//2)对于n字节的符号(n>1),第一个字节的前n位都设为1,第n + 1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的unicode码。
// let mut byte_number = 0;
let mut utf8_number = 0;
let mut index = 0;
while index < len {
//取第一个字节判断第一位是否为1,以及获取第一位为1时后面位连续为1的数量
let mut byte_number = 0;
for i in 0..8 {
if data[index] & (0b10000000 >> i) != 0 {
byte_number += 1;
} else {
break;
}
}
//若byte等于0,则非中文,中文数量清零
if byte_number == 0 {
utf8_number = 0;
index += 1;
} else if byte_number == 1 || byte_number > 4 {
return FileEncode::GBK;
} else {
//如果该字节开头几位连续为1,且数量byte超过1,则判断d该自己后面byte-1个字节是否符合UTF-8编码规则, 即10开头;
for i in 1..byte_number {
if data[index + i] & 0b11000000 != 0b10000000 {
return FileEncode::GBK;
}
}
//即使满足UTF-8,仍可能为GBK
//如果连续的UTF-8编码的中文数量超过3个,则判断为utf-8
utf8_number += 1;
index += byte_number;
if utf8_number >= 3 {
return FileEncode::UTF8;
}
}
}
}
return FileEncode::UTF8;
}
#[cfg(test)]
mod tests {
use std::io::{Cursor, Read, Write};
use super::*;
#[test]
fn test_parse() {
let bytes = std::fs::read("
..
/
eig
-
domain
/
tests
/
points
-
test1
.xlsx
").unwrap();
let mut c = Cursor::new(Vec::new());
c.write_all(bytes.as_slice()).unwrap();
let mut xl = open_workbook_auto_from_rs(c).unwrap();
let names = xl.sheet_names().to_owned();
let bytes = sheets_to_csv(&mut xl, names).unwrap()[0].clone();
let mut buf = String::new();
bytes.as_slice().read_to_string(&mut buf).unwrap();
println!("
{}
", buf);
}
#[test]
fn test_parse_points() {
use crate::{from_csv, from_csv_bytes2};
let path1 = "
tests
/
points
-
test1
.xlsx
";
let path2 = "
tests
/
points
-
test1
.csv
";
let bytes = excel_to_csv_bytes(path1).unwrap()[0].clone();
let (map1, tags1) = from_csv_bytes2(bytes.as_slice(), true, false).unwrap();
let (map2, tags2) = from_csv(path2).unwrap();
for key in map2.keys() {
assert_eq!(map1.get(key), map2.get(key));
}
assert_eq!(tags1, tags2);
}
#[test]
fn test_parse_points2() {
use crate::{from_csv, from_csv_bytes2};
let path1 = "
tests
/
points
-
test1
.csv
";
let path2 = "
tests
/
points
-
test1
.csv
";
let bytes = excel_to_csv_bytes(path1).unwrap()[0].clone();
let (map1, tags1) = from_csv_bytes2(bytes.as_slice(), true, false).unwrap();
let (map2, tags2) = from_csv(path2).unwrap();
for key in map2.keys() {
assert_eq!(map1.get(key), map2.get(key));
}
assert_eq!(tags1, tags2);
}
// #[test]
// fn test_parse_aoes() {
// use eig_aoe::aoe::parse::{from_csv_bytes, from_file};
// let path = "
..
/
eig
-
aoe
/
tests
/
test_zq
/
aoe
-
test1
.xlsx
";
// let path2 = "
..
/
eig
-
aoe
/
tests
/
test_zq
/
aoe
-
test1
.csv
";
// let bytes = excel_to_csv_bytes(path).unwrap()[0].clone();
// let aoes1 = from_csv_bytes(bytes.as_slice()).unwrap();
// let aoes2 = from_file(path2).unwrap();
// assert_eq!(3, aoes2.len());
// for i in 0..aoes2.len() {
// assert_eq!(aoes1[i].model, aoes2[i].model);
// }
// }
#[test]
fn test_parse_mbtcps() {
use crate::modbus::ModbusTcpClientTp;
let path = "
tests
/
tcp
-
mbc
-
test1
.xlsx
";
let path2 = "
tests
/
tcp
-
mbc
-
test1
.csv
";
let bytes = excel_to_csv_bytes(path).unwrap()[0].clone();
let mut buf = String::new();
bytes.as_slice().read_to_string(&mut buf).unwrap();
println!("
{}
", buf);
let tps1 = ModbusTcpClientTp::from_csv_bytes2(bytes.as_slice()).unwrap();
let tps2 = ModbusTcpClientTp::from_csv2(path2).unwrap();
assert_eq!(tps1, tps2);
}
#[test]
fn test_parse_kanban() {
let xlsx_bytes = std::fs::read("
tests
/
kanban1
.xlsx
").unwrap();
let (m, n, merged_cells) = get_first_sheet_merged_cells(xlsx_bytes).unwrap();
assert_eq!(m, 6);
assert_eq!(n, 12);
let mut is_dealt = vec![false; (m * n) as usize];
let mut cells = Vec::new();
for i in 0..m {
for j in 0..n {
let index = (i * n + j) as usize;
if is_dealt[index] {
continue;
}
let mut class_str = "
cell
".to_string();
let coordinate = (i, j);
if let Some((end_row, end_col)) = merged_cells.get(&coordinate) {
let row_span = *end_row - i + 1;
let col_span = *end_col - j + 1;
if row_span > 1 {
class_str.push_str(&format!("
is
-
row
-
span
-
{
row_span
}
"))
}
if col_span > 1 {
class_str.push_str(&format!("
is
-
col
-
span
-
{
col_span
}
"))
}
cells.push(class_str);
for row in i..=*end_row {
for col in j..=*end_col {
let pos = (row * n + col) as usize;
is_dealt[pos] = true;
}
}
} else {
cells.push(class_str);
}
}
}
assert_eq!(23, cells.len());
}
#[test]
fn test_parse_kanban2() {
let xlsx_bytes = std::fs::read("
tests
/
kanban2
.xlsx
").unwrap();
let (m, n, _) = get_first_sheet_merged_cells(xlsx_bytes).unwrap();
assert_eq!(m, 7);
assert_eq!(n, 12);
let xlsx_bytes = std::fs::read("
tests
/
kanban3
.xlsx
").unwrap();
let (m, n, _) = get_first_sheet_merged_cells(xlsx_bytes).unwrap();
assert_eq!(m, 7);
assert_eq!(n, 12);
}
#[test]
fn test_parse_file() {
let content = std::fs::read("
tests
/
GBK
.txt
").unwrap();
let encoding = get_encoding(content.as_slice());
assert_eq!(encoding, FileEncode::GBK);
let gbk = transfer_to_utf8(content).unwrap();
let content = std::fs::read("
tests
/
UTF8
.txt
").unwrap();
let encoding = get_encoding(content.as_slice());
assert_eq!(encoding, FileEncode::UTF8);
let utf8 = transfer_to_utf8(content).unwrap();
assert_eq!(gbk, utf8);
}
}
eig-domain/src/lib.rs
查看文件 @
a4d16295
...
@@ -11,6 +11,7 @@ use crate::prop::DataUnit;
...
@@ -11,6 +11,7 @@ use crate::prop::DataUnit;
pub
mod
prop
;
pub
mod
prop
;
pub
mod
proto
;
pub
mod
proto
;
pub
mod
web
;
pub
mod
web
;
pub
mod
excel
;
/**
/**
* @api {Measurement} /Measurement Measurement
* @api {Measurement} /Measurement Measurement
...
...
mems/examples/ds-powerflow/ds-common/Cargo.toml
查看文件 @
a4d16295
...
@@ -6,6 +6,6 @@ edition = "2021"
...
@@ -6,6 +6,6 @@ edition = "2021"
[dependencies]
[dependencies]
log
=
"0.4"
log
=
"0.4"
serde_json
=
"1.0"
serde_json
=
"1.0"
csv
=
"1.3
.0
"
csv
=
"1.3"
eig-domain
=
{
path
=
"../../../../eig-domain"
}
eig-domain
=
{
path
=
"../../../../eig-domain"
}
mems
=
{
path
=
"../../.."
}
mems
=
{
path
=
"../../.."
}
\ No newline at end of file
mems/examples/iesplan/Cargo.toml
查看文件 @
a4d16295
...
@@ -28,7 +28,8 @@ getrandom = { version = "0.2", features = ["js"] }
...
@@ -28,7 +28,8 @@ getrandom = { version = "0.2", features = ["js"] }
chrono
=
{
version
=
"0.4"
,
features
=
["wasmbind"]
}
chrono
=
{
version
=
"0.4"
,
features
=
["wasmbind"]
}
protobuf
=
{
version
=
"3.7"
,
features
=
["with-bytes"]
}
protobuf
=
{
version
=
"3.7"
,
features
=
["with-bytes"]
}
cron
=
"0.12"
cron
=
"0.12"
yew-bulma
=
{
git
=
"https://github.com/shufengdong/yew-bulma.git"
}
yew-bulma
=
{
git
=
"https://github.com/shufengdong/yew-bulma.git"
}
eig-domain
=
{
path
=
"../../../eig-domain"
}
# web-sys and js-sys
# web-sys and js-sys
js-sys
=
"0.3"
js-sys
=
"0.3"
[dependencies.web-sys]
[dependencies.web-sys]
...
...
mems/examples/iesplan/layout.xlsx
0 → 100644
查看文件 @
a4d16295
File added
mems/examples/iesplan/src/lib.rs
查看文件 @
a4d16295
use
wasm_bindgen
::
prelude
::
*
;
use
wasm_bindgen
::
prelude
::
*
;
use
web_sys
::
Element
;
use
web_sys
::
Element
;
use
crate
::
startpage
::
Dashboard
;
use
crate
::
startpage
::
StartPage
;
use
yew_bulma
::
layout
::
tiles
::
Tiles
;
use
eig_domain
::
excel
::
get_first_sheet_merged_cells
;
pub
mod
startpage
;
pub
mod
startpage
;
#[wasm_bindgen]
#[wasm_bindgen]
pub
fn
create_view
(
e
:
Element
)
{
pub
fn
create_view
(
e
:
Element
)
{
yew
::
Renderer
::
<
Dashboard
>
::
with_root
(
e
)
.render
();
yew
::
Renderer
::
<
StartPage
>
::
with_root
(
e
)
.render
();
}
pub
fn
new
(
xlsx_bytes
:
Vec
<
u8
>
)
->
Option
<
Tiles
>
{
let
(
m
,
n
,
merge_map
)
=
get_first_sheet_merged_cells
(
xlsx_bytes
)
?
;
let
mut
class_vec
=
Vec
::
new
();
let
mut
is_dealt
=
vec!
[
false
;
(
m
*
n
)
as
usize
];
for
i
in
0
..
m
{
for
j
in
0
..
n
{
let
index
=
(
i
*
n
+
j
)
as
usize
;
if
is_dealt
[
index
]
{
continue
;
}
let
mut
class_str
=
"cell"
.to_string
();
let
coordinate
=
(
i
,
j
);
if
let
Some
((
end_row
,
end_col
))
=
merge_map
.get
(
&
coordinate
)
{
let
row_span
=
*
end_row
-
i
+
1
;
let
col_span
=
*
end_col
-
j
+
1
;
if
row_span
>
1
{
class_str
.push_str
(
&
format!
(
" is-row-span-{row_span}"
))
}
if
col_span
>
1
{
class_str
.push_str
(
&
format!
(
" is-col-span-{col_span}"
))
}
class_vec
.push
(
class_str
);
for
row
in
i
..=*
end_row
{
for
col
in
j
..=*
end_col
{
let
pos
=
(
row
*
n
+
col
)
as
usize
;
is_dealt
[
pos
]
=
true
;
}
}
}
else
{
class_vec
.push
(
class_str
);
}
}
}
let
tiles
=
Tiles
{
id
:
""
.to_string
(),
class_str
:
class_vec
,
with_box
:
true
};
Some
(
tiles
)
}
}
\ No newline at end of file
mems/examples/iesplan/src/startpage.rs
查看文件 @
a4d16295
...
@@ -11,7 +11,7 @@ pub enum Msg {
...
@@ -11,7 +11,7 @@ pub enum Msg {
DateRangePicked
(
u64
,
u64
),
DateRangePicked
(
u64
,
u64
),
}
}
pub
struct
Dashboard
{
pub
struct
StartPage
{
templates
:
HashMap
<
String
,
String
>
,
templates
:
HashMap
<
String
,
String
>
,
chart1
:
NodeRef
,
chart1
:
NodeRef
,
chart2
:
NodeRef
,
chart2
:
NodeRef
,
...
@@ -19,7 +19,7 @@ pub struct Dashboard {
...
@@ -19,7 +19,7 @@ pub struct Dashboard {
chart4
:
NodeRef
,
chart4
:
NodeRef
,
}
}
impl
Component
for
Dashboard
{
impl
Component
for
StartPage
{
type
Message
=
Msg
;
type
Message
=
Msg
;
type
Properties
=
();
type
Properties
=
();
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论