Knowledge base Drupal Data and documents
Excel Online Data Integration
Read and write spreadsheet data via Microsoft Graph API with inline data editors embedded in Drupal pages and scheduled exports.
Published 10 February 2024
Overview
Excel Online integration for Drupal bridges the gap between structured spreadsheet data and your content management system. This powerful solution enables real-time data synchronization, embedded spreadsheet editors, and automated reporting workflows using Microsoft Graph API.
Features
- Read and write Excel data via Graph API
- Inline spreadsheet editor embedded in Drupal
- Automated data import and export
- Scheduled exports for reporting
- Cell-level data validation
- Formula preservation and calculation
- Multiple worksheet support
- Excel template management
Technical Details
Technologies: Microsoft Graph API, Excel Online API, Drupal Field API, Drupal Entity API, Drupal Cron, JavaScript Office.js
Requirements:
- Drupal 9.x or 10.x
- Microsoft 365 with Excel Online
- Azure AD app with Files.ReadWrite permission
- OneDrive or SharePoint for file storage
- Modern browser with JavaScript enabled
API Endpoints:
Get worksheet: GET /me/drive/items/{item-id}/workbook/worksheets/{sheet-name}
Get range: GET /me/drive/items/{item-id}/workbook/worksheets/{sheet-name}/range(address='{range}')
Update range: PATCH /me/drive/items/{item-id}/workbook/worksheets/{sheet-name}/range(address='{range}')
Add table: POST /me/drive/items/{item-id}/workbook/tables/add
Implementation
- Configure Azure AD app with Excel API permissions
- Create custom field type for Excel data
- Implement Graph API client for Excel operations
- Build inline editor widget with Office.js
- Create import/export service
- Set up scheduled cron jobs for exports
- Implement data validation and transformation
- Add template management system
- Configure range mapping for data sync
- Build admin UI for Excel file selection
<?php
// Example: Excel data import service
namespace Drupal\excel_integration\Service;
use Microsoft\Graph\Graph;
use Microsoft\Graph\Model;
class ExcelDataImporter {
protected $graphClient;
public function __construct($graph_client) {
$this->graphClient = $graph_client;
}
public function importRange($file_id, $sheet_name, $range) {
try {
// Get range data from Excel
$endpoint = "/me/drive/items/{$file_id}/workbook/worksheets/{$sheet_name}/range(address='{$range}')";
$response = $this->graphClient->createRequest('GET', $endpoint)
->setReturnType(Model\WorkbookRange::class)
->execute();
// Transform Excel data to Drupal entities
$values = $response->getValues();
$entities = [];
// Skip header row
for ($i = 1; $i < count($values); $i++) {
$row = $values[$i];
$entity = \Drupal::entityTypeManager()
->getStorage('node')
->create([
'type' => 'imported_data',
'title' => $row[0],
'field_value_1' => $row[1],
'field_value_2' => $row[2],
'field_value_3' => $row[3],
]);
$entity->save();
$entities[] = $entity;
}
\Drupal::logger('excel_integration')->info(
'Imported @count rows from Excel',
['@count' => count($entities)]
);
return $entities;
} catch (\Exception $e) {
\Drupal::logger('excel_integration')->error(
'Excel import failed: @message',
['@message' => $e->getMessage()]
);
throw $e;
}
}
public function exportToExcel($entities, $file_id, $sheet_name, $start_cell = 'A2') {
$data = [];
foreach ($entities as $entity) {
$data[] = [
$entity->label(),
$entity->get('field_value_1')->value,
$entity->get('field_value_2')->value,
$entity->get('field_value_3')->value,
];
}
// Update Excel range
$endpoint = "/me/drive/items/{$file_id}/workbook/worksheets/{$sheet_name}/range(address='{$start_cell}')";
$this->graphClient->createRequest('PATCH', $endpoint)
->attachBody(['values' => $data])
->execute();
return count($data);
}
}
Use Cases
- Financial data reporting and dashboards
- Product inventory management
- Survey data collection and analysis
- Budget tracking and forecasting
- Data migration and bulk updates
Benefits
- Leverage Excel’s powerful calculation engine
- Familiar spreadsheet interface for users
- Real-time data synchronization
- Automated reporting workflows
- Reduced manual data entry errors
- Version control through OneDrive/SharePoint
- Collaborative editing with Office 365 users
Read next
-
Drupal · Data and documents
SharePoint List & Webhook Event Engine
Subscribe to SharePoint list changes with webhooks, trigger Drupal workflows or Power Automate flows, and enable two-way list editing.
-
Drupal · Data and documents
OneDrive for Drupal Asset Management
Implement automatic media uploads to OneDrive with version control, drag-and-drop UI in Drupal's media browser, and granular sharing settings.
-
Drupal · Data and documents
Drupal ↔ SharePoint Document Library Connector
Enable bi-directional file sync between Drupal and SharePoint via RESTful API with custom field widgets, Views integration, and secure file permissions.