excel 插入图片 NPOI

转载:

http://www.cnblogs.com/wei325/p/4748324.html

//创建一个工作簿
        HSSFWorkbook workbook = new HSSFWorkbook();
        //创建一个sheet
        ISheet sheet1 = workbook.CreateSheet("sheet1");
        // 设置列宽,excel列宽每个像素是1/256
        sheet1.SetColumnWidth(0, 18 * 256);
        sheet1.SetColumnWidth(1, 18 * 256);
        IRow rowHeader = sheet1.CreateRow(0);//创建表头行
        rowHeader.CreateCell(0, CellType.STRING).SetCellValue("生产单号");
        rowHeader.CreateCell(1, CellType.STRING).SetCellValue("图片");
        DataTable dt = sqlhelperPro.seachData("SELECT top 3 PRODID,KTL_PIC FROM Long_tmpPIC");
        if (dt.Rows.Count > 0)
        {
            int rowline = 1;//从第二行开始(索引从0开始)
            foreach (DataRow datarow in dt.Rows)
            {
                IRow row = sheet1.CreateRow(rowline);
                //设置行高 ,excel行高度每个像素点是1/20
                row.Height = 80 * 20;
                  //填入生产单号
                row.CreateCell(0, CellType.STRING).SetCellValue(datarow["PRODID"].ToString());
                  //将图片文件读入一个字符串
               byte[] bytes = System.IO.File.ReadAllBytes(datarow["KTL_PIC"].ToString());
               int pictureIdx=workbook.AddPicture(bytes,PictureType.JPEG);
             HSSFPatriarch patriarch = (HSSFPatriarch)sheet1.CreateDrawingPatriarch();
            // 插图片的位置  HSSFClientAnchor(dx1,dy1,dx2,dy2,col1,row1,col2,row2) 后面再作解释
             HSSFClientAnchor anchor = new HSSFClientAnchor(70, 10,0,0, 1,rowline, 2, rowline +1);
            //把图片插到相应的位置
             HSSFPicture pict = (HSSFPicture)patriarch.CreatePicture(anchor, pictureIdx);
                rowline++;
            }
        }
          //把文件保存到d:\aaa.xls,注意扩展名是.xls不要写成.xlsx
         using (Stream stream = File.OpenWrite("d:\aaa.xls"))
        {
            workbook.Write(stream);
        }
//如果要操作.xlsx的excel,引入命名空间  using NPOI.XSSF.UserModel;
// 然后把所有的HSS改为XSS(比喻HSSWorkbook->XSSWorkbook)

  

参数的解析: HSSFClientAnchor(int dx1,int dy1,int dx2,int dy2,int col1,int row1,int col2,int row2)

dx1:图片左边相对excel格的位置(x偏移) 范围值为:0~1023;即输100 偏移的位置大概是相对于整个单元格的宽度的100除以1023大概是10分之一

dy1:图片上方相对excel格的位置(y偏移) 范围值为:0~256 原理同上。

dx2:图片右边相对excel格的位置(x偏移) 范围值为:0~1023; 原理同上。

dy2:图片下方相对excel格的位置(y偏移) 范围值为:0~256 原理同上。

col1和row1 :图片左上角的位置,以excel单元格为参考,比喻这两个值为(1,1),那么图片左上角的位置就是excel表(1,1)单元格的右下角的点(A,1)右下角的点。

col2和row2:图片右下角的位置,以excel单元格为参考,比喻这两个值为(2,2),那么图片右下角的位置就是excel表(2,2)单元格的右下角的点(B,2)右下角的点。

时间: 2024-08-29 18:24:16

excel 插入图片 NPOI的相关文章

Excel催化剂开源第40波-Excel插入图片做到极致的效果

