读取二维码作为缓冲区并保存在Excel

Read QR code as a buffer and save it in Excel

我正在使用以下代码生成二维码并将其保存在 Excel 文件中。我正在使用 qrcode and exceljs 库。 excel 文件已生成,但没有预期的二维码。

app.use('/api/qr/:content', async (req, res) => {
        try {
            const workbook = new ExcelJS.Workbook();
            const sheet = workbook.addWorksheet('Sheet 1');

            const content = req.params.content;
            const bufferImage = await QRCode.toDataURL(content, {
                type: 'image/png',
                width: 200,
            });
            const imageId2 = workbook.addImage({
                buffer: Buffer.from(bufferImage),
                extension: 'png'
            });

            sheet.addImage(imageId2, {
                tl: { col: 0, row: 0 },
                ext: { width: 200, height: 200 }
            });

            await workbook.xlsx.writeFile('ExcelFile.xlsx');
            return res.send({ data: 'ok' });
        } catch (err) {
            console.error('Failed to return content', err);
        }
    });

所以想法是在缓冲区中生成 QR 码并将其作为图像添加到 excel 文件中。

解决了。必须将二维码读取方法从 DataURL 更改为 toBuffer。

const content = req.params.content;
            const bufferImage = await QRCode.toBuffer(content, {
                type: 'png',
                errorCorrectionLevel: 'H',
            });

            const imageId2 = workbook.addImage({
                buffer: bufferImage,
                extension: 'png'
            });