好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

NPOI组件导出EXCEL文档源码HSSFWorkbook实例带图片导出

        /// <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实例带图片导出的详细内容...

  阅读:15133次