C# excal表格中插入二维码

1.首先下载包:ThoughtWorks.QRCode

2.新增二维码图片生成代码方法

/// <summary>
/// 生成二维码图片
/// </summary>
/// <param name="codeNumber">要生成二维码的字符串</param>    
/// <param name="size">大小尺寸</param>
/// <returns>二维码图片</returns>
public Bitmap Create_ImgCode(string codeNumber, int size)
{
    //创建二维码生成类
    QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();
    //设置编码模式
    qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;
    //设置编码测量度
    qrCodeEncoder.QRCodeScale = size;
    //设置编码版本
    qrCodeEncoder.QRCodeVersion = 0;
    //设置编码错误纠正
    qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;
    //生成二维码图片
    System.Drawing.Bitmap image = qrCodeEncoder.Encode(codeNumber);
    return image;
}

3.将二维码插入表格中

//加入到新文件中
public void InsertQRCodeToExcel(string codeNumber, int size, string filePath)
{
    // 创建二维码
    Bitmap qrCodeImage = Create_ImgCode(codeNumber, size);

    // 将Bitmap转换为流
    using (MemoryStream ms = new MemoryStream())
    {
        qrCodeImage.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
        byte[] imageBytes = ms.ToArray();

        // 创建Excel工作簿
        IWorkbook workbook = new XSSFWorkbook();
        ISheet sheet = workbook.CreateSheet("Sheet1");

        // 创建一个单元格样式并设置垂直居中
        ICellStyle style = workbook.CreateCellStyle();
        style.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;
        style.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;

        // 在指定位置插入图片
        int pictureIndex = workbook.AddPicture(imageBytes, PictureType.PNG);
        ICreationHelper helper = workbook.GetCreationHelper();
        IDrawing drawing = sheet.CreateDrawingPatriarch();

        // 设置插入图片的位置
        IPicture picture = drawing.CreatePicture(new XSSFClientAnchor(0, 0, 0, 0, (short)0, 0, (short)1, 1), pictureIndex);
        picture.Resize(); // 调整大小

        // 创建单元格并设置样式
        IRow row = sheet.CreateRow(0); // 设定行号
        ICell cell = row.CreateCell(0); // 设定列号
        cell.SetCellValue("二维码");
        cell.CellStyle = style;

        // 保存Excel文件
        using (FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write))
        {
            workbook.Write(fs);
        }
    }
}
//插入到已经打开文件100行100列下中部分代码
// 生成二维码
// 生成二维码
        string qrCodeData = "二维码内容"; // 这里替换为你需要生成二维码的内容
        Bitmap qrCodeImage = Create_ImgCode(qrCodeData, 5); // 生成二维码

        // 将Bitmap转换为流
        using (MemoryStream ms = new MemoryStream())
        {
            qrCodeImage.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
            byte[] imageBytes = ms.ToArray();

            // 插入二维码到指定位置(100行100列)
            int pictureIndex = workbook.AddPicture(imageBytes, PictureType.PNG);
            IDrawing drawing = sheet.CreateDrawingPatriarch();
            IClientAnchor anchor = drawing.CreateAnchor(0, 0, 0, 0, 99, 99, 100, 100); // 100行100列
            drawing.CreatePicture(anchor, pictureIndex).Resize(); // 调整图片大小
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值