A comprehensive financial data analysis platform built with React TypeScript frontend and ASP.NET Core backend, featuring advanced pivot table functionality and native Excel export capabilities powered by Syncfusion components.
- Server-side Processing: Handle 10,000+ records with optimal performance
- Drag-and-Drop Interface: Intuitive field arrangement and data exploration
- Real-time Aggregation: Dynamic calculations (sum, average, count, etc.)
- Advanced Filtering: Multi-level filtering with conditional formatting
- Drill-Through Capability: Deep-dive into specific data points
- Integrated Charts: Column, bar, and other chart types within pivot view
- Dual View Mode: Switch between grid and chart representations
- Interactive Grouping Bar: Visual field management interface
- Field List Panel: Complete field configuration sidebar
- Native Excel Pivot Export: Preserve full interactivity in Excel files
- PDF Export: Professional reporting with custom formatting
- CSV Export: Standard data export for compatibility
- Export Status Tracking: Real-time export progress indicators
- Virtualization: Smooth performance with large datasets
- Memory Caching: Server-side data caching for enhanced speed
- Responsive Design: Mobile-friendly dashboard interface
- Loading States: Professional loading animations and status updates
- React 19.1.1 with TypeScript
- Syncfusion PivotView 30.2.4 - Advanced pivot table component
- Vite - Fast development and build tool
- ESLint - Code quality and consistency
- .NET 9.0 with C#
- Syncfusion Pivot Engine 30.1.42 - Server-side data processing
- Memory Caching - Performance optimization
- CORS Configuration - Cross-origin resource sharing
PivotViewComponent- Main pivot table interfacePivotEngine<T>- Server-side data processing enginePivotExportEngine<T>- Native Excel pivot export functionalityExcelExport- Standard export capabilities
📦 Analytics Dashboard
├── 📂 react-pivot-excel-export/ # React TypeScript Frontend
│ ├── 📂 src/
│ │ ├── 📄 App.tsx # Main dashboard component
│ │ ├── 📄 App.css # Dashboard styling
│ │ ├── 📄 main.tsx # Application entry point
│ │ └── 📄 index.css # Global styles
│ ├── 📄 package.json # Frontend dependencies
│ ├── 📄 vite.config.ts # Vite configuration
│ └── 📄 tsconfig.json # TypeScript configuration
├── 📂 PivotExportAPI/ # ASP.NET Core Backend
│ ├── 📂 Controllers/
│ │ └── 📄 PivotController.cs # Main API controller
│ ├── 📄 Program.cs # Server configuration
│ ├── 📄 PivotExportAPI.csproj # Backend dependencies
│ └── 📂 Properties/
│ └── 📄 launchSettings.json # Development settings
└── 📄 README.md # This file
- Node.js (v18+ recommended)
- .NET 9.0 SDK
- Syncfusion License (Community or Commercial)
git clone <repository-url>
cd financial-analytics-dashboardcd PivotExportAPI
dotnet restore
dotnet run🌐 API will be available at: http://localhost:5276
cd react-pivot-excel-export
npm install
npm run dev🌐 Frontend will be available at: http://localhost:5173
Add your Syncfusion license key to the React app:
import { registerLicense } from '@syncfusion/ej2-base';
registerLicense('YOUR-SYNCFUSION-LICENSE-KEY');The application uses a comprehensive SalesDataModel for analytics:
public class SalesDataModel
{
public string ProductID { get; set; } // Product identifier (PRO-10001 to PRO-11000)
public string Country { get; set; } // Geographic region (Canada, France, Australia, Germany)
public string Product { get; set; } // Product category (Car, Van, Bike, Flight, Bus)
public double Sold { get; set; } // Units sold (calculated metric)
public double Price { get; set; } // Price per unit (currency formatted)
public string Year { get; set; } // Fiscal year (FY 2015-2019)
}- 10,000 virtual records for comprehensive testing
- 5-year historical data (FY 2015-2019)
- Multi-region coverage (4 countries)
- Product diversification (5 categories)
- Realistic price ranges and sales volumes
- Brand Identity: Logo and application title
- Export Controls: Excel and PDF export buttons
- Status Indicators: Real-time export progress
- Interactive Grid: Sortable, filterable data table
- Grouping Bar: Drag-and-drop field management
- Field List: Comprehensive field configuration panel
- Toolbar: Advanced operations (save, load, format, etc.)
- Interactive Analysis: Drag-and-drop capabilities
- Advanced Filtering: Multi-criteria filtering options
- Real-time Data: Live synchronization indicators
- Export Options: Multiple format support
// CORS Configuration
builder.Services.AddCors(options =>
{
options.AddPolicy("ReactApp", builder =>
{
builder.WithOrigins("http://localhost:5173")
.AllowAnyMethod()
.AllowAnyHeader()
.WithExposedHeaders("Content-Disposition");
});
});
// Memory Caching
builder.Services.AddMemoryCache();const dataSourceSettings = {
url: 'http://localhost:5276/api/pivot/post',
mode: 'Server',
rows: [{ name: 'ProductID', caption: 'Product ID' }],
columns: [{ name: 'Year', caption: 'Production Year' }],
values: [{ name: 'Sold', caption: 'Units Sold' }],
formatSettings: [{ name: 'Price', format: 'C' }]
};const btnClick = (): void => {
if (pivotObj.current) {
// Exports data as interactive Excel PivotTable
(pivotObj.current as any).exportAsPivot();
}
};[Route("/api/pivot/post")]
[HttpPost]
public async Task<object> Post([FromBody] object args)
{
// Handle pivot operations server-side for optimal performance
if (param.Action == "onPivotExcelExport") {
return pivotExport.ExportAsPivot(ExportType.Excel, engine, param);
}
}- 60-minute cache expiration for optimal performance
- Hash-based caching for unique data sessions
- Automatic cache invalidation for data updates
- Modern Dashboard Layout with card-based design
- Responsive Grid System for all screen sizes
- Loading Animations with branded spinner
- Status Indicators with emoji-based feedback
- Keyboard Navigation support
- Screen Reader compatibility
- High Contrast mode support
- Focus Management for interactive elements
- CORS Policy configuration for secure cross-origin requests
- Input Validation on all API endpoints
- Error Handling with sanitized error messages
- Memory Management with automatic cache cleanup
- Server-Side Processing for large datasets
- Virtualization for smooth UI rendering
- Memory Caching for repeated data requests
- Lazy Loading for component initialization
- Extend the
SalesDataModelclass - Update the
GetVirtualData()method - Modify
dataSourceSettingsin React component - Test with various data volumes
- Modify
PivotExportEngineconfigurations - Add new export actions in
PivotController - Update frontend export buttons
- Test export functionality
- Add new Syncfusion services to
Injectarray - Configure component properties
- Update TypeScript interfaces
- Style with CSS modules
1. CORS Errors
- Verify backend is running on
http://localhost:5276 - Check CORS policy in
Program.cs - Ensure frontend uses correct API URL
2. Export Failures
- Confirm Syncfusion license is registered
- Check browser console for JavaScript errors
- Verify server logs for backend exceptions
3. Performance Issues
- Monitor memory cache usage
- Check data volume in
GetVirtualData() - Enable virtualization for large datasets
This project uses Syncfusion components which require a valid license:
- Community License: Free for qualifying organizations
- Commercial License: For commercial applications
Visit Syncfusion Licensing for more information.
- Real-time Data Streaming with SignalR
- Advanced Charting with custom visualizations
- User Authentication with role-based access
- Data Source Connectors (SQL, MongoDB, APIs)
- Custom Themes with brand customization
- Mobile App with React Native
- Automated Testing with Jest and Cypress
- Redis Caching for distributed scenarios
- Database Integration with Entity Framework
- API Rate Limiting for production deployment
- CDN Integration for static assets
For technical support and questions:
- Syncfusion Documentation: React PivotView Guide
- Community Forums: Syncfusion Community
- GitHub Issues: Report bugs and feature requests
- Email Support: Available with commercial license
Built with ❤️ using Syncfusion React Components
Transform your data into actionable insights with interactive analytics and seamless Excel integration.