一、定义工作簿book
HSSFWorkbook excelBook = new HSSFWorkbook();
二、定义样式
ICellStyle styleCenterHt12 = excelBook.CreateCellStyle();//声明样式
styleCenterHt12.Alignment = HorizontalAlignment.Center;//水平居中
styleCenterHt12.VerticalAlignment = VerticalAlignment.Center;//垂直居中
styleCenterHt12.BorderBottom = BorderStyle.Thin;//下边框
styleCenterHt12.BorderLeft = BorderStyle.Thin;//左边框
styleCenterHt12.BorderRight = BorderStyle.Thin;//右边框
styleCenterHt12.BorderTop = BorderStyle.Thin;//上边框
三、定义工作表sheet并设置列宽
ISheet sheet1 = excelBook.CreateSheet("外协部件二维码");//设置工作表名称
sheet1.SetColumnWidth(0, (int)(30 * 20 * 2.44)); //excel单位 5 及 在excel中单位为1 则 公式为 6*20*2.44
sheet1.SetColumnWidth(1, (int)(115 * 20 * 2.44));
sheet1.SetColumnWidth(2, (int)(30 * 20 * 2.44));
sheet1.SetColumnWidth(3, (int)(60 * 20 * 2.44));
四、定义行
IRow row0 = sheet1.CreateRow(0);//在excel中行号为 1 的地方 创建一行
五、定义单元格
ICell cell0 = row0.CreateCell(0);//创建单元格
cell0.SetCellValue("单元格内容");//写入单元格内容
cell0.CellStyle = styleCenterHt12;//设置单元格样式
六、合并单元格
CellRangeAddress region = new CellRangeAddress(rowNo, rowNo, 1, 2);//合并单元格(第几行,到第几行,第几列,到第几列)
sheet1.AddMergedRegion(region);
((HSSFSheet)sheet1).SetEnclosedBorderOfRegion(region,BorderStyle.Thin,HSSFColor.Black.Index);
七、将工作簿写入文件流并返回
System.IO.MemoryStream bookStream = new System.IO.MemoryStream();
//将工作薄写入文件流
excelBook.Write(bookStream);
//输出之前调用Seek(偏移量,游标位置) 把0位置指定为开始位置
bookStream.Seek(0, System.IO.SeekOrigin.Begin);
//Stream对象,文件类型,文件名称
return bookStream;
八、生成二维码并将二维码写入excel
string strCode = "二维码内容";//定义二维码内容
QRCodeGenerator qrGenerator = new QRCoder.QRCodeGenerator();//创建二维码生成器类
QRCodeData qrCodeData = qrGenerator.CreateQrCode(strCode, QRCodeGenerator.ECCLevel.Q);//定义二维码数据及二维码级别
QRCode qrcode = new QRCode(qrCodeData);//创建二维码类
Bitmap qrCodeImage = qrcode.GetGraphic(1, Color.Black, Color.White, null, 15, 6, false);//通过二维码类生成bitmap图片
MemoryStream ms = new MemoryStream();//定义字节数组流,用于存放二维码图片内容
qrCodeImage.Save(ms, ImageFormat.Jpeg);//将二维码图片写入流中
int pictureIdx = excelBook.AddPicture(ms.ToArray(), PictureType.JPEG);//在excel中添加图片并返回索引
HSSFPatriarch patriarch = (HSSFPatriarch)sheet1.CreateDrawingPatriarch();//在excel中创建画笔
HSSFClientAnchor anchor = new HSSFClientAnchor(200, 50, 823, 245, 3, rowNo + 1, 3, rowNo + 1);//定义图片在excel单元格中的相对位置(x1,y1,x2,y2,col1,row1,col2,row2)
HSSFPicture pict = (HSSFPicture)patriarch.CreatePicture(anchor, pictureIdx);//显示图片
ms.Close();//关闭流
九、插入普通图片到excel中
byte[] bytes=System.IO.File.ReadAllBytes(@"D:\image.jpg");//读取图片为字节数组
int pictureIdx = excelBook.AddPicture(bytes, PictureType.JPEG);//在excel中添加图片并返回索引
HSSFPatriarch patriarch = (HSSFPatriarch)sheet1.CreateDrawingPatriarch();//在excel中创建画笔
HSSFClientAnchor anchor = new HSSFClientAnchor(200, 50, 823, 245, 3, rowNo + 1, 3, rowNo + 1);//定义图片在excel单元格中的相对位置(x1,y1,x2,y2,col1,row1,col2,row2)
HSSFPicture pict = (HSSFPicture)patriarch.CreatePicture(anchor, pictureIdx);//显示图片
ms.Close();//关闭流