feat: import FreePro accepte .xls, .xlsx et .csv
This commit is contained in:
@@ -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: [
|
||||
|
||||
@@ -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(
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user