#region 数据导出公用方法 /// <summary> /// 插件:NPOI【可选字段导出】 /// </summary> /// <param name="t">导出数据</param> /// <returns></returns> public static MemoryStream ImportFileR(DataTable t) { MemoryStream stream = new MemoryStream(); if (t != null && t.Rows.Count > 0) { XSSFWorkbook workbook = new XSSFWorkbook(); ISheet sheet = workbook.CreateSheet(); IRow headerRow = sheet.CreateRow(0); foreach (DataColumn column in t.Columns) headerRow.CreateCell(column.Ordinal).SetCellValue(column.Caption); int rowIndex = 1; foreach (DataRow row in t.Rows) { IRow dataRow = sheet.CreateRow(rowIndex); foreach (DataColumn column in t.Columns) { if (row[column].ToString().IndexOf("Content/") > -1) { MsgInsetImg(sheet, dataRow, t.Rows.IndexOf(row) + 1, workbook, row[column].ToString().Replace("/Content/", "Content/"), t.Columns.IndexOf(column), System.Web.HttpContext.Current.Server.MapPath("/")); } else { dataRow.CreateCell(column.Ordinal).SetCellValue(row[column].ToString()); } } rowIndex++; } workbook.Write(stream); } return stream; } public static void MsgInsetImg(ISheet sheet, IRow row1, int i, XSSFWorkbook xssfworkbook, string ImgUrl, int colnum, string MapPath) { //设置图片那的宽高 sheet.SetColumnWidth(colnum, 2900); row1.Height = 1600; var dPath = MapPath + ImgUrl; try { System.Drawing.Image imgOutput = System.Drawing.Bitmap.FromFile(dPath); System.Drawing.Image img = imgOutput.GetThumbnailImage(80, 100, null, IntPtr.Zero); //图片转换为文件流 MemoryStream ms = new MemoryStream(); img.Save(ms, ImageFormat.Bmp); BinaryReader br = new BinaryReader(ms); var picBytes = ms.ToArray(); ms.Close(); //插入图片 if (picBytes != null && picBytes.Length > 0) { var rows = i; var cols = colnum; /* Add Picture to Workbook, Specify picture type as PNG and Get an Index */ int pictureIdx = xssfworkbook.AddPicture(picBytes, NPOI.SS.UserModel.PictureType.PNG); //添加图片 /* Create the drawing container */ XSSFDrawing drawing = (XSSFDrawing)sheet.CreateDrawingPatriarch(); /* Create an anchor point */ XSSFClientAnchor anchor = new XSSFClientAnchor(0, 0, 0, 0, cols, rows, 1, 3); /* Invoke createPicture and pass the anchor point and ID */ XSSFPicture picture = (XSSFPicture)drawing.CreatePicture(anchor, pictureIdx); /* Call resize method, which resizes the image */ picture.Resize(); picBytes = null; } } catch (Exception ex) { row1.CreateCell(colnum).SetCellValue("图片导出失败"); } }
查看更多关于NPOI组件导出EXCEL文档源码XSSFWorkbook实例带图片导出的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did146