/// <summary> /// HDH 20180910 数据导出处理,通过传输的字段集导出EXCEL字段 /// </summary> /// <param name="Dt">要导出的数据的DATATABLE</param> /// <param name="FieldsName">导出的字段名要与DATATABLE中的列名一致</param> public static MemoryStream outDataExoprtExcel(DataTable Dt, string FieldsName) { HSSFWorkbook workbook = new HSSFWorkbook(); // 工作簿HSSFWorkbook ISheet sheet = workbook.CreateSheet(DateTime.Now.ToString("yyyyMMdd")); // 工作表 //HSSFCellStyle unLockCellStyle = (HSSFCellStyle)workbook.CreateCellStyle(); //unLockCellStyle.IsLocked = true; IRow row = sheet.CreateRow(0); int RowNo = 1; row.CreateCell(0).SetCellValue("编号"); for (int i = 0; i < FieldsName.Split(',').Length; i++) { row.CreateCell(i + 1).SetCellValue(FieldsName.Split(',')[i]); } if (Dt.Rows.Count > 0) { foreach (DataRow Dr in Dt.Rows) { IRow SheedRow = sheet.CreateRow(RowNo); SheedRow.CreateCell(0).SetCellValue(RowNo.ToString()); //SheedRow.CreateCell(0).CellStyle.IsLocked = false; for (int i = 0; i < FieldsName.Split(',').Length; i++) { SheedRow.CreateCell(i + 1).CellStyle.IsLocked = false; if (Dr[FieldsName.Split(',')[i]].ToString().IndexOf("Content/") > -1) { SheedRow.Height = 1800; sheet.SetColumnWidth(i + 1, 1600); string imgPath = DrvGetAppVar("DirectName") + Dr[FieldsName.Split(',')[i]].ToString(); imgPath = HttpContext.Current.Server.MapPath(imgPath.Replace("//", "/")); AddPicToExcel(sheet, workbook, imgPath, RowNo, i + 1,row); } else { SheedRow.CreateCell(i + 1).SetCellValue(Dr[FieldsName.Split(',')[i]].ToString()); } } RowNo++; } } MemoryStream stream = new MemoryStream(); workbook.Write(stream); return stream; } #region 向EXCEL插入图片 /// <summary> /// 向EXCEL插入图片 /// </summary> /// <param name="sheet">ISheet对象</param> /// <param name="workbook">HSSFWorkbook对象</param> /// <param name="fileurl">图片绝对路径</param> /// <param name="row">列值</param> /// <param name="col">行值</param> /// <param name="SheedRow">操作列</param> public static void AddPicToExcel(ISheet sheet, HSSFWorkbook workbook, string fileurl, int row, int col, IRow SheedRow) { try { //add picture data to this workbook. string FileName = fileurl; byte[] bytes = System.IO.File.ReadAllBytes(FileName); //sheet.SetColumnWidth(row, 2900); //SheedRow.Height = 1600; if (!string.IsNullOrEmpty(FileName)) { int pictureIdx = workbook.AddPicture(bytes, NPOI.SS.UserModel.PictureType.JPEG); HSSFPatriarch patriarch = (HSSFPatriarch)sheet.CreateDrawingPatriarch(); HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 100, 50, col, row, col + 1, row + 1); //##处理照片位置,【图片左上角为(col, row)第row+1行col+1列,右下角为( col +1, row +1)第 col +1+1行row +1+1列,宽为100,高为50 HSSFPicture pict = (HSSFPicture)patriarch.CreatePicture(anchor, pictureIdx); // pict.Resize();这句话一定不要,这是用图片原始大小来显示 } } catch (Exception ex) { //throw ex; } } #endregion
查看更多关于NPOI组件导出EXCEL文档源码HSSFWorkbook实例带图片导出的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did145