1.导出Excle表格,表格内嵌套图片功能:

2.封装导出文件方法

public bool ExportExcel(DataTable dt, string notile,string title)
        {
            CreatePic cp = new CreatePic();
            //创建工作簿
            NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook();
            //创建表
            NPOI.SS.UserModel.ISheet sheet = book.CreateSheet(notile);
            //自适应列宽
            //  sheet.AutoSizeColumn(1, true);
            //标题行合并单元格
            sheet.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(0, 0, 0, dt.Columns.Count - 1));

NPOI.SS.UserModel.IRow firstrow = sheet.CreateRow(0);
            NPOI.SS.UserModel.ICell firstcell = firstrow.CreateCell(0);

//表名样式
            NPOI.SS.UserModel.ICellStyle styleHeader = book.CreateCellStyle();
            NPOI.SS.UserModel.IFont fontHeader = book.CreateFont();
            styleHeader.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Left;
            styleHeader.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;
            fontHeader.FontHeightInPoints = 15;

styleHeader.SetFont(fontHeader);
            firstcell.CellStyle = styleHeader;
            firstcell.SetCellValue(title);

try
            {
                //列名样式
                NPOI.SS.UserModel.ICellStyle styleColName = book.CreateCellStyle();
                NPOI.SS.UserModel.IFont fontColName = book.CreateFont();
                styleColName.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;
                styleColName.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;
                fontColName.FontHeightInPoints = 14;
                styleColName.SetFont(fontColName);

//数据的样式、字体大小
                NPOI.SS.UserModel.ICellStyle styleBody = book.CreateCellStyle();
                NPOI.SS.UserModel.IFont fontBody = book.CreateFont();

styleBody.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;
                styleBody.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;
                fontBody.FontHeightInPoints = 12;
                styleBody.SetFont(fontBody);

//创建具体单元格数据
                int rowCount = dt.Rows.Count;
                int colCount = dt.Columns.Count;

NPOI.SS.UserModel.IRow colNameRow = sheet.CreateRow(1);
                for (int x = 0; x < colCount; x++)
                { //将列名写入单元格
                    NPOI.SS.UserModel.ICell colNameCell = colNameRow.CreateCell(x);
                    colNameCell.SetCellValue(dt.Columns[x].ColumnName);
                    colNameCell.CellStyle = styleColName;
                }

for (int i = 0; i < rowCount; i++)
                {
                    NPOI.SS.UserModel.IRow row = sheet.CreateRow(i + 2);//数据从第三行开始 第一行表名 第二行列名

for (int j = 0; j < colCount; j++)
                    {
                        //填充数据
                        NPOI.SS.UserModel.ICell cell = row.CreateCell(j);

if (dt.Rows[i][j] != null)
                        {
                            cell.SetCellValue(dt.Rows[i][j].ToString() + "               ");

if (dt.Rows[i][j].ToString().Contains("www"))
                            {
                                cell.Row.Height = 4000;
                                
                                cp.AddPic(sheet, book, dt.Rows[i][j].ToString(), i+2, j);
                            }
                            
                        }
                        else
                        {
                            cell.SetCellValue("");
                        }

cell.CellStyle = styleBody;
                    }
                }
                //自适应列宽
                for (int x = 0; x < colCount; x++)
                {
                    sheet.AutoSizeColumn(x, true);
                }

//最后插入图片
                
                //设置宽高
              //  sheet.SetColumnWidth(4,2000);
                
                //此处代码是将 xls文件发到页面通过浏览器直接下载到本地  可以放到 界面调用的地方
                System.IO.MemoryStream ms = new System.IO.MemoryStream();
                book.Write(ms);
                //Response.AddHeader("Content-Disposition", string.Format("attachment; filename=ccc.xls"));
                Response.AddHeader("Content-Disposition", "attachment;filename=" + Server.UrlEncode(notile + ".xls"));//注意
                Response.BinaryWrite(ms.ToArray());
                book = null;
                ms.Close();
                ms.Dispose();

return true;
            }
            catch
            {
                throw new Exception();
            }
            finally
            {
                book = null;
            }

}

3.具体的引用

using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

3.封装成方法,使用NOPI插件导出Excel时候调用改方法即可

/// <summary>
        /// 封装方法,用于表格内渲染图片
        /// </summary>
        /// <param name="sheet"></param>
        /// <param name="workbook">工作簿</param>
        /// <param name="fileurl">图片地址</param>
        /// <param name="row">行</param>
        /// <param name="col">列</param>
        public void AddPic(ISheet sheet, HSSFWorkbook workbook, string fileurl, int row, int col)
        {
            byte[] bytes = System.IO.File.ReadAllBytes(fileurl);
            int picindex = workbook.AddPicture(bytes, NPOI.SS.UserModel.PictureType.JPEG);
            HSSFPatriarch patriarch = (HSSFPatriarch)sheet.CreateDrawingPatriarch();
            HSSFClientAnchor anchor = new HSSFClientAnchor(0,0,48,48,col,row,col+1,row+1);
            HSSFPicture pict = (HSSFPicture)patriarch.CreatePicture(anchor,picindex);
            
        }

