NPOI Excel用OLE对象的形式插入文件附件以及插入图片
static void Main(string[] args)
{XlsWithObjData();Console.WriteLine("输出完成");
}static void XlsWithObjData()
{// 创建工作簿和单元格,只有HSSFWorkbook,XSSFWorkbook不可以HSSFWorkbook workbook = new HSSFWorkbook();HSSFSheet sheet = (HSSFSheet)workbook.CreateSheet("Sheet1");IRow row = sheet.CreateRow(0);ICell cell = row.CreateCell(0);// 读取ZIP文件为字节数组byte[] zipData = File.ReadAllBytes("001.pdf");var imgData = File.ReadAllBytes("001.png");var iconid = workbook.AddPicture(imgData, PictureType.PNG);var pdfIdx = workbook.AddOlePackage(zipData, "222.pdf", "333.pdf", "111.pdf");HSSFPatriarch drawing = (HSSFPatriarch)sheet.CreateDrawingPatriarch();HSSFClientAnchor anchor = (HSSFClientAnchor)drawing.CreateAnchor(0, 0, 0, 0, 1, 1, 0, 0);anchor.AnchorType = AnchorType.MoveAndResize;drawing.CreateObjectData(anchor, pdfIdx, iconid);// 保存文件var fileName = DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss") + ".xls";FileStream fs = new FileStream(fileName, FileMode.Create);workbook.Write(fs);fs.Close();workbook.Close();
}
//插入图片
static void InsertImg()
{//创建工作簿HSSFWorkbook wk = new HSSFWorkbook();ISheet sheet = wk.CreateSheet("sheet1");//sheet.SetColumnWidth(0, 1);//sheet.AutoSizeColumn(0);//添加内容IRow row = sheet.CreateRow(0);ICell cell = row.CreateCell(0);HSSFRichTextString rich = new HSSFRichTextString("签名:");cell.SetCellValue(rich);//添加图片byte[] bytes = System.IO.File.ReadAllBytes("001.png");int pictureIdx = wk.AddPicture(bytes, PictureType.PNG);HSSFPatriarch patriarch = (HSSFPatriarch)sheet.CreateDrawingPatriarch();//HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 1023, 0, 0, 0, 1, 3);HSSFClientAnchor anchor = new HSSFClientAnchor(223, 0, 0, 0, 0, 0, 1, 1);//设置图片变换类型anchor.AnchorType = AnchorType.MoveDontResize;HSSFPicture pict = (HSSFPicture)patriarch.CreatePicture(anchor, pictureIdx);//pict.Resize(100,50);//保存到文件var fileName = DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss") +"图片"+ ".xls";FileStream fs = new FileStream(fileName, FileMode.Create);wk.Write(fs);fs.Close();wk.Close();Console.WriteLine("导出数据成功!");
}
参考
https://blog.csdn.net/m0_72440880/article/details/137240571