# excel-formula-engine **Repository Path**: eow/excel-formula-engine ## Basic Information - **Project Name**: excel-formula-engine - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-25 - **Last Updated**: 2026-03-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Excel公式计算引擎服务 ## 项目概述 这是一个基于Micronaut框架和GraalVM JavaScript引擎的Excel公式计算服务。该服务可以接收POST请求,执行Excel公式计算,并返回计算结果。 ## 技术栈 - Java 11 - Micronaut 4.0.0 - GraalVM JavaScript 22.3.0 - Maven 3.8+ ## 项目结构 ``` excel-formula-engine/ ├── src/ │ ├── main/ │ │ ├── java/com/example/excelformulaengine/ │ │ │ ├── Application.java # 应用入口 │ │ │ ├── controller/ │ │ │ │ └── FormulaController.java # API控制器 │ │ │ ├── model/ │ │ │ │ ├── FormulaRequest.java # 请求模型 │ │ │ │ └── FormulaResponse.java # 响应模型 │ │ │ └── service/ │ │ │ └── FormulaService.java # 公式计算服务 │ │ └── resources/ │ │ └── formula.js # Formula.js库 │ └── test/ │ └── java/com/example/excelformulaengine/ │ ├── controller/ │ │ └── FormulaControllerTest.java # 控制器测试 │ └── service/ │ └── FormulaServiceTest.java # 服务测试 ├── pom.xml # Maven配置文件 └── README.md # 项目文档 ``` ## API接口 ### POST /api/formula/calculate **请求体:** ```json { "a1": 1, "a2": 2, "formula": "A1 + A2" } ``` **响应:** ```json { "result": 3 } ``` ## 支持的公式 - 基本算术运算:`+`, `-`, `*`, `/` - IF函数:`IF(condition, trueValue, falseValue)` ## 运行项目 > **注意:** 以下所有命令均需在项目根目录(即包含 `pom.xml` 和 `Dockerfile` 的目录)下执行。 ### 方式一:直接运行 #### 1. 构建项目 ```bash mvn clean package ``` #### 2. 运行服务 ```bash mvn exec:java -Dexec.mainClass="com.example.excelformulaengine.Application" ``` ### 方式二:使用Docker运行 #### 1. 构建Docker镜像 ```bash docker build -t excel-formula-engine . ``` #### 2. 运行Docker容器 ```bash docker run -p 8080:8080 --name excel-formula-engine excel-formula-engine ``` ### 方式三:使用Docker Compose运行 #### 1. 启动服务 ```bash docker-compose up -d ``` #### 2. 停止服务 ```bash docker-compose down ``` ### 3. 测试API 使用curl测试: 1. **加法测试**: ```bash curl -X POST http://localhost:8080/api/formula/calculate \ -H "Content-Type: application/json" \ -d '{"a1": 1, "a2": 2, "formula": "A1 + A2"}' ``` 2. **减法测试**: ```bash curl -X POST http://localhost:8080/api/formula/calculate \ -H "Content-Type: application/json" \ -d '{"a1": 5, "a2": 3, "formula": "A1 - A2"}' ``` 3. **乘法测试**: ```bash curl -X POST http://localhost:8080/api/formula/calculate \ -H "Content-Type: application/json" \ -d '{"a1": 2, "a2": 4, "formula": "A1 * A2"}' ``` 4. **除法测试**: ```bash curl -X POST http://localhost:8080/api/formula/calculate \ -H "Content-Type: application/json" \ -d '{"a1": 8, "a2": 2, "formula": "A1 / A2"}' ``` 5. **IF函数测试**: ```bash curl -X POST http://localhost:8080/api/formula/calculate \ -H "Content-Type: application/json" \ -d '{"a1": 0, "a2": 5, "formula": "IF(A1 == 0, A2, \"0\")"}' ``` 6. **字符串拼接测试**: ```bash curl -X POST http://localhost:8080/api/formula/calculate \ -H "Content-Type: application/json" \ -d '{"a1": "Hello", "a2": "World", "formula": "A1 + \" \" + A2"}' ``` 7. **复杂IF函数测试**: ```bash curl -X POST http://localhost:8080/api/formula/calculate \ -H "Content-Type: application/json" \ -d '{"a1": 10, "a2": 5, "formula": "IF(A1 > A2, \"A1大于A2\", \"A1小于或等于A2\")"}' ``` ## 运行测试 ```bash mvn test ``` ## 项目特点 1. **高性能**:使用GraalVM JavaScript引擎执行公式计算,性能优异 2. **轻量级**:基于Micronaut框架,启动速度快,内存占用低 3. **可扩展**:易于添加更多Excel函数支持 4. **RESTful API**:提供标准的HTTP接口,易于集成 5. **错误处理**:完善的错误处理机制,返回友好的错误信息 ## 依赖说明 - **Micronaut**:提供HTTP服务器和依赖注入 - **GraalVM JavaScript**:执行JavaScript代码,实现公式计算 - **Jackson**:处理JSON序列化和反序列化 ## 注意事项 - 服务默认运行在8080端口 - 公式中的变量名固定为A1和A2 - 对于复杂公式,可能需要增加内存配置