文章为原创作品

C# 实现Excel导出图片相关推荐

  1. excel导出图片---HSSFWorkbook--SXSSFWorkbook

    目录 1 概述 2 HSSFWorkbook 2.1 导出要点 3 SXSSFWorkbook ​ 1 概述 平时在工作中,excel导出图片经常会用到,但奈何HSSFWorkbook导出数据数量有限 ...

  2. php excel 导出图片,phpexcel 导出多张图片

    phpexcel 导出图片 我在网上看了资料 都是导出一张图片,我想导出每行第一列是一个图片,如何实现,下边是一个导出的方法,我应该怎么加入哪?其他的数据都导出来了,就图片出不来,图片的路径信息保存到 ...

  3. excel导出图片方格居中

    参考文档 Java POI excel 操作之图片导出 - 掘金 (juejin.cn) POI精确设置Excel的行高和列宽 - dts - 博客园 (cnblogs.com) Apache POI ...

  4. java excel 导出图片_JAVA 使用 POI 导出 EXCEL 自定义背景颜色

    开发中常用表格导入和导出 Excel 是常见的功能. 在这里分享下使用 POI 导出表格的简单实现,也是为大家提供个思路吧,抛砖引玉,话不多说直接上代码. 1.项目引入 maven 依赖 <!- ...

  5. java实现excel导出图片

    public static void toLeadPicture(SXSSFWorkbook workbook, SXSSFSheet sheet, String fileUrl, int row, ...

  6. thinkphp3.2.3 excel导出,下载文件,包含图片

    关于导出后出错的问题 https://segmentfault.com/q/1010000005330214 https://blog.csdn.net/ohmygirl/article/detail ...

  7. Excel表格怎么批量导出图片将文件中的图片导出到文件夹中

    这几天一直没写博文,但是为了让大山的孩子,能够像京城的富二代一样,可以开开心心公公平平地享受学习excel的权利,因此决定今天继续写,今天主要来谈谈excel图片批量导出,关于excel表格怎么批量导 ...

  8. POI实现EXCEL导出(resources配置路径下或者网络图片)

    工作越来越忙了,很久没来更新了,刚好今天抽个小空,整理下excel导出图片的总结,希望对你有用~ 1.项目resources下创建文件夹file,将520.png图片放到文件夹下,代码如下: HSSF ...

  9. java导出highcharts_java实现highcharts导出图片至excel

    1. 目的 通过java后台实现将前端页面的highcharts图表导出至生成的excel文件中.使用于报表页面导出类功能. 2. 说明 前端页面将图表的svg信息字符串作为参数传递 后台使用bati ...

  10. php导出照片,Laravel使用 Laravel Excel文件导出图片功能

    Laracel 中可以使用Laravel Excel进行Excel或者PDF的导出,使用composer进行安装此差价,Laravel-Excel将PHPExcel进行封装. 其官方文档:http:/ ...

最新文章

  1. dataframe 拆分 分裂
  2. dvwa安装教程linux,Kali 2020.3安装docker和vulhub
  3. Zynq SOC学习笔记之设备树
  4. 女友刷B站流量告急,技术男友轻松搞定!
  5. 轻量又高效,Apache Shiro 你值得拥有!
  6. vue.js computedmethod
  7. 如何实现一个c/s模式的flv视频点播系统
  8. 8Linux磁盘划分、RAID
  9. python tkinter界面 控件位置随窗体自动调整适应_如何实现python tkinter控件随窗口变化?...
  10. SAP 采购订单入库——移动类型
  11. App推广及游戏推广,如何才能大规模起量
  12. 解决PyCharm安装tensorflow-cpu2.1.0导入失败问题
  13. 什么是java字符串_什么是java字符串
  14. JavaWeb实训项目:基于SSM框架的CRM客户关系管理系统(文章最后有源码)
  15. gerrit配置管理
  16. 计算机网络知识英语,计算机网络基础课程中英文简介.DOC
  17. 智能路灯控制器 智慧杆集控网关选型指南
  18. 聚观早报 |拼多多跨境电商业务正式登陆澳洲;中国加快6G网络研发
  19. vue项目启动时报error Expected linebreaks to be ‘LF‘ but found ‘CRLF‘ linebreak-style
  20. 计算机操作员绘图员,常用通用职业工种分类表.PDF

热门文章

  1. 微信支付功能测试用例
  2. 想改行,学什么技术能看到未来?
  3. 【mysql】文本字符串类型
  4. 使用pr给视频局部打马赛克
  5. 集线器与交换机的区别
  6. 【Love2d从青铜到王者】第九篇:Love2d之库(library)
  7. 光纤传输技术——光器件(三)
  8. u盘插电脑显示跟这台计算机,五大步骤解决U盘插入电脑盘符不显示问题
  9. c语言中感叹号什么意思_啥是c语言-c语言感叹号用法-c语言中的/和%表示什么意思...
  10. DNS的作用是什么?为什么一定要配置DNS才能上网