feat: import FreePro accepte .xls, .xlsx et .csv

This commit is contained in:
Manus
2026-06-05 09:20:42 -04:00
parent 6224328331
commit a4c347e554
3 changed files with 14 additions and 7 deletions

View File

@@ -77,9 +77,16 @@ function getType(labelClient: string, script: string): string {
*/
export function processFreeproExcel(
buffer: Buffer,
moisLabel: string
moisLabel: string,
fileName?: string
): FreeproVentilationResult {
const wb = xlsx.read(buffer, { type: "buffer", cellDates: true });
// Détecter si c'est un CSV (par extension ou par détection du contenu)
const isCsv = fileName
? /\.csv$/i.test(fileName)
: !buffer[0] || (buffer[0] !== 0x50 && buffer[0] !== 0xD0); // PK = xlsx, D0CF = xls
const wb = isCsv
? xlsx.read(buffer.toString("utf8"), { type: "string", cellDates: true })
: xlsx.read(buffer, { type: "buffer", cellDates: true });
const ws = wb.Sheets[wb.SheetNames[0]];
const rawRows = xlsx.utils.sheet_to_json<Record<string, unknown>>(ws, {
header: [

View File

@@ -2218,7 +2218,7 @@ export const appRouter = router({
)
.mutation(async ({ input, ctx }) => {
const buffer = Buffer.from(input.fileBase64, "base64");
const result = processFreeproExcel(buffer, input.moisLabel);
const result = processFreeproExcel(buffer, input.moisLabel, input.fileName);
const importId = await createFreeproImport(
{