1+ using Syncfusion . XlsIO ;
2+
3+ class Program
4+ {
5+ public static void Main ( )
6+ {
7+ using ( ExcelEngine excelEngine = new ExcelEngine ( ) )
8+ {
9+ IApplication application = excelEngine . Excel ;
10+ application . DefaultVersion = ExcelVersion . Xlsx ;
11+ IWorkbook workbook = application . Workbooks . Create ( 3 ) ;
12+ IWorksheet dataSheet = workbook . Worksheets [ 0 ] ;
13+ IWorksheet pivotSheet1 = workbook . Worksheets [ 1 ] ;
14+ IWorksheet pivotSheet2 = workbook . Worksheets [ 2 ] ;
15+
16+ //Add sample data
17+ dataSheet . Range [ "A1" ] . Text = "Product" ;
18+ dataSheet . Range [ "B1" ] . Text = "Sales" ;
19+ dataSheet . Range [ "C1" ] . Text = "Cost" ;
20+
21+ dataSheet . Range [ "A2" ] . Text = "Laptop" ;
22+ dataSheet . Range [ "B2" ] . Number = 5000 ;
23+ dataSheet . Range [ "C2" ] . Number = 3000 ;
24+
25+ dataSheet . Range [ "A3" ] . Text = "Tablet" ;
26+ dataSheet . Range [ "B3" ] . Number = 3000 ;
27+ dataSheet . Range [ "C3" ] . Number = 2000 ;
28+
29+ dataSheet . Range [ "A4" ] . Text = "Phone" ;
30+ dataSheet . Range [ "B4" ] . Number = 4000 ;
31+ dataSheet . Range [ "C4" ] . Number = 2500 ;
32+
33+ //CASE 1: Shared pivot cache — calculated field names must be unique
34+ IPivotCache sharedCache = workbook . PivotCaches . Add ( dataSheet [ "A1:C4" ] ) ;
35+
36+ IPivotTable pivot1 = pivotSheet1 . PivotTables . Add ( "Pivot1" , pivotSheet1 [ "A1" ] , sharedCache ) ;
37+ pivot1 . Fields [ 0 ] . Axis = PivotAxisTypes . Row ;
38+ pivot1 . DataFields . Add ( pivot1 . Fields [ 1 ] , "Total Sales" , PivotSubtotalTypes . Sum ) ;
39+ pivot1 . CalculatedFields . Add ( "Profit" , "Sales - Cost" ) ;
40+
41+ IPivotTable pivot2 = pivotSheet1 . PivotTables . Add ( "Pivot2" , pivotSheet1 [ "F1" ] , sharedCache ) ;
42+ pivot2 . Fields [ 0 ] . Axis = PivotAxisTypes . Row ;
43+ pivot2 . DataFields . Add ( pivot2 . Fields [ 2 ] , "Total Cost" , PivotSubtotalTypes . Sum ) ;
44+ pivot2 . CalculatedFields . Add ( "Margin" , "Sales - Cost" ) ;
45+
46+ //CASE 2: Separate pivot caches — identical or different calculated field names are allowed
47+ IPivotTable pivot3 = pivotSheet2 . PivotTables . Add ( "Pivot3" , pivotSheet2 [ "A1" ] ,
48+ workbook . PivotCaches . Add ( dataSheet [ "A1:C4" ] ) ) ;
49+ pivot3 . Fields [ 0 ] . Axis = PivotAxisTypes . Row ;
50+ pivot3 . DataFields . Add ( pivot3 . Fields [ 1 ] , "Total Sales" , PivotSubtotalTypes . Sum ) ;
51+ pivot3 . CalculatedFields . Add ( "Profit" , "Sales - Cost" ) ;
52+
53+ IPivotTable pivot4 = pivotSheet2 . PivotTables . Add ( "Pivot4" , pivotSheet2 [ "F1" ] ,
54+ workbook . PivotCaches . Add ( dataSheet [ "A1:C4" ] ) ) ;
55+ pivot4 . Fields [ 0 ] . Axis = PivotAxisTypes . Row ;
56+ pivot4 . DataFields . Add ( pivot4 . Fields [ 2 ] , "Total Cost" , PivotSubtotalTypes . Sum ) ;
57+ pivot4 . CalculatedFields . Add ( "Profit" , "Sales - Cost" ) ;
58+
59+ //Saving the workbook
60+ workbook . SaveAs ( Path . GetFullPath ( @"Output/Output.xlsx" ) ) ;
61+ }
62+ }
63+ }
0 commit comments