Skip to content

Commit 411d2cc

Browse files
author
LokeshPalani
committed
Added the missed files in the office core
1 parent 19cfdd1 commit 411d2cc

File tree

5 files changed

+317
-0
lines changed

5 files changed

+317
-0
lines changed
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import 'dart:io';
2+
3+
import 'package:open_file/open_file.dart' as open_file;
4+
import 'package:path_provider/path_provider.dart' as path_provider;
5+
// ignore: depend_on_referenced_packages
6+
import 'package:path_provider_platform_interface/path_provider_platform_interface.dart';
7+
8+
///To save the Excel file in the device
9+
///To save the Excel file in the device
10+
Future<void> saveAndLaunchFile(List<int> bytes, String fileName) async {
11+
//Get the storage folder location using path_provider package.
12+
String? path;
13+
if (Platform.isAndroid ||
14+
Platform.isIOS ||
15+
Platform.isLinux ||
16+
Platform.isWindows) {
17+
final Directory directory =
18+
await path_provider.getApplicationSupportDirectory();
19+
path = directory.path;
20+
} else {
21+
path = await PathProviderPlatform.instance.getApplicationSupportPath();
22+
}
23+
final File file =
24+
File(Platform.isWindows ? '$path\\$fileName' : '$path/$fileName');
25+
await file.writeAsBytes(bytes, flush: true);
26+
if (Platform.isAndroid || Platform.isIOS) {
27+
//Launch the file (used open_file package)
28+
await open_file.OpenFile.open('$path/$fileName');
29+
} else if (Platform.isWindows) {
30+
await Process.run('start', <String>['$path\\$fileName'], runInShell: true);
31+
} else if (Platform.isMacOS) {
32+
await Process.run('open', <String>['$path/$fileName'], runInShell: true);
33+
} else if (Platform.isLinux) {
34+
await Process.run('xdg-open', <String>['$path/$fileName'],
35+
runInShell: true);
36+
}
37+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
///Dart imports
2+
import 'dart:async';
3+
import 'dart:convert';
4+
// ignore: avoid_web_libraries_in_flutter
5+
import 'dart:html';
6+
7+
///To save the Excel file in the device
8+
///To save the Excel file in the device
9+
Future<void> saveAndLaunchFile(List<int> bytes, String fileName) async {
10+
AnchorElement(
11+
href:
12+
'data:application/octet-stream;charset=utf-16le;base64,${base64.encode(bytes)}')
13+
..setAttribute('download', fileName)
14+
..click();
15+
}
Lines changed: 227 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,227 @@
1+
import 'package:flutter/material.dart';
2+
import 'package:syncfusion_flutter_xlsio/xlsio.dart' hide Column;
3+
4+
//Local imports
5+
import 'helper/save_file_mobile.dart'
6+
if (dart.library.html) 'helper/save_file_web.dart';
7+
8+
void main() {
9+
runApp(CreateExcelWidget());
10+
}
11+
12+
/// Represents the XlsIO widget class.
13+
class CreateExcelWidget extends StatelessWidget {
14+
@override
15+
Widget build(BuildContext context) {
16+
return const MaterialApp(
17+
home: CreateExcelStatefulWidget(title: 'Create Excel document'),
18+
);
19+
}
20+
}
21+
22+
/// Represents the XlsIO stateful widget class.
23+
class CreateExcelStatefulWidget extends StatefulWidget {
24+
/// Initalize the instance of the [CreateExcelStatefulWidget] class.
25+
const CreateExcelStatefulWidget({Key? key, required this.title})
26+
: super(key: key);
27+
28+
/// title.
29+
final String title;
30+
@override
31+
// ignore: library_private_types_in_public_api
32+
_CreateExcelState createState() => _CreateExcelState();
33+
}
34+
35+
class _CreateExcelState extends State<CreateExcelStatefulWidget> {
36+
@override
37+
Widget build(BuildContext context) {
38+
return Scaffold(
39+
appBar: AppBar(
40+
title: Text(widget.title),
41+
),
42+
body: Center(
43+
child: Column(
44+
mainAxisAlignment: MainAxisAlignment.center,
45+
children: <Widget>[
46+
TextButton(
47+
style: TextButton.styleFrom(
48+
foregroundColor: Colors.white,
49+
backgroundColor: Colors.lightBlue,
50+
disabledForegroundColor: Colors.grey,
51+
),
52+
onPressed: generateExcel,
53+
child: const Text('Generate Excel'),
54+
)
55+
],
56+
),
57+
),
58+
);
59+
}
60+
61+
Future<void> generateExcel() async {
62+
//Create a Excel document.
63+
64+
//Creating a workbook.
65+
final Workbook workbook = Workbook();
66+
//Accessing via index
67+
final Worksheet sheet = workbook.worksheets[0];
68+
sheet.showGridlines = false;
69+
70+
// Enable calculation for worksheet.
71+
sheet.enableSheetCalculations();
72+
73+
//Set data in the worksheet.
74+
sheet.getRangeByName('A1').columnWidth = 4.82;
75+
sheet.getRangeByName('B1:C1').columnWidth = 13.82;
76+
sheet.getRangeByName('D1').columnWidth = 13.20;
77+
sheet.getRangeByName('E1').columnWidth = 7.50;
78+
sheet.getRangeByName('F1').columnWidth = 9.73;
79+
sheet.getRangeByName('G1').columnWidth = 8.82;
80+
sheet.getRangeByName('H1').columnWidth = 4.46;
81+
82+
sheet.getRangeByName('A1:H1').cellStyle.backColor = '#333F4F';
83+
sheet.getRangeByName('A1:H1').merge();
84+
sheet.getRangeByName('B4:D6').merge();
85+
86+
sheet.getRangeByName('B4').setText('Invoice');
87+
sheet.getRangeByName('B4').cellStyle.fontSize = 32;
88+
89+
sheet.getRangeByName('B8').setText('BILL TO:');
90+
sheet.getRangeByName('B8').cellStyle.fontSize = 9;
91+
sheet.getRangeByName('B8').cellStyle.bold = true;
92+
93+
sheet.getRangeByName('B9').setText('Abraham Swearegin');
94+
sheet.getRangeByName('B9').cellStyle.fontSize = 12;
95+
96+
sheet
97+
.getRangeByName('B10')
98+
.setText('United States, California, San Mateo,');
99+
sheet.getRangeByName('B10').cellStyle.fontSize = 9;
100+
101+
sheet.getRangeByName('B11').setText('9920 BridgePointe Parkway,');
102+
sheet.getRangeByName('B11').cellStyle.fontSize = 9;
103+
104+
sheet.getRangeByName('B12').setNumber(9365550136);
105+
sheet.getRangeByName('B12').cellStyle.fontSize = 9;
106+
sheet.getRangeByName('B12').cellStyle.hAlign = HAlignType.left;
107+
108+
final Range range1 = sheet.getRangeByName('F8:G8');
109+
final Range range2 = sheet.getRangeByName('F9:G9');
110+
final Range range3 = sheet.getRangeByName('F10:G10');
111+
final Range range4 = sheet.getRangeByName('F11:G11');
112+
final Range range5 = sheet.getRangeByName('F12:G12');
113+
114+
range1.merge();
115+
range2.merge();
116+
range3.merge();
117+
range4.merge();
118+
range5.merge();
119+
120+
sheet.getRangeByName('F8').setText('INVOICE#');
121+
range1.cellStyle.fontSize = 8;
122+
range1.cellStyle.bold = true;
123+
range1.cellStyle.hAlign = HAlignType.right;
124+
125+
sheet.getRangeByName('F9').setNumber(2058557939);
126+
range2.cellStyle.fontSize = 9;
127+
range2.cellStyle.hAlign = HAlignType.right;
128+
129+
sheet.getRangeByName('F10').setText('DATE');
130+
range3.cellStyle.fontSize = 8;
131+
range3.cellStyle.bold = true;
132+
range3.cellStyle.hAlign = HAlignType.right;
133+
134+
sheet.getRangeByName('F11').dateTime = DateTime(2020, 08, 31);
135+
sheet.getRangeByName('F11').numberFormat =
136+
r'[$-x-sysdate]dddd, mmmm dd, yyyy';
137+
range4.cellStyle.fontSize = 9;
138+
range4.cellStyle.hAlign = HAlignType.right;
139+
140+
range5.cellStyle.fontSize = 8;
141+
range5.cellStyle.bold = true;
142+
range5.cellStyle.hAlign = HAlignType.right;
143+
144+
final Range range6 = sheet.getRangeByName('B15:G15');
145+
range6.cellStyle.fontSize = 10;
146+
range6.cellStyle.bold = true;
147+
148+
sheet.getRangeByIndex(15, 2).setText('Code');
149+
sheet.getRangeByIndex(16, 2).setText('CA-1098');
150+
sheet.getRangeByIndex(17, 2).setText('LJ-0192');
151+
sheet.getRangeByIndex(18, 2).setText('So-B909-M');
152+
sheet.getRangeByIndex(19, 2).setText('FK-5136');
153+
sheet.getRangeByIndex(20, 2).setText('HL-U509');
154+
155+
sheet.getRangeByIndex(15, 3).setText('Description');
156+
sheet.getRangeByIndex(16, 3).setText('AWC Logo Cap');
157+
sheet.getRangeByIndex(17, 3).setText('Long-Sleeve Logo Jersey, M');
158+
sheet.getRangeByIndex(18, 3).setText('Mountain Bike Socks, M');
159+
sheet.getRangeByIndex(19, 3).setText('ML Fork');
160+
sheet.getRangeByIndex(20, 3).setText('Sports-100 Helmet, Black');
161+
162+
sheet.getRangeByIndex(15, 3, 15, 4).merge();
163+
sheet.getRangeByIndex(16, 3, 16, 4).merge();
164+
sheet.getRangeByIndex(17, 3, 17, 4).merge();
165+
sheet.getRangeByIndex(18, 3, 18, 4).merge();
166+
sheet.getRangeByIndex(19, 3, 19, 4).merge();
167+
sheet.getRangeByIndex(20, 3, 20, 4).merge();
168+
169+
sheet.getRangeByIndex(15, 5).setText('Quantity');
170+
sheet.getRangeByIndex(16, 5).setNumber(2);
171+
sheet.getRangeByIndex(17, 5).setNumber(3);
172+
sheet.getRangeByIndex(18, 5).setNumber(2);
173+
sheet.getRangeByIndex(19, 5).setNumber(6);
174+
sheet.getRangeByIndex(20, 5).setNumber(1);
175+
176+
sheet.getRangeByIndex(15, 6).setText('Price');
177+
sheet.getRangeByIndex(16, 6).setNumber(8.99);
178+
sheet.getRangeByIndex(17, 6).setNumber(49.99);
179+
sheet.getRangeByIndex(18, 6).setNumber(9.50);
180+
sheet.getRangeByIndex(19, 6).setNumber(175.49);
181+
sheet.getRangeByIndex(20, 6).setNumber(34.99);
182+
183+
sheet.getRangeByIndex(15, 7).setText('Total');
184+
sheet.getRangeByIndex(16, 7).setFormula('=E16*F16+(E16*F16)');
185+
sheet.getRangeByIndex(17, 7).setFormula('=E17*F17+(E17*F17)');
186+
sheet.getRangeByIndex(18, 7).setFormula('=E18*F18+(E18*F18)');
187+
sheet.getRangeByIndex(19, 7).setFormula('=E19*F19+(E19*F19)');
188+
sheet.getRangeByIndex(20, 7).setFormula('=E20*F20+(E20*F20)');
189+
sheet.getRangeByIndex(15, 6, 20, 7).numberFormat = r'$#,##0.00';
190+
191+
sheet.getRangeByName('E15:G15').cellStyle.hAlign = HAlignType.right;
192+
sheet.getRangeByName('B15:G15').cellStyle.fontSize = 10;
193+
sheet.getRangeByName('B15:G15').cellStyle.bold = true;
194+
sheet.getRangeByName('B16:G20').cellStyle.fontSize = 9;
195+
196+
sheet.getRangeByName('E22:G22').merge();
197+
sheet.getRangeByName('E22:G22').cellStyle.hAlign = HAlignType.right;
198+
sheet.getRangeByName('E23:G24').merge();
199+
200+
final Range range7 = sheet.getRangeByName('E22');
201+
final Range range8 = sheet.getRangeByName('E23');
202+
range7.setText('TOTAL');
203+
range7.cellStyle.fontSize = 8;
204+
range8.setFormula('=SUM(G16:G20)');
205+
range8.numberFormat = r'$#,##0.00';
206+
range8.cellStyle.fontSize = 24;
207+
range8.cellStyle.hAlign = HAlignType.right;
208+
range8.cellStyle.bold = true;
209+
210+
sheet.getRangeByIndex(26, 1).text =
211+
'800 Interchange Blvd, Suite 2501, Austin, TX 78721 | support@adventure-works.com';
212+
sheet.getRangeByIndex(26, 1).cellStyle.fontSize = 8;
213+
214+
final Range range9 = sheet.getRangeByName('A26:H27');
215+
range9.cellStyle.backColor = '#ACB9CA';
216+
range9.merge();
217+
range9.cellStyle.hAlign = HAlignType.center;
218+
range9.cellStyle.vAlign = VAlignType.center;
219+
220+
//Save and launch the excel.
221+
final List<int> bytes = workbook.saveAsStream();
222+
//Dispose the document.
223+
workbook.dispose();
224+
225+
await saveAndLaunchFile(bytes, 'Invoice.xlsx');
226+
}
227+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
library officecore;
2+
3+
export 'src/built_in_properties.dart' show BuiltInProperties;
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
///Represent the document properties in a MS Excel Document.
2+
class BuiltInProperties {
3+
/// Gets or Sets author of the document.
4+
String? author;
5+
6+
/// Gets or Sets comments of the document.
7+
String? comments;
8+
9+
/// Gets or Sets category of the document.
10+
String? category;
11+
12+
/// Gets or Sets company of the document.
13+
String? company;
14+
15+
/// Gets or Sets manager of the document.
16+
String? manager;
17+
18+
/// Gets or Sets subject of the document.
19+
String? subject;
20+
21+
/// Gets or Sets title of the document.
22+
String? title;
23+
24+
/// Gets or Sets creation date of the document.
25+
DateTime? createdDate = DateTime.now();
26+
27+
/// Gets or Sets modified date of the document.
28+
DateTime? modifiedDate = DateTime.now();
29+
30+
/// Gets or Sets tags of the document.
31+
String? tags;
32+
33+
/// Gets or Sets status of the document.
34+
String? status;
35+
}

0 commit comments

Comments
 (0)