不知道是开发人员的自我要求不高还是用户的使用宽容度足够大,在众多Excel插入图片的版本中,都没有考虑到许多的可大幅度提升用户体验的细节处理. Excel催化剂虽然开发水平有限,但也在有限的能力下,尽最大的努力做到自己可以过关的出街成品. 此篇着重谈下思路性的问题,代码因为太久远之前写的,现在看回也是一坨坨的,真需要时可能重新写一轮更方便. Excel插入图片的细节追求 可能在之前的文章中,也偶尔做了一些分享,自己也不太记得分享过哪些了,这里再重新梳理下,有重复提及的部分就权当复习好了. 一.插

Java Excel 插入图片

在POI中有HSSFPatriarch对象,该对象为画图的顶级管理器,它的createPicture(anchor, pictureIndex)方法就能够在Excel插入一张图片.所以要在Excel中插入图片,三步就可以搞定. 一.获取HSSFPatriarch对象, 二.new HSSFClientAnchor对象, 三.调用createPicture方法即可. 实现倒是非常容易实现,如果想把它做好还是有点儿难度的.这里我们先插入一张图片: public class ExcelImageTes

2.4.5 用NPOI操作EXCEL--插入图片

我们知道,在Excel中是可以插入图片的.操作菜单是“插入->图片”,然后选择要插入图片,可以很容易地在Excel插入图片.同样,在NPOI中,利用代码也可以实现同样的效果.在NPOI中插入图片的方法与画图的方法有点类似: //add picture data to this workbook.byte[] bytes = System.IO.File.ReadAllBytes(@"D:\MyProject\NPOIDemo\ShapeImage\image1.jpg");int

npoi导出excel(模板)插入图片,文本只读,不可以修改

NPOI下载地址:http://npoi.codeplex.com/ VPurchaseOrder purchaseOrder = PurchaseDataAccess.GetPurchaseOrder(PurchaseOrderId); HSSFWorkbook hssfworkbookDown; string modelExlPath = Server.MapPath(@"\b2c\download\供应商采购单模板.xls"); FileStream file = new Fil

NPOI 导出excel带图片,可控大小

using NPOI.HSSF.UserModel;using NPOI.HSSF.Util;using NPOI.DDF;using NPOI.SS.UserModel;using System.IO;using NPOI.SS;  #region 导出        protected void btnexcel_Click(object sender, EventArgs e)        {            QQT_BLL.gg_content bll = new QQT_BLL

java POI实现向Excel中插入图片

java POI实现向Excel中插入图片 标签: javapoiexcel 2014-03-05 08:59 9103人阅读 评论(4) 收藏 举报  分类: [JAVA开发]-----JavaScore(34)  版权声明:本文为博主原创文章,未经博主允许不得转载. 做Web开发免不了要与Excel打交道.今天老大给我一个任务-导出Excel.开始想的还是蛮简单的,无非就是查找,构建Excel,response下载即可.但是有一点不同,就是要加入图片,就是这个加入图片搞了好久.同时网络上确实

【excel技巧读书笔记002】批注插入图片表格

               今天看到学到一个excel小技巧,批注插入图片表格,觉得挺好分享给大家.

c#在Excel指定单元格中插入图片

方法一: /// 将图片插入到指定的单元格位置,并设置图片的宽度和高度./// 注意:图片必须是绝对物理路径/// </summary>/// <param name="RangeName">单元格名称,例如:B4</param>/// <param name="PicturePath">要插入图片的绝对路径.</param>public void InsertPicture(string RangeNam

POI插入图片至Excel使用固定的长宽

使用POI在Excel里插入图片,如何使插入的图片使用固定的大小?先介绍原有的两种方式: 一种是指定开始和结尾单元格,然后从头画到尾,相当于平铺 还有一种就是仅指定开始的单元格,图片的大小跟这个单元格的长宽有关,可以放大缩小固定的倍数,相当于左对齐 第一种效果如下: 第二种效果如下: 第一种方法的关键代码如下: 1 private void pictureToSheet(Sheet finalSheet, Row row, Cell cell, int pictureIdx) { 2 Drawi