1.首先下载包:ThoughtWorks.QRCode
2.新增二维码图片生成代码方法
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);
using (MemoryStream ms = new MemoryStream())
{
qrCodeImage.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
byte[] imageBytes = ms.ToArray();
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;
using (FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write))
{
workbook.Write(fs);
}
}
}
string qrCodeData = "二维码内容";
Bitmap qrCodeImage = Create_ImgCode(qrCodeData, 5);
using (MemoryStream ms = new MemoryStream())
{
qrCodeImage.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
byte[] imageBytes = ms.ToArray();
int pictureIndex = workbook.AddPicture(imageBytes, PictureType.PNG);
IDrawing drawing = sheet.CreateDrawingPatriarch();
IClientAnchor anchor = drawing.CreateAnchor(0, 0, 0, 0, 99, 99, 100, 100);
drawing.CreatePicture(anchor, pictureIndex).Resize();
}