我一直想做一款轻量级的exlce解析客户端,首先它必须要足够轻量级,性能要强悍。针对excel解析其实有很多选择,我最终还是选择了rust作为基础,因为首先它足够安全效率,页面当然是我一直熟悉的angular作为前段页面,而框架我选择了tauri因为它足够轻量,并且api也足够我使用。
我的目的很明确,能帮我解决以下问题,由于我在维护一款系统,经常有插入数据或修改数据的场景,业务老师会整理excel给我,我的做法之前使用groovy解析excel加工之后生成对应的sql文件,但是维护起来比较麻烦,毕竟我还是喜欢客户端,最好像vscode一样好用。
开原地址 github.com/jasonSuiyt/...
下载地址 github.com/jasonSuiyt/...
支持 windows macos linux 其中对macos支持最好 因为我只有macos开发的 😄 打包交给了github(爱了竟然免费使用)
是不是很像vscode支持dark和light两种主题,会根据系统主题切换
扩展V8函数如下、对于我目前的需求够用 不够用的也可以用js进行扩展
javascript
fs.read_xls();//默认读取选择的xlsx文件
fs.read_xls(path);//读取对应地址的xlsx文件
fs.crete(sqlFile);//创建文件
fs.append(sqlFile, str);//向对应文件追加文本
uuid();//uuid
snowid();//雪花算法id
技术栈简介
- Rust:一种高性能、内存安全的系统级编程语言,特别适用于需要高效、低资源消耗的应用。
- Tauri:一个开源框架,允许开发者使用前端技术(HTML、CSS、JavaScript)构建安全的、原生的、跨平台的桌面应用。
- Angular:一个流行的JavaScript框架,用于构建单页应用(SPA),提供结构化的开发体验和丰富的组件库。
- V8:Google开发的开源JavaScript引擎,以其高性能和即时编译(JIT)能力而著称,是Chrome浏览器和Node.js等项目的核心组件。
- *tailwindcss # 只需书写 HTML 代码,无需书写 CSS,即可快速构建美观的网站。
应用架构
在这个应用中,Rust将主要用于处理底层、性能敏感的Excel解析任务。由于Rust具有直接访问系统资源和无垃圾回收的特性,它非常适合处理这类任务。
Tauri将作为应用的外壳,负责提供原生的桌面应用体验。它将打包Angular构建的前端代码,并通过V8引擎运行这些代码。Tauri还负责处理系统级的交互,如文件选择对话框、通知等。
Angular将作为前端框架,提供用户界面和交互逻辑。开发者可以使用Angular的组件化架构和丰富的开发工具来快速构建用户界面。
V8引擎将嵌入在Tauri中,用于执行Angular生成的JavaScript代码。V8的高效执行和JIT编译能力将确保应用的流畅运行。
Excel解析
对于Excel解析,Rust生态系统中有多个库可供选择,如calamine
或excel
。这些库提供了读取和解析Excel文件(包括.xlsx
和.xls
格式)的功能。开发者可以在Rust中编写一个服务或库来处理Excel文件的解析,并通过Tauri的API将解析结果传递给前端。
前端与后端的交互
在Tauri应用中,前端(Angular)与后端(Rust)之间的交互通常通过Tauri提供的API进行。例如,当用户选择一个Excel文件进行解析时,Angular前端可以调用Tauri的API来打开文件选择对话框,并获取用户选择的文件路径。然后,前端可以将文件路径传递给Rust后端进行解析。解析完成后,Rust后端可以将结果通过Tauri的API返回给前端显示。
总结
Rust、Tauri、Angular和V8的组合为我提供了一个强大而灵活的解决方案,可以快速构建出高效、安全、用户友好的桌面应用。