mirror of
https://github.com/cpvalente/ontime.git
synced 2026-08-18 05:34:09 +00:00
feat: export excel file
refactor: align id columns between export and import refactor: match column names with template
This commit is contained in:
committed by
Carlos Valente
parent
10762f10bf
commit
1d8c04d0b4
@@ -18,10 +18,15 @@ import { getProjectCustomFields } from '../rundown/rundown.dao.js';
|
||||
import { parseCustomFields } from '../custom-fields/customFields.parser.js';
|
||||
|
||||
import { parseExcel } from './excel.parser.js';
|
||||
import { rundownToTabular } from './excel.utils.js';
|
||||
|
||||
let excelData: WorkBook = xlsx.utils.book_new();
|
||||
|
||||
export async function saveExcelFile(filePath: string) {
|
||||
/**
|
||||
* Receives and parses an excel file
|
||||
* The file is deleted after being read
|
||||
*/
|
||||
export async function readExcelFile(filePath: string) {
|
||||
if (!existsSync(filePath)) {
|
||||
throw new Error('Upload of excel file failed');
|
||||
}
|
||||
@@ -33,6 +38,9 @@ export async function saveExcelFile(filePath: string) {
|
||||
await deleteFile(filePath);
|
||||
}
|
||||
|
||||
/**
|
||||
* List all worksheets in the current spreadsheet file
|
||||
*/
|
||||
export function listWorksheets(): string[] {
|
||||
return excelData.SheetNames;
|
||||
}
|
||||
@@ -60,3 +68,19 @@ export function generateRundownPreview(options: ImportMap): { rundown: Rundown;
|
||||
|
||||
return { rundown, customFields: parsedCustomFields };
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates an xlsx file from a given rundown and custom fields
|
||||
* @throws if the rundown is empty
|
||||
*/
|
||||
export function generateExcelFile(rundown: Rundown, customFields: CustomFields): Buffer {
|
||||
if (rundown.order.length === 0) {
|
||||
throw new Error('Cannot generate an Excel file from an empty rundown');
|
||||
}
|
||||
|
||||
const workbook = xlsx.utils.book_new();
|
||||
const worksheet = xlsx.utils.aoa_to_sheet(rundownToTabular(rundown, customFields));
|
||||
xlsx.utils.book_append_sheet(workbook, worksheet, rundown.title || 'Rundown');
|
||||
|
||||
return xlsx.write(workbook, { type: 'buffer', bookType: 'xlsx' });
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user