NPOI导出Excel表格带图片

发布时间 2023-06-16 18:30:08作者: WantRemake
 if (info.ApplyImg.IsNotNullOrEmpty())
            {
                // 添加图片
                HSSFWorkbook hwb = new HSSFWorkbook();
                HSSFSheet sheet = (HSSFSheet)hwb.CreateSheet("房产维修申请单");
                byte[] bytes = GetImageBuffer(info.ApplyImg);
                int pictureIdx = hwb.AddPicture(bytes, PictureType.JPEG);
                var patriarch = sheet.CreateDrawingPatriarch();
                HSSFClientAnchor anchor = new HSSFClientAnchor(255, 255, 255, 255, 1, 2, 8, 4);
                //把图片插到相应的位置
                HSSFPicture pict = (HSSFPicture)patriarch.CreatePicture(anchor, pictureIdx);
            }

            private byte[] GetImageBuffer(string path)
            {
                return File.ReadAllBytes(Server.MapPath(path));
            }

 

HSSFClientAnchor 参数说明

 

pache POI  是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能。

HSSFClientAnchor用于创建一个新的端锚,并设置锚的左下和右下坐标,用于图片插入,画线等操作。

 

HSSFClientAnchor(int dx1, int dy1, int dx2, int dy2, short col1, int row1, short col2, int row2)

dx1 dy1 起始单元格中的x,y坐标.

dx2 dy2 结束单元格中的x,y坐标

col1,row1 指定起始的单元格,下标从0开始

col2,row2 指定结束的单元格 ,下标从0开始

 

 

 

注意

        1、一个是行和列的索引(从0开始的)

        2、行高和列宽的单位(行高,默认255点,12.5,列宽 2048,8个字符。)

        3、 HSSFRow.Height和HeightInPoints,这两个属性的区别在于HeightInPoints的单位是点,而Height的单位是1/20个点,所以Height的值永远是HeightInPoints的20倍)

        4、 下面设置列宽 SetColumnWidth的第二个参数要乘以256,这个参数的单位是1/256个字符宽度,也就是说,这里是把1列的宽度设置为了100个字符。

 

         HSSFWorkbook hssfworkbook = new HSSFWorkbook(); HSSFSheet sheet1 = hssfworkbook.CreateSheet("Sheet1");

         设置列宽

         sheet1.SetColumnWidth(1, 100 * 256);

         获取行高

         int col1width = sheet1.GetColumnWidth(1);
       

        设置第一行的高度

       sheet1.CreateRow(0).Height = 200*20; 

        或者

       sheet1.CreateRow(0).HeightInPoints = 200;

       获得行高

        HSSFRow.Height属性的返回值。

       一行一行设置行高或者一列一列设置列宽很麻烦,那你可以考虑使用HSSFSheet.DefaultColumnWidth、HSSFSheet.DefaultRowHeight和HSSFSheet.DefaultRowHeightInPoints属性。

       一旦设置了这些属性,如果某一行或者某一列没有设置宽度,就会使用默认宽度或高度。代码如下:

       默认设置

       sheet1.DefaultColumnWidth=100*256;

       sheet1.DefaultRowHeight=30*20;

原文链接:http://www.bubuko.com/infodetail-2310009.html