Flutter电子表格计算插件visicalc_engine的使用
Flutter电子表格计算插件visicalc_engine的使用
此插件实现了在 Dart 库中克隆的 VisiCalc 电子表格引擎。该库通过解析单元格字符串(Map<A1,String>
)并考虑对其他单元格的引用来计算结果。
特性
- 支持由 Dan Bricklin 和 Bob Frankston 解释的 VisiCalc 的计算和引用语言,详见参考卡。
获取开始
以下是一些简单的使用示例:
import 'package:a1/a1.dart';
import 'package:visicalc_engine/visicalc_engine.dart';
void main(List<String> arguments) {
// 创建一个电子表格
final sheet = {
'A1'.a1: '/FR-12.2',
'A2'.a1: '(a5+45)',
'A3'.a1: '/F*13',
'A4'.a1: '+A2+A5-A6',
'A5'.a1: '-A3/2+2',
'A6'.a1: '/F$0.23*2',
'B1'.a1: '+A1+A3*3',
'B2'.a1: '(A1+A3)*3',
'B3'.a1: '12.23e-12',
'B4'.a1: '.23e12',
'B5'.a1: '/FRb4',
'B6'.a1: '+b2',
'B7'.a1: '@sum(a1...b6)',
'D13'.a1: '+b2',
};
// 初始化工作表
final worksheet = Engine.fromMap(sheet, parseErrorThrows: true);
print(worksheet);
// 修改单元格
var b5 = worksheet["B5".a1];
print('B5 formula was ${b5?.formulaType?.asFormula} = $b5');
print('Now setting B5 to formula a1');
worksheet['B5'.a1] = '+a1';
b5 = worksheet["B5".a1];
print('Now B5 formula is ${b5?.formulaType?.asFormula} = $b5');
print(worksheet);
print('Output to a .vc file\n: ${worksheet.toFileContents()}');
// 解析 VisiCalc .vc 文件格式的例子
final fileContents = '''\
>A1:/FL"TRUE\r
>A2:+B5*10\r
>A3:+B3+1\r
>A4:"tes\r
>A5:[@SUM](/user/SUM)(B2...B5)\r
>B1:/FR"label\r
>B2:123\r
>B3:[@PI](/user/PI)\r
>B4:+B3\r
>B5:.23*2\r
\u0000''';
print('Parsing an example of a VisiCalc .vc file format');
final engine = Engine.fromFileContents(fileContents);
print(engine);
}
执行上述代码后,输出结果如下:
A fx | A | B fx | B | C fx | C | D fx | D |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1 -12.2 | -12.2 | +A1+A3*3 | 26.8 | | | | |
2 (A5+45) | 40.5 | (A1+A3)*3 | 2.4 | | | | |
3 13 | ******** | 1.223e-11 | 1.223e-11 | | | | |
4 +A2+A5-A6 | 35.54 | 230000000000 | 230000000000 | | | | |
5 -A3/2+2 | -4.5 | B4 | 230000000000 | | | | |
6 0.23*2 | 0.46 | +B2 | 2.4 | | | | |
7 | | [@SUM](/user/SUM)(A1...B6) | 460000000104.4000244 | | | | |
8 | | | | | | | |
9 | | | | | | | |
10 | | | | | | | |
11 | | | | | | | |
12 | | | | | | | |
13 | | | | | | +B2 | 2.4 |
B5 formula was B4 = 230000000000
Now setting B5 to formula a1
Now B5 formula is +A1 = -12.2
A fx | A | B fx | B | C fx | C | D fx | D |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1 -12.2 | -12.2 | +A1+A3*3 | 26.8 | | | | |
2 (A5+45) | 40.5 | (A1+A3)*3 | 2.4 | | | | |
3 13 | ******** | 1.223e-11 | 1.223e-11 | | | | |
4 +A2+A5-A6 | 35.54 | 230000000000 | 230000000000 | | | | |
5 -A3/2+2 | -4.5 | +A1 | -12.2 | | | | |
6 0.23*2 | 0.46 | +B2 | 2.4 | | | | |
7 | | [@SUM](/user/SUM)(A1...B6) | 230000000092.1999816 | | | | |
8 | | | | | | | |
9 | | | | | | | |
10 | | | | | | | |
11 | | | | | | | |
12 | | | | | | | |
13 | | | | | | +B2 | 2.4 |
Output to a .vc file
: >D13:+B2
>B7:[@SUM](/user/SUM)(A1...B6)
>B6:+B2
>A6:/F$0.23*2
>B5:+A1
>A5:-A3/2+2
>B4:230000000000
>A4:+A2+A5-A6
>B3:1.223e-11
>A3:/F*13
>B2:(A1+A3)*3
>A2:(A5+45)
>B1:+A1+A3*3
>A1:/FR-12.2
Parsing an example of a VisiCalc .vc file format
A fx | A | B fx | B |
-----------------------------------------------------------------------------------------------
1 "TRUE | TRUE | "label | label |
2 +B5*10 | 4.6 | 123 | 123 |
3 +B3+1 | 4.1415926536 | [@PI](/user/PI) | 3.1415926536 |
4 "tes | tes | +B3 | 3.1415926536 |
5 [@SUM](/user/SUM)(B2...B5) | 129.7431853072 | 0.23*2 | 0.46 |
更多关于Flutter电子表格计算插件visicalc_engine的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复
更多关于Flutter电子表格计算插件visicalc_engine的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中使用visicalc_engine
插件来进行电子表格计算的示例代码。这个插件允许你在Flutter应用中执行电子表格计算。
1. 添加依赖
首先,在你的pubspec.yaml
文件中添加visicalc_engine
依赖:
dependencies:
flutter:
sdk: flutter
visicalc_engine: ^最新版本号 # 请替换为实际发布的最新版本号
2. 导入插件
在你的Dart文件中导入visicalc_engine
:
import 'package:visicalc_engine/visicalc_engine.dart';
3. 初始化并使用VisicalcEngine
以下是一个简单的示例,展示如何创建一个电子表格并执行一些基本的计算:
import 'package:flutter/material.dart';
import 'package:visicalc_engine/visicalc_engine.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Visicalc Engine Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: Scaffold(
appBar: AppBar(
title: Text('Visicalc Engine Demo'),
),
body: Center(
child: VisicalcDemo(),
),
),
);
}
}
class VisicalcDemo extends StatefulWidget {
@override
_VisicalcDemoState createState() => _VisicalcDemoState();
}
class _VisicalcDemoState extends State<VisicalcDemo> {
late VisicalcEngine _engine;
late String _result;
@override
void initState() {
super.initState();
_engine = VisicalcEngine();
_performCalculations();
}
void _performCalculations() {
// 设置初始单元格值
_engine.setCellValue("A1", "5");
_engine.setCellValue("B1", "3");
// 执行公式计算
_engine.setCellValue("C1", "=A1+B1");
// 获取计算结果
String? result = _engine.getCellValue("C1");
setState(() {
_result = result ?? "Error";
});
}
@override
Widget build(BuildContext context) {
return Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text("Result of A1 + B1:"),
Text(
_result,
style: TextStyle(fontSize: 24),
),
],
);
}
}
4. 运行应用
确保你已经正确配置了Flutter开发环境,然后运行你的应用:
flutter run
解释
- 添加依赖:在
pubspec.yaml
中添加visicalc_engine
依赖。 - 导入插件:在Dart文件中导入
visicalc_engine
包。 - 初始化引擎:在
initState
方法中初始化VisicalcEngine
实例。 - 设置单元格值:使用
setCellValue
方法设置初始单元格值。 - 执行公式:使用
setCellValue
方法设置包含公式的单元格。 - 获取结果:使用
getCellValue
方法获取计算结果并更新UI。
这个示例展示了如何使用visicalc_engine
插件在Flutter应用中执行基本的电子表格计算。根据你的需求,你可以扩展这个示例来处理更复杂的电子表格计